运行了一段时间以后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. 详解Web应用安全系列(2)注入漏洞之XSS攻击

    上一篇介绍了SQL注入漏洞,今天我们来介绍另一个注入漏洞,即XSS跨站脚本攻击.XSS 全称(Cross Site Scripting) 跨站脚本攻击, 是Web应用中常见的漏洞.指攻击者在网页中嵌入 ...

  2. Linux进程退出:SIGINT、SIGTERM 和 SIGKILL 有关信号 区别

    背景 学习 海思SDK,查看例程的时候发现了类似下面的代码: int main(int argc, char *argv[]) { if(argc != 2) { printf("Usage ...

  3. Legacy (线段树优化建图)

    题目链接:Legacy - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题解: 考虑题目中一个点向区间连边,如真的对区间中的每一点分别连边后跑最短路,时间空间都要炸. 因为是一个点向 ...

  4. Python 引用不确定的函数

    在Python中,引用不确定的函数通常意味着我们可能在运行时才知道要调用哪个函数,或者我们可能想根据某些条件动态地选择不同的函数来执行.这种灵活性在处理多种不同逻辑或根据不同输入参数执行不同操作的场景 ...

  5. power bi柱形图如何设置高亮自动显示

    通过度量值,将需要高亮的数据颜色设置为明显高亮于背景的颜色,将不需要设置为高亮的颜色设置为稍深于背景的颜色, 效果如下:

  6. redis 乱码:\xac\xed\x00\x05t\x00\x02

    前言 学习 spring-boot 的 redis 相关部分,测试时,发现 使用redisTemplate.opsForValue().set("name","tst&q ...

  7. Win10 下安装使用easyocr图片识别工具

    [前言] 最近在做图像识别相关的工作,找到了一个名为EasyOCR的pythoh 库. 使用过程中出现了一些问题,现做简单记录. [正文] 1. 安装EasyOCR 我用了最简单的方法:pip3 in ...

  8. SpringSecurity安全管理

    SpringSecurity安全管理 一.安全简介 在 Web 开发中,安全一直是非常重要的一个方面,因此从应用开发的第一天就应该把安全相关的因素考虑进来,并在整个应用的开发过程中. 主要安全框架:S ...

  9. LRZ

    1.在平面直角坐标系中,已知点 \(A(-2,2).B(3,4).C(0,1)\),直线 \(y=kx+b\) 过点 \(C\) 且与线段 \(AB\) 有交点,则 \(k\) 的取值范围是_____ ...

  10. CSP2023-J/S 游记

    本人 初二 \(\texttt{HA}\) CSP2023 成绩: CSP-J 第一轮:\(86.5\) CSP-S 第一轮:\(41.5\) CSP-J 第二轮:\(100+100+100+0=30 ...