zoukankan      html  css  js  c++  java
  • XtraBackup做mysql主从同步

    一、背景:

    线上一个主库压力比较大,所以增加一个从库,但是不能重启或者停止主库的正常运行,不能锁库锁表影响业务的正常运行。所以这里想到了XtraBackup

    二、XtraBackup介绍:

    Xtrabackup的优点:
    1、备份完成快速、可靠
    2、备份期间不间断的事务处理
    3、节省磁盘空间和网络带宽
    4、自动备份验证
    5、提高正常运行时间由于更快的恢复时间
    备份INNODB引擎的数据库不会锁库锁表,但是备份MyISAM的表还是会锁的,还支持增量备份。
    官方地址:

    三、环境说明

    系统版本:CentOS Linux release 7.0.1406 (Core) 
    内核版本:3.10.0-123.9.3.el7.x86_64
    ​mysql版本:5.6.26

    四、安装XtraBackup

    安装在主库上
    建议大家使用rpm方式安装,网上很多文档都是编译安装,编译安装费时费力,我这次做主从刚开始使用编译安装,发现编译时服务器资源被耗尽都无法ssh,导致服务器无法处理请求。所以最后选择了rpm方式安装,这种方式安装非常快。
    # yum install perl-Time-HiRes
    # yum install perl-DBD-MySQL -y
    #  yum install perl-Digest-MD5 -y
    # wget https://www.percona.com/downloads/XtraBackup/XtraBackup-2.2.9/binary/redhat/7/x86_64/percona-xtrabackup-2.2.9-5067.el7.x86_64.rpm
    
    # rpm -ivh percona-xtrabackup-2.2.9-5067.el7.x86_64.rpm

    五、主库主从配置

    1.主库配置/etc/my.cnf

    增加server-id 和 bin-log
    # vim /etc/my.cnf
    server-id = 128
    log-bin = mysql-bin  

    2.主库配置授权账号

    mysql> grant replication slave on *.* to rep@'192.168.199.183' identified by '123';
    mysql> flush privileges; 

    3.手动设置主库server-id和log-bin 参数

    set global server_id=128
    因为这两个参数是动态参数,不用重启主库也可以生效
    如果你的主库已经设置这两个参数,请忽略这一步操作

    六、从库主从配置

    从库安装步骤略

    1.从库配置/etc/my.cnf

    增加server-id 和 bin-log
    # vim /etc/my.cnf
    server-id = 129
    #如果需要在从库上做bin-log备份可以添加如下参数
    log-bin = mysql-bin   
    log-slave-updates = 1   
    expire-logs-days=10

    七、备份主库数据

    1.主库机器上创建备份目录

    # mkdir -p /backup/full_data

    2.执行全库备份

    2.1.备份

    # innobackupex --defaults-file=/etc/my.cnf --user=root --password=123    --socket=/tmp/mysql.sock    /data/backup/full_data
    PS:备份完成后,会在/backup/full_data/目录下生成一个时间点的目录,这里是2016-07-14_05-19-52。你也可以加一个--no-timestamp参数不产生这个目录,直接备份到/backup/full_data/目录下

    2.2.重放redo log

    #下面preparing,undo撤销未提交的事务,重放redo log
    # innobackupex  --defaults-file=/etc/my.cnf  --user=root    --password=123  --apply-log   --socket=/tmp/mysql.sock   /data/backup/full_data/2016-07-14_05-19-52

    ps:1、ls -l  /data/backup/full_data/2016-07-14_05-19-52/查看,你发现xtrabackup会把你数据库datadir下的所有数据 文件都复制过来还新增了5个xtrabackup_开头的文件,我们关心的是xtrabackup_binlog_info这个文件,因为这个文件里面记 录了你做从库需要change到主库的binlog的位置和pos点

    2、如果只想备份一个库,加“--include=navy”指定库名即可, “--databases=navy”不好使。

    八、恢复数据到从库

    1.停止从库

    # /etc/init.d/mysqld stop

    2.把主库备份文件拷贝到从库机器

    # scp -ap /data/backup/full_data/2016-07-14_05-19-52   root@192.168.11.129:/data/mysql/

    3.修改恢复文件权限

    # chown -R mysql:mysql /data/mysql/  

    4.启动数据库

    # /etc/init.d/mysqld start

    5.确认数据是否恢复成功

    登录从库,执行show databases;

    6.确认同步的位置点

    在从库上或者主库上都可以查看该信息,我们是在从库上查看

    # cat /data/mysql/xtrabackup_binlog_info 
    mysql-bin.000016        4542174

    九、开始主从同步

    1.配置从库 主从配置 

    #登录从库并执行

    mysql > CHANGE MASTER TO   MASTER_HOST='192.168.199.182',MASTER_USER='rep',  MASTER_PASSWORD='123',MASTER_LOG_FILE='mysql-bin.000016', MASTER_LOG_POS=4542174;

    2.开始同步

    mysql> start slave;

    3.查看同步状态

    mysql> show slave statusG


  • 相关阅读:
    配送单MYSQL ,一点都不机智
    强哥新周报SQL
    SQL 交叉连接与内连接
    pycharm git 提交使用情况
    MYSQL freedata 外联接
    SQL 添加字段
    邮件发送方法代码时
    调通有赞接口数据,翻页获取
    superset dashboard 设置自动刷新
    python 语法错误记录
  • 原文地址:https://www.cnblogs.com/pangguoping/p/5746087.html
Copyright © 2011-2022 走看看