zoukankan      html  css  js  c++  java
  • Xtrabackup备份、还原、恢复Mysql操作大全

    环境:CentOS 6.7  + Mysql 5.7.19 + Xtraback 2.4.8

    复制代码
    innobackupex常用参数:
    --user=USER                     指定备份用户,不指定的话为当前系统用户
    --password=PASSWD               指定备份用户密码
    --port=PORT                     指定数据库端口
    --defaults-group=GROUP-NAME     在多实例的时候使用
    --host=HOST                     指定备份的主机,可以为远程数据库服务器
    --apply-log                     回滚日志
    --database                      指定需要备份的数据库,多个数据库之间以空格分开
    --defaults-file                 指定mysql的配置文件
    --copy-back                     将备份数据复制回原始位置
    --incremental                   增量备份,后面跟要增量备份的路径
    --incremental-basedir=DIRECTORY 增量备份时使用指向上一次的增量备份所在的目录
    --incremental-dir=DIRECTORY     增量备份还原的时候用来合并增量备份到全量,用来指定全备路径
    --redo-only                     对增量备份进行合并
    --rsync                         加快本地文件传输,适用于non-InnoDB数据库引擎。不与--stream共用
    --no-timestamp                  生成的备份文件不以时间戳为目录.
    复制代码

    示例组1:全备还原

    复制代码
    #数据目录:/data/mysql 
    $ mkdir -pv /backup/3306/20171107/full 
    #本地 单实例 全量备份
    $ innobackupex --defaults-file=/etc/my.cnf  --user=root --password=123456 --socket=/tmp/mysql.sock --no-timestamp  --parallel=4  /backup/3306/20171107/full
    #还原
    $ innobackupex --apply-log  /backup/3306/20171107/full
    $ service mysqld stop 
    $ mv /data/mysql  /data/mysql_bak_201711071    ##备份原数据目录
    $ mkdir -pv /data/mysql
    $ innobackupex --copy-back  /backup/3306/20171107/full
    $ chown -R mysql:mysql /data/mysql
    $ service mysqld start 
    复制代码

    示例组2:增量还原

    复制代码
    #数据目录:/data/mysql 
    $ mkdir -pv /backup/3306/20171107/{full,inc1,inc2,inc3}
    #本地 单实例 全量备份
    $ innobackupex --defaults-file=/etc/my.cnf  --user=root --password=123456 --socket=/tmp/mysql.sock --no-timestamp  --parallel=4  /backup/3306/20171107/full
    #本地 单实例 增量备份1
    $ mysql  -S /tmp/mysql.sock  -uroot -p123456 -e "create table tpccdb.tb2(col1 varchar(16));"
    $ mysql  -S /tmp/mysql.sock  -uroot -p123456 -e "insert into  tpccdb.tb2 values('1'),('2'),('3'),('第一次插入结束');"
    $ innobackupex --defaults-file=/etc/my.cnf  --user=root  --password=123456  --socket=/tmp/mysql.sock --no-timestamp  --parallel=4  --incremental-basedir=/backup/3306/20171107/full  --incremental /backup/3306/20171107/inc1
    #本地 单实例 增量备份2
    $ mysql  -S /tmp/mysql.sock  -uroot -p123456 -e "insert into  tpccdb.tb2 values('4'),('5'),('6'),('第二次插入结束');"
    $ innobackupex --defaults-file=/etc/my.cnf  --user=root  --password=123456  --socket=/tmp/mysql.sock --no-timestamp  --parallel=4  --incremental-basedir=/backup/3306/20171107/inc1  --incremental /backup/3306/20171107/inc2
    #本地 单实例 增量备份3
    $ mysql  -S /tmp/mysql.sock  -uroot -p123456 -e "insert into  tpccdb.tb2 values('7'),('8'),('9'),('第三次插入结束');"
    $ innobackupex --defaults-file=/etc/my.cnf  --user=root  --password=123456  --socket=/tmp/mysql.sock --no-timestamp  --parallel=4  --incremental-basedir=/backup/3306/20171107/inc2  --incremental /backup/3306/20171107/inc3 
    #还原
    $ innobackupex --apply-log  --redo-only /backup/3306/20171107/full
    $ innobackupex --apply-log  --redo-only /backup/3306/20171107/full --incremental-dir=/backup/3306/20171107/inc1
    $ innobackupex --apply-log  --redo-only /backup/3306/20171107/full --incremental-dir=/backup/3306/20171107/inc2
    $ innobackupex --apply-log              /backup/3306/20171107/full --incremental-dir=/backup/3306/20171107/inc3 
    $ innobackupex --apply-log  /backup/3306/20171107/full
    $ service mysqld stop 
    $ mv /data/mysql  /data/mysql_bak_201711072    ##备份原数据目录
    $ mkdir -pv /data/mysql 
    $ innobackupex --copy-back  /backup/3306/20171107/full
    $ chown -R mysql:mysql /data/mysql
    $ service mysqld start
    $ mysql  -S /tmp/mysql.sock  -uroot -p123456 -e "select * from tpccdb.tb2;"
    复制代码

    示例组3:完全&定点&误操作恢复

    复制代码
    #数据目录:/data/mysql 
    $ mkdir -pv /backup/3306/20171107/{full,inc1,inc2}
    #本地 单实例 全量备份
    $ innobackupex --defaults-file=/etc/my.cnf  --user=root --password=123456 --socket=/tmp/mysql.sock --no-timestamp  --parallel=4  /backup/3306/20171107/full
    #本地 单实例 增量备份1
    $ mysql  -S /tmp/mysql.sock  -uroot -p123456 -e "create table tpccdb.tb3(col1 varchar(16));"
    $ mysql  -S /tmp/mysql.sock  -uroot -p123456 -e "insert into  tpccdb.tb3 values('1'),('2'),('3'),('第一次插入结束');"
    $ innobackupex --defaults-file=/etc/my.cnf  --user=root  --password=123456  --socket=/tmp/mysql.sock --no-timestamp  --parallel=4  --incremental-basedir=/backup/3306/20171107/full  --incremental /backup/3306/20171107/inc1
    #本地 单实例 增量备份2
    $ mysql  -S /tmp/mysql.sock  -uroot -p123456 -e "insert into  tpccdb.tb3 values('4'),('5'),('6'),('第二次插入结束');"
    $ innobackupex --defaults-file=/etc/my.cnf  --user=root  --password=123456  --socket=/tmp/mysql.sock --no-timestamp  --parallel=4  --incremental-basedir=/backup/3306/20171107/inc1  --incremental /backup/3306/20171107/inc2
    
    $ mysql  -S /tmp/mysql.sock  -uroot -p123456 -e "insert into  tpccdb.tb3 values('7'),('8'),('9'),('第三次插入结束');"  ##二进制日志恢复
    $ mysql  -S /tmp/mysql.sock  -uroot -p123456 -e "flush logs;"  
    $ mysql  -S /tmp/mysql.sock  -uroot -p123456 -e "insert into  tpccdb.tb3 values('10'),('11'),('12'),('第四次插入结束');" 
    $ mysql  -S /tmp/mysql.sock  -uroot -p123456 -e "flush logs;"  
    $ mysql  -S /tmp/mysql.sock  -uroot -p123456 -e "insert into  tpccdb.tb3 values('13'),('14'),('15'),('第五次插入结束');" 
    
    #恢复
    $ innobackupex --apply-log  --redo-only /backup/3306/20171107/full
    $ innobackupex --apply-log  --redo-only /backup/3306/20171107/full --incremental-dir=/backup/3306/20171107/inc1
    $ innobackupex --apply-log              /backup/3306/20171107/full --incremental-dir=/backup/3306/20171107/inc2
    $ innobackupex --apply-log  /backup/3306/20171107/full
    $ cat /backup/3306/20171107/inc2/xtrabackup_binlog_info  ##获取最后一次备份的LSN
    ## mysql-bin.000004        1707
    $ ll -t /data/mysql/mysql-bin*   ##查看有多少个需要导入的二进制文件
    -rw-r----- 1 mysql mysql      461 Nov  7 06:22 /data/mysql/mysql-bin.000006
    -rw-r----- 1 mysql mysql      485 Nov  7 06:21 /data/mysql/mysql-bin.000005
    -rw-r----- 1 mysql mysql     2035 Nov  7 06:20 /data/mysql/mysql-bin.000004
    
    $ mysqlbinlog  --start-position=1707 /data/mysql/mysql-bin.000004 -vv >> /tmp/load.sql 
    $ mysqlbinlog                        /data/mysql/mysql-bin.000005 -vv >> /tmp/load.sql 
    $ mysqlbinlog                        /data/mysql/mysql-bin.000006 -vv >> /tmp/load.sql    ##完全恢复 
    
    #$ mysqlbinlog  --stop-position=407   /data/mysql/mysql-bin.000006 -vv >> /tmp/load.sql   ##指定点恢复
    
    #$ mysqlbinlog   --stop-position=407   /data/mysql/mysql-bin.000006 -vv >> /tmp/load.sql   ##误删除恢复(误操作前停止) 
    #$ mysqlbinlog   --start-position=1108 /data/mysql/mysql-bin.000006 -vv >> /tmp/load.sql   ##误删除恢复(误操作后继续) 
    
    $ service mysqld stop 
    $ mv /data/mysql  /data/mysql_bak_201711073    ##备份原数据目录
    $ mkdir -pv /data/mysql 
    $ innobackupex --copy-back  /backup/3306/20171107/full
    $ chown -R mysql:mysql /data/mysql
    $ /usr/local/mysql/bin/mysqld start  --skip-... (关系二进制日志,只需要SUPER权限登录)
    
    $ mysql -uroot -p123456
    mysql> source  /tmp/load.sql 
    $ service mysqld stop
    $ /usr/local/mysql/bin/mysqld start
    复制代码
  • 相关阅读:
    【NOIP 2003】 加分二叉树
    【POJ 1655】 Balancing Act
    【HDU 3613】Best Reward
    【POJ 3461】 Oulipo
    【POJ 2752】 Seek the Name, Seek the Fame
    【POJ 1961】 Period
    【POJ 2406】 Power Strings
    BZOJ3028 食物(生成函数)
    BZOJ5372 PKUSC2018神仙的游戏(NTT)
    BZOJ4836 二元运算(分治FFT)
  • 原文地址:https://www.cnblogs.com/shamo89/p/9767310.html
Copyright © 2011-2022 走看看