二進制日誌相關的幾個選項
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