13
2025
03
21:10:50

使用XtraBackup工具实现MySQL不停机开启主从同步

概述

业务系统上线后,如果前期没有部署主从数据库,现在需要新增从数据库的话,一般需要先停止主数据库,然后将数据备份还原至从数据库,最后再配置主从。但这样就导致业务系统必须停机,对线上业务造成影响。
之前的文章《使用XtraBackup工具物理备份MySQL数据库》实现了对MySQL的热备份,《MySQL8配置主从同步(同步所有库)》实现了MySQL的主从同步。那么只需要结合一下,就可以实现开启MySQL的不停机主从同步。

原理

使用XtraBackup对主库进行物理备份,将备份文件拷贝至从数据库,在从数据库还原备份。还原后开启主从设置。主要注意的是:开启主从设置时需要设置master_log_filemaster_log_pos这两个参数,这两个参数不能在主库中执行show master status命令来查,这样会丢失数据,因为你在备份还原的过程中,主库可能也产生了新的数据。show master status命令查询这种方式只适合于停机状态下。
XtraBackup工具在备份时,记录了备份时主库的日志位置,只需要在备份中查看xtrabackup_binlog_info文件,然后将文件中记录的日志信息填写到master_log_filemaster_log_pos,这样才能保证主从数据的一致。

实战

准备工作

1.从库安装一个全新的MySQL数据库,确保从库的MySQL的大版本与主库的一致(例如主库是8.0.x,那么从库也是8.0开头的版本)。
2.在主库和从库的服务器上都先安装好XtraBackup工具,安装方法可以查看之前的文章《使用XtraBackup工具物理备份MySQL数据库

备份主库

xtrabackup --backup --user=backup --password=yourpassword --target-dir=/home/backup/

执行以上命令将数据库备份至/home/backup/目录。

拷贝备份文件至从库服务器

将主库上的/home/backup/目录中的内容拷贝至从库的/home/backup/目录。

在从库上还原

还原前停止从库上MySQL服务并清空从库上的data文件夹。
依次执行以下命令进行还原:

xtrabackup --prepare --target-dir=/home/backup/
xtrabackup --copy-back --target-dir=/home/backup/

修改data目录权限

chown -R mysql:mysql /www/server/data

如果你的data目录不是在/www/server/data,那么需要自行更改。

配置从库

在从库的mysql配置文件my.cnf中添加或修改如下参数:
注意server-id不能与主库相同

  1. [mysqld]

  2. log-bin=mysql-bin

  3. binlog_format=mixed

  4. server-id=2

  5. replicate-ignore-db=mysql,sys,performance_schema,information_schema

  6. log-slave-updates

  7. slave-skip-errors=all

启动从库MySQL服务

systemctl start mysql.service

配置同步

配置同步账号

在主库中添加用于读取主库日志的账号:

  1. SET SQL_LOG_BIN=0;

  2. CREATE USER slaveuser@'%' IDENTIFIED WITH mysql_native_password BY 'password';

  3. grant replication slave on *.* to slaveuser@'%';

  4. flush privileges;

  5. SET SQL_LOG_BIN=1;

设置还原点

登录从库服务器,查看备份时的还原点信息:

cat /home/backup/xtrabackup_binlog_info

登录从库MySQL,配置同步:

  1. stop slave;

  2. change master to master_host='主库的IP',master_port=3306,master_user='slaveuser',master_password='password',master_log_file='mysql-bin.000005', master_log_pos=753117;

  3. start slave;

master_log_file及master_log_pos的信息从/home/backup/xtrabackup_binlog_info中获取。

查看同步状态

登录从库执行以下语句:

show slave status

如果Slave_IO_RunningSlave_SQL_Running的值都是Yes,说明配置成功。

参考

https://docs.percona.com/percona-xtrabackup/8.0/howtos/setting_up_replication.html




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://sg.hqyman.cn/post/9578.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: