备份及恢复 工具

备份工具
mysqldump:
mysqldump -uroot -p -A -R -E --triggers >/data/backup/full.sql

mysqldump -uroot -p123 -A -R --triggers --set-gtid-purged=OFF --master-data=2 --single-transaction|gzip > /backup/full_$(date +%F).sql.gz

参数:

-A    全备
-B    备个别库/多个库
-R            备份存储过程及函数
--triggers  备份触发器
-E             备份事件
-F 在备份开始时,刷新一个新binlog日志
 
innobackupex:
全备:
innobackupex  --defaults-file=/etc/my.cnf  --user=root  --password='123'  --socket=/tmp/mysql.sock  --no-timestamp  /data/backup/xtrabackup

增量:

(1)删掉原来备份
略.
(2)全备(周日)
[root@db01 backup]# innobackupex  --defaults-file=/etc/my.cnf  --user=root  --password='123'  --socket=/tmp/mysql.sock  --no-timestamp  /data/backup/full >&/tmp/xbk_full.log
(3)模拟周一数据变化
db01 [(none)]>create database cs charset utf8;
db01 [(none)]>use cs
db01 [cs]>create table t1 (id int);
db01 [cs]>insert into t1 values(1),(2),(3);
db01 [cs]>commit;

(4)第一次增量备份(周一)
innobackupex --defaults-file=/etc/my.cnf  --user=root  --password='123'  --socket=/tmp/mysql.sock --no-timestamp --incremental --incremental-basedir=/backup/full  /backup/inc1 &>/tmp/inc1.log
(5)模拟周二数据
db01 [cs]>create table t2 (id int);
db01 [cs]>insert into t2 values(1),(2),(3);
db01 [cs]>commit;
(6)周二增量
 innobackupex --defaults-file=/etc/my.cnf  --user=root  --password='123' --socket=/tmp/mysql.sock --no-timestamp --incremental --incremental-basedir=/backup/inc1  /backup/inc2  &>/tmp/inc2.log
(7)模拟周三数据变化
db01 [cs]>create table t3 (id int);
db01 [cs]>insert into t3 values(1),(2),(3);
db01 [cs]>commit;
db01 [cs]>drop database cs;

恢复过程:

1. 检查备份
1afe8136-601d-11e9-9022-000c2928f5dd:7-9
2. 备份整理(apply-log)+合并备份(full+inc1+inc2)
(1) 全备的整理
[root@db01 one]# innobackupex --apply-log --redo-only /data/backup/full
(2) 合并inc1到full中
[root@db01 one]# innobackupex --apply-log --redo-only --incremental-dir=/data/backup/inc1 /data/backup/full
(3) 合并inc2到full中
[root@db01 one]# innobackupex --apply-log  --incremental-dir=/data/backup/inc2 /data/backup/full
(4) 最后一次整理全备
[root@db01 backup]#  innobackupex --apply-log  /data/backup/full
3. 截取周二 23:00 到drop 之前的 binlog 
[root@db01 inc2]# mysqlbinlog --skip-gtids --include-gtids='1afe8136-601d-11e9-9022-000c2928f5dd:7-9' /data/binlog/mysql-bin.000009 >/data/backup/binlog.sql
4. 进行恢复
[root@db01 backup]# mkdir /data/mysql/data2 -p
[root@db01 full]# cp -a * /data/mysql/data2
[root@db01 backup]# chown -R mysql.  /data/*
[root@db01 backup]# systemctl stop mysqld
vim /etc/my.cnf
datadir=/data/mysql/data2
systemctl start mysqld

Master [(none)]>set sql_log_bin=0;
Master [(none)]>source /data/backup/binlog.sql

恢复工具:

mysql> source /data/backup/full.sql

查看二进制日志:

更多二进制日志相关信息请查阅:https://www.jianshu.com/p/00c54d2832ed

show master status;
show variables like 'log_error';
show binlog events in 'mysql-bin.000003';
二进制日志截取:需查看起点/终点

-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.0000xx', MASTER_LOG_POS=xxx;
mysqlbinlog --skip-gtids --include-gtids='3ca79ab5-3e4d-11e9-a709-000c293b577e:6-7' /data/binlog/mysql-bin.0000xx >/backup/bin.sql

原文地址:https://www.cnblogs.com/fengyuanfei/p/14498359.html