运行了一段时间以后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. 【VMware vSphere】使用RVTools中的PowerShell脚本创建导出vSphere环境信息的自动化任务。

    RVTools 是 VMware 生态系统中一个非常受欢迎且免费的 Windows 实用工具,用于收集并显示 VMware vSphere 环境中的相关信息,如虚拟机.主机及集群等相关配置.RVToo ...

  2. 网络OSI七层模型及各层作用 tcp-ip

    背景 虽然说以前学习计算机网络的时候,学过了,但为了更好地学习一些物联网协议(MQTT.CoAP.LWM2M.OPC),需要重新复习一下. OSI七层模型 七层模型,亦称OSI(Open System ...

  3. 2.上传hdfs系统:将logs目录下的日志文件每隔十分钟上传一次 要求:上传后的文件名修为:2017111513xx.log_copy

    先在hdfs系统创建文件夹logshadoop fs -mkdir /logs 编辑shell脚本 filemv.sh #!/bin/bashPATH=/usr/local/bin:/bin:/usr ...

  4. 移动WEB开发之 -- 流式布局

    浏览器现状 视口 视口标签 二倍图 手机端和pc端像素比例不一样 物理像素&物理像素比 背景缩放background-size 背景图片二倍图 移动端开发选择 移动端技术解决方案 特殊样式 常 ...

  5. linux 查看端口状态

    查看端口 netstat -tlun 查看端口被那个服务占用 netstat -tunlp |grep 8080

  6. 高程读后感(三)— JS对象实现继承的6种模式及其优缺点

    目录 1.原型链 1.1.默认的原型 1.2.原型和实例的关系 1.3.原型链的问题 2.借用构造函数 2.1.传递参数 2.2.借用构造函数的问题 3.组合继承 4.原型式继承 5.寄生式继承 6. ...

  7. oeasy教您玩转vim - 68 - # 标签页tab

    ​ tab选项卡 回忆上次 上次有三种批量替换,分别是 :windo :bufdo :argdo 执行的{cmd}可以用|按顺序增加 分别对应的 windows 窗口 buffers 缓存文件 arg ...

  8. 使用Cloudflare Worker加速docker镜像

    前言 开发者越来越难了,现在国内的docker镜像也都️了,没有镜像要使用docker太难了,代理又很慢 现在就只剩下自建镜像的办法了 GitHub上有开源项目可以快速搭建自己的镜像库,不过还是有点麻 ...

  9. Python项目批量管理第三方包(requirements.txt)

    python项目中必须包含一个 requirements.txt 文件,用于记录所有依赖包及其精确的版本号,以便新环境部署. requirements.txt可以通过pip命令自动生成和安装 生成re ...

  10. RHCA rh442 008 oom 故障触发器 内存溢出 swap numa tmpfs shm

    OOM out-of-memory killer 进程被莫名其妙杀死 所有内存加swap为活动 zone_normal 没空间 (目前64G时代可以不考虑这个) 溢出就死机 内存溢出前,去杀死进程 因 ...