& mysql簡單定時增量全量備份
阿新 • • 發佈:2021-07-14
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;