二进制日志相关的几个选项
innodb support xa={TRUE|FLASE}是否支持分布式事务
sync_binlog = 1 在备份过程中不会有正在写入的事务
https://www.percona.com/
Software
Percona XtraBackup
rpm -ivh percona-xtrabackup.rpm
innobackupex --user=root /backup 把数据库备份到/backup目录里
/backup/.../backup-my.cnf配置文件的备份
/backup/.../xtrabackup_binlog_info里记录备份时是哪个二进制日志
/backup/.../xtrabackup_binary 记录备份时调用的哪个命令执行的操作
/backup/.../xtrabackup_logfile 纯数据文件
/backup/.../xtrabackup_checkpoints 数据库日志序列号
创建一个最小权限的用户进行备份,则可基于如下命令创建此类用户
mysql> create user ‘bkpuser‘@‘localhost‘ identified by ‘s3cret‘;
mysql> revoke all privileges, grant option from ‘bkupuser‘;
mysql> grant reload,lock tables, replication client on *.* to ‘bkpuser‘@‘localhost‘;
mysql> flush privileges;
# innobackupex --apply-log /backup/2016-10-28_22-17-27 恢复之前先准备一下-apply-log
mysql> flush logs;刷新二进制日志文件,生成一个新的,好备份旧的
cd /mydata/data
cp mysql-bin.000001 /root 备份二进制日志文件,
cd /mydata/data
rm -rd ./* 模拟mysql损坏
# innobackupex --copy-back /backup/2016-10-28_22-17-27还原
chown -R mysql.mysql ./*
service mysqld start
# mysqlbinlog /root/mysql-bin.000001 > /tmp/abc.sql
mysql> set sql_log_bin=0;
mysql> source /tmp/abc.sql;
mysql> set sql_log_bin=1;
xtrabackup+二进制日志;
对innodb支持增量备份
恢复以后还需要重新做一份完全备份
#innobackupex --user=root /backup
#innobackupex --incremental /backup --incremental-dir=/backup/2016-10-28_22-36-37增量
备份
--------------
#innobackupex --apply-log --redo-only /backup/2016-10-28_22-36-37 只执行redo的完全备份
#innobackupex --apply-log --redo-only /backup/2016-10-28_22-36-37 --incremental-
dir=/backup/2016-10-28_22-38-58 增量备份
#cd /mydata/data
#rm -rf ./* 模拟数据库损坏
# innobackupex --copy-back /backup/2016-10-28_22-36-37 还原完全备份
#chown -R mysql.mysql /mydata/data
#service mysqld start