• 利用XtraBackup对MGR集群进行扩容


    运行了一段时间以后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节点

  • 相关阅读:
    mac redis 安装及基本设置 python操作redis
    mac webstorm自动编译typescript配置
    MySQL数据库的基本操作
    python 面试基础考试题收集
    pyhon 列表的增删改查
    python 文件读取方法详解
    MAC下绕开百度网盘限速下载的方法,三步操作永久生效
    浏览器窗口输入网址后发生的一段事情(http完整请求)
    CMDB
    django适当进阶篇
  • 原文地址:https://www.cnblogs.com/wingsless/p/13202459.html
Copyright © 2020-2023  润新知