zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

MySQL利用xtrabackup在线修复或新增从库

mysql 修复 利用 在线 新增 从库 xtrabackup
2023-09-11 14:19:24 时间

如果数据库的数据量很大,表大小有几十个G,利用mysqldump导出备份会消耗非常长的时间,会对数据库产生不稳定风险,这时可以利用xtrabackup工具在线复制主库文件,利用复制出来的主库文件可以修复从库故障或新增从库实例

主库IP:192.168.1.1
从库IP:192.168.1.2

主库和从库服务器都需要安装以下环境
安装必须的依赖环境
yum install libssl.so.6 -y
ln -sf /usr/lib64/libssl.so.10 /usr/lib64/libssl.so.6
ln -sf /usr/lib64/libcrypto.so.10 /usr/lib64/libcrypto.so.6

使用rpm包安装需要安装较多的依赖包,如果是在线上的生产系统操作,会对业务产生风险,因此我们使用源码包操作
下载源码包
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.5/binary/tarball/percona-xtrabackup-2.4.5-Linux-x86_64.tar.gz
tar xvf percona-xtrabackup-2.4.5-Linux-x86_64.tar.gz
mv percona-xtrabackup-2.4.5-Linux-x86_64 /usr/local/xtrabackup

一、以下命令在主库服务器上操作
1.复制主库
/usr/local/xtrabackup/bin/innobackupex --host=127.0.0.1 --user=root --password=123456 --port=3306 --slave-info --no-timestamp /data/backup/
复制的文件会存储在/data/backup/目录下

2.同步复制文件到从库服务器
scp -r /data/backup/ 192.168.1.2:/data/backup/

二、以下命令在从库服务器上操作
1.清空旧的同步信息
mysql -h192.168.1.2 -uroot -p123456
mysql> stop slave;
mysql> reset slave;

2.删掉mysql原来的datadir目录
/etc/init.d/mysql stop
cd /data/mysql
mv data data_bak

3.恢复主库复制的备份
cd /data/backup/
/usr/local/xtrabackup/bin/innobackupex --apply-log ./
/usr/local/xtrabackup/bin/innobackupex --copy-back ./

4.开启mysql服务
chown -R mysql.mysql /data/mysql/data
/etc/init.d/mysql start

5.查看主库复制时的日志点
cat xtrabackup_binlog_info
mysql-bin.000015   59245449

6.创建新的同步信息,从复制时的日志点开始同步
mysql -h192.168.1.2 -uroot -p123456
mysql> change master to master_host='192.168.1.1',
master_user='root',
master_password='123456',
master_log_file='mysql-bin.000015',
master_log_pos=59245449;

mysql> start slave;

mysql> show slave status\G;

如果看到IO和SQL线程均为YES,说明主从配置成功