运行了一段时间以后MGR集群,需要扩容节点,这是一个常见的需求。很多时候我们都喜欢用mysqldump工具来进行,因为这个工具有一个很好用的参数叫做master-data以及single-transaction,可以轻松的获取一致性备份。但是这个备份工具速度慢,无论导入导出速度都很慢,对于一个运行已久的系统来说并不现实,而且导出的文件会很大。

对此我们可以利用xtrabackup工具来进行集群的扩容。

首先我们对primary节点进行一次全量备份,这是备份脚本(假设新节点的域名叫做node-new,且ssh互信已完成):

#!/bin/bash

lsn_dir=/root/script/full
dest_dir=/tmp/full # 删除原先的备份信息
rm -rf ${lsn_dir}/*
ssh root@node_new "rm -rf ${dest_dir/*}" # 利用流式备份完成全量备份
xtrabackup --backup \
--user=bkpuser \
--password=P@ssw0rd! \
--socket=/usr/local/mysql/mysql.sock \
--extra-lsndir=${lsn_dir} \
--stream=xbstream \
--compress | ssh root@node-new "xbstream -x -C /tmp/full"

这个脚本执行完成之后,备份集就会在目标节点的/tmp/full目录下了。此时新节点上的datadir应该是空的,保证备份能够正常恢复。

此时执行这些命令进行还原:

# 备份是压缩的,要用qpress解压,确认qpress在本机的/usr/bin目录下
innobackupex --decompress /tmp/full # 准备备份集
xtrabackup --prepare --apply-log-only --target-dir=/tmp/full # 复制备份集到数据目录
xtrabackup --copy-back --target-dir=/tmp/full # 启动mysql
chown -R mysql.mysql /usr/local/mysql/data
systemctl start mysqld

备份集中有一个文件叫做xtrabackup_info,里面有一个项目叫做binlog_pos,注意这项,记录下里面的GTID。

正常启动MySQL之后,就可以开始进行一些配置:

set sql_log_bin=0;
reset master;
set global gtid_purged='刚才记录下的GTID';
start group_replication;

方法比较简单,总结下来最重要的一点就是要获得一致性备份,利用这个一致性备份快速的部署一台节点。

在有的资料上还会提及要在新节点上执行change master语句,其实是不需要的,因为我们之前的步骤中已经手动指定了gtid_purged,只需要在这个GTID之后开启复制即可。

本文参考了下面链接中的思路:

如何优雅地添加MGR节点

利用XtraBackup对MGR集群进行扩容的更多相关文章

  1. 利用MySQL Router构建读写分离MGR集群

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 目录 1. 部署MySQL Router 2. 启动mysqlrouter服务 3. 确认读写分离效果 4. 确认只读负载 ...

  2. 4. 利用MySQL Shell安装部署MGR集群 | 深入浅出MGR

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 目录 1. 安装准备 2. 利用MySQL Shell构建MGR集群 3. MySQL Shell接管现存的MGR集群 4 ...

  3. 有事务冲突时节点怎么加入MGR集群

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 目录 1. 问题场景描述 2. 如何修复 2.1 找出事务差异点 2.2 决定如何处理 3. 小结 文章推荐: 关于 Gr ...

  4. 3. 安装部署MGR集群 | 深入浅出MGR

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 目录 1. 安装准备 2. 初始化MySQL Server 3. 初始化MGR第一个节点 4. 继续设置另外两个节点 5. ...

  5. ​在Docker中部署GreatSQL并构建MGR集群

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 为了方面社区用户体验GreatSQL,我们同时还提供Docker镜像,本文详细介绍如何在Docker中部署GreatSQL ...

  6. 多云部署多主模式的MGR集群,每个云一个MGR 节点,满足业务单元化改造的需求

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 本 ...

  7. mysql 的mgr集群

    mysql 的mgr集群 http://wubx.net/mgr%E7%9B%91%E6%8E%A7%E5%8F%8A%E4%BC%98%E5%8C%96%E7%82%B9/ MGR调优参数因为基本复 ...

  8. laravel项目利用twemproxy部署redis集群的完整步骤

    Twemproxy是一个代理服务器,可以通过它减少Memcached或Redis服务器所打开的连接数.下面这篇文章主要给大家介绍了关于laravel项目利用twemproxy部署redis集群的相关资 ...

  9. Elasticsearch集群如何扩容机器?

    前提, Elasticsearch-2.4.3的3节点安装(多种方式图文详解)   比如,你已经成功搭建了3台机器的es集群,如我这里分别是192.168.80.10.192.168.80.11.19 ...

  10. MySQL MGR集群搭建

    本文来自网易云社区,转载务必请注明出处. 本文将从零开始搭建一个MySQL Group Replication集群,包含3个节点.简单介绍如何查询MGR集群状态信息.并介绍如何进行MGR节点上下线操作 ...

随机推荐

  1. UICollectionView滑动流畅性优化

    UICollectionView滑动流畅性优化 前言 初始的collection view在滑动时都是十分流畅的,然而因为collection view cell 加载更多的内容时因为主线程耗用太多性 ...

  2. mac brew install Error: No available formula with the name “*“的解决办法

    背景 在mac上使用brew安装软件发生错误 解决办法 执行以下命令即可 rm -rf /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core ...

  3. 【动手学深度学习】第三章笔记:线性回归、SoftMax 回归、交叉熵损失

    这章感觉没什么需要特别记住的东西,感觉忘了回来翻一翻代码就好. 3.1 线性回归 3.1.1 线性回归的基本元素 1. 线性模型 \(\boldsymbol{x}^{(i)}\) 是一个列向量,表示第 ...

  4. 实验5.OSPF配置实验

    # 实验5.OSPF配置实验 配置ospf使全网联通 实验组 拓扑,路由器选择为AR2220,交换机为S5700 联通配置 给每台路由器的对应端口配置相应的ip,并启动ospf协议,可以看到此时5台设 ...

  5. Nuxt3 的生命周期和钩子函数(四)

    title: Nuxt3 的生命周期和钩子函数(四) date: 2024/6/28 updated: 2024/6/28 author: cmdragon excerpt: 概述了Nuxt3的六个关 ...

  6. 【论文阅读】ICRA2021: VDB-EDT An Efficient Euclidean Distance Transform Algorithm Based on VDB Data Struct

    参考与前言 Summary: 浩哥推荐的一篇 无人机下的建图 and planning实验 Type: ICRA Year: 2021 论文链接:https://arxiv.org/abs/2105. ...

  7. 嵌入式ARM端测试手册——全志T3+Logos FPGA开发板(上)

    前 言 本指导文档适用开发环境: Windows开发环境:Windows 7 64bit.Windows 10 64bit Linux开发环境:Ubuntu18.04.4 64bit 虚拟机:VMwa ...

  8. unity中Shader实现地形中根据实际高度绘制等高线,剖切功能,颜色渐变等功能

    问题背景 在做地形模块时,需要根据实际地形高度画出世界相应的等高线,以及根据高度做颜色渐变,以及剖切功能. 解决方法 通过像素点在世界坐标系下的真实高度值来判断计算绘制等高线,剖切功能以及颜色渐变均有 ...

  9. Kafka消费端抛出异常Offset commit cannot be completed since the consumer is not part of an active group for auto partition assignment; it is likely that the consumer was kicked out of the group的解决方案

    总结/朱季谦 在一次测试Kafka通过consumer.subscribe()指定偏移量Offset消费过程中,因为设置参数不当,出现了一个异常提示-- [2024-01-04 16:06:32.55 ...

  10. PowerBuilder编程新思维6:装饰(用最简单的方式做框架)

    To be, or not to be - that is the question. PowerBuilder编程新思维6:装饰(用最简单的方式做框架) 问题 这一章,是写得最艰难的一章,原因有四: ...