备份工具
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