mysql数据库托从
问题
线上数据库从库与主库的数据量差距很大,导致从库的数据无法追上主库,现在需要重新在一个正常的从库上拖出一份数据,重新搭建主从架构(初步怀疑导致主从数据差异过大的原因为磁盘性能低导致)
解决方案
操作时间:业务低峰期,23:30 准备:一个正常可以使用的从库,将上面的数据全部备份。找一台已经故障的从库,将数据目录全部清理,新买一块固态盘作为新的数据盘(由于数据量过大,强烈建议使用固态盘)
-
安装数据库备份工具,因为数据库中的数据量达到270G在使用传统的备份工具mysqldump备份,时间耗费比较长,综合考虑,我们选择比较熟悉的第三方工具xtrabackup进行备份恢复
yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/redhat/6/x86_64/percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm
yum localinstall -y percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm - 配置两台机器间无秘钥登陆认证
- 停止要备份数据库的主从关系(主要注意当前主从binlog及pos信息,以备恢复是使用)
- 开始备份数据库(下面命令中,需要安装pv工具)
innobackupex --defaults-file=/data/3316/my.cnf --user=root --password=mysql422805 --host=10.9.180.188 --port=3316 --stream=tar /mnt/backup/backup_mysql 2>>/tmp/mysqlback.log |pv | ssh -p 58022 -c aes192-cbc -o 'MACs umac-64@openssh.com' root@10.9.90.55 "cat - > /mysql_slave_data/mysql3306/dx_`date +%F_%H_%M_%S`.tar”
- 进行数据库恢复
将备份的数据进行解压
合并xtrabackup_log_file和备份的物理文件
innobackupex --defaults-file=./my.cnf --apply-log --use-memory=10G ./
修改mysql配置文件
启动数据库
配置主从关系
CHANGE MASTER TO MASTER_HOST='10.9.142.206', MASTER_USER='meishi',MASTER_PASSWORD='meishi',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.002198',MASTER_LOG_POS=796951609;
查看数据是否正常
进行参数调优,开启多线程
show global variables like 'slave_parallel_workers';
set global slave_parallel_workers=8; - 等待从库追赶差异数据,确认数据库托从成功。