mysql数据库托从

问题

线上数据库从库与主库的数据量差距很大,导致从库的数据无法追上主库,现在需要重新在一个正常的从库上拖出一份数据,重新搭建主从架构(初步怀疑导致主从数据差异过大的原因为磁盘性能低导致)

解决方案

操作时间:业务低峰期,23:30 准备:一个正常可以使用的从库,将上面的数据全部备份。找一台已经故障的从库,将数据目录全部清理,新买一块固态盘作为新的数据盘(由于数据量过大,强烈建议使用固态盘)

  1. 安装数据库备份工具,因为数据库中的数据量达到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

  2. 配置两台机器间无秘钥登陆认证
  3. 停止要备份数据库的主从关系(主要注意当前主从binlog及pos信息,以备恢复是使用)
  4. 开始备份数据库(下面命令中,需要安装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.comroot@10.9.90.55 "cat - > /mysql_slave_data/mysql3306/dx_`date +%F_%H_%M_%S`.tar”

  5. 进行数据库恢复
    将备份的数据进行解压
    合并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;

  6. 等待从库追赶差异数据,确认数据库托从成功。
posted @ 2019-09-19 16:20  巴黎斜塔  阅读(157)  评论(0编辑  收藏  举报