MySQL利用xtrabackup在线修复或新增从库
如果数据库的数据量很大,表大小有几十个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,说明主从配置成功