zoukankan      html  css  js  c++  java
  • xtrabackup的流备份恢复MySQL从库

    背景

    从库出问题了,需要重做从库。一般的恢复方法是在主库上xtrabackup物理热备,然后拷贝备份文件到从库恢复。但这次遇到一个问题,主库数据目录有300G,而磁盘剩余空间只有100G,于是这次可以采用xtrabackup的流备份恢复从库。流备份可以边备份边压缩边传输,不会占用本地空间。

    服务器列表

    服务器 角色
    192.168.199.198 master
    192.168.199.199 slave

    xtrabackup的流备份恢复MySQL从库步骤

    1.从库关闭MySQL,并移除数据目录

    kill -9 $MYSQLD_PID
    cd /database/mysql/3306/
    rm -rf data
    

    2.主库上授权 (如果无授权)

    grant reload,lock tables,replication client,process on *.* to backup@'%' identified by 'fanderpassword';
    grant replication slave,replication client on *.* to repl@'%' identified by 'fanderpassword';
    

    3.主库和从库上分别安装xtrabackup

    # 请到percona官网下载对应操作系统版本的rpm包
    # 我这里下载的是centos6版本
    # wget https://www.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.14/binary/redhat/6/x86_64/percona-xtrabackup-24-2.4.14-1.el6.x86_64.rpm
    
    # 实际上测试发现,解压直接拷贝xtrabackup、xbstream文件也可以用
    
    # 百度下载qpress, centos6、centos7通用,直接拷贝可以用
    
    cp xtrabackup xbstream qpress /usr/sbin
    chmod +x /usr/sbin/xtrabackup
    chmod +x /usr/sbin/xbstream
    chmod +x /usr/sbin/qpress
    

    快捷通道: https://pan.baidu.com/s/179mV0QidiiMqdROGUFBZXQ 提取码: vcvg

    4.主、从库分别建备份目录

    mkdir -p /data/backups/2019061
    

    5.主库上发起流备份,并通过管道传输到从库解包

    xtrabackup -ubackup -pfanderpassword -H127.0.0.1 -P3306 
     --backup 
     --stream=xbstream 
     --compress 
     --target-dir=/data/backups/20190618 | ssh root@192.168.199.199 "xbstream -x -C /data/backups/20190618"
    

    !!虽然设置了主库本地备份的路径/data/backups/20190618,但观察可以发现其不会占用空间。

    6.从库上解压,解压后删除原压缩文件

    xtrabackup --decompress --parallel=4 --remove-original --target-dir=/data/backups/20190618
    

    7.从库上prepare阶段,应用redo log

    xtrabackup --prepare --use-memory=1GB --target-dir=/data/backups/20190618
    

    8.从库采用move-back方法,把应用好的数据恢复到数据目录

    xtrabackup --defaults-file=/data/mysql/mysql3306/my.cnf --move-back --parallel=4 --target-dir=/data/backups/20190618
    

    注意:这里有一个坑,不要设置innodb_log_group_home_dir =./ ,xtrabackup会读错路径,导致无法拷贝,解决办法是注释掉这条参数。

    9.从库修改数据目录权限

    chown -R mysql:mysql /database/mysql/3306
    

    10.从库启动数据库

    service mysqld start
    

    11.从库修改gtid编号

    [root@192-168-199-199 data]# cat /data/mysql/mysql3306/data/xtrabackup_info |grep binlog_pos
    binlog_pos = filename 'mysql-bin.000009', position '190', GTID of the last change 'c0900221-709b-11e9-b8ea-000c29abbade:1-1539006'
    
    mysql>  reset master;
    mysql>  set global gtid_purged="c0900221-709b-11e9-b8ea-000c29abbade:1-1539006"
    

    12.从库启动复制

    mysql> CHANGE MASTER TO
            MASTER_HOST='192.168.199.198',
            MASTER_USER='repl',
            MASTER_PASSWORD='fanderpassword',
            MASTER_PORT=3306,
            MASTER_AUTO_POSITION=1;
    
    mysql> start slave;
    
  • 相关阅读:
    Object-C,NSSet,不可变集合
    NYIST 860 又见01背包
    NYIST 1070 诡异的电梯【Ⅰ】
    HDU 1542 Atlantis
    HDU 4756 Install Air Conditioning
    CodeForces 362E Petya and Pipes
    HDU 4751 Divide Groups
    HDU 3081 Marriage Match II
    UVA 11404 Palindromic Subsequence
    UVALIVE 4256 Salesmen
  • 原文地址:https://www.cnblogs.com/fander/p/11057609.html
Copyright © 2011-2022 走看看