1. 檢查是log_bin是否開啟
增量備份需要開啟log_bin
若狀態為on
則是已經開啟log_bin
若沒開啟log_bin,則修改mysql配置文件my.cnf,添加以下配置,重啟mysql使配置生效
server-id=1
log-bin = /usr/local/mysql/mysql-bin
binlog-do-db = pay
binlog-do-db = cemao_carpool
例:
[mysqld]
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
socket=/tmp/mysql.sock
server-id=1
log-bin = /usr/local/mysql/mysql-bin
binlog-do-db = pay
binlog-do-db = cemao_carpool
user=mysql
port=3306
character-set-server=utf8
查看當前正在記錄操作的日志log_bin文件名稱
2. 全量備份
mysqldump參數說明
--quick : 該選項在導出大表時很有用,它強制 mysqldump 從服務器查詢取得記錄直接輸出而不是取得所有記錄后將它們緩存到內存中。
--all-databases : 導出所有數據庫
--flush-logs : 生成新的二進制日志文件
--single-transaction : 此選項會將隔離級別設置為:REPEATABLE READ。並且隨后再執行一條START TRANSACTION語句,讓整個數據在dump過程中保證數據的一致性,這個選項對InnoDB的數據表很有用,且不會鎖表。但是這個不能保證MyISAM表和MEMORY表的數據一致性。 為了確保使用--single-transaction命令時,保證dump文件的有效性。需沒有下列語句ALTER TABLE, CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE,因為一致性讀不能隔離上述語句。所以如果在dump過程中,使用上述語句,可能會導致dump出來的文件數據不一致或者不可用。
3. 備份恢復
簡單的定時增量全量備份案例:
增量備份腳本
/usr/local/mysql/bin/mysqladmin -uroot -pxxxxx flush-logs;
全量備份腳本
backupDatabase=mysql
fileName=${backupDatabase}`date +"%Y-%m-%d_%H:%M:%S"`
baseDir=/usr/local/mysql/backup/
/usr/local/mysql/bin/mysqldump -uroot -pxxxxx --databases pay cemao_carpool --flush-logs --delete-master-logs --single-transaction -R > ${baseDir}${fileName}.sql
tar -zcvf ${baseDir}${fileName}.sql.tar.gz ${baseDir}${fileName}.sql
rm -f ${baseDir}${fileName}.sql;