天天看點

Linux下MySQL資料庫備份和恢複

Linux下MySQL資料庫備份和恢複

Linux下MySQL資料庫有邏輯備份和實體備份,也可以分為完全備份、部分備份。

·完全備份是指備份整個資料集(即整個資料庫)

·部分備份是指備份部分資料集(隻備份一個表)

邏輯備份最大優點是對于各種存儲引擎,都可以使用同樣的方法來備份。而實體備份則不同,不同的存儲引擎有着不同的備份方法。

mysqldump基本文法

mysqldump -uUsername -pPassword dbname table1 table2 … > BackupName.sql      

備份多個資料庫

mysqldump -uUsername -pPassword --databases dbname1 dbname2 … > Backup.sql      

備份所有資料庫

mysqldump -uUsername -pPassword -all-databases > BackupName.sql      

MySQL 完全備份和恢複

備份某—個資料庫: mysqldump -uUsername -pPassword 資料庫名 > /root/XXX.bak

會将指定的資料庫備份至roo家目錄下,檔案名為XXX.bak

恢複: mysql -uUsername -pPassword 資料庫名 < /root/XXX.bak

MySQL 增量備份

驗證和配置是否啟動二進制日志功能。進行增量備份前,要啟動二進制日志功能,首先使用vi /etc/my.cnf,打開配置檔案,檢視是否有log-bin配置行。是以添加此配置即可,輸入内容:log-bin=/var/lib/mysql/sql_backup,然後儲存my.cnf檔案并退出。具體操作如圖所示:

Linux下MySQL資料庫備份和恢複

重新啟動mysql服務,并且到目錄/var/lib/mysql下查對應檔案:索引檔案sql_backup.index和檔案sql_backup.000001,如出現以上兩個檔案,說明二進制日志功能開啟成功了。

service mysqld restart
cd /var/lib/mysql/
ls      
Linux下MySQL資料庫備份和恢複

在進行增量備份時,需要做一次完全備份,輸入指令:

mysqldump -uUserName -pPassword --lock-all-tables --flush-logs --delete-master-logs 資料庫名 > /root/完全備份檔案名.sql
說明:在進行增量備份時,使用的參數解釋如下:
--lock-all-tables 在開始導出之前,送出請求鎖定所有資料庫中的所有表,以保證資料的一緻性;
--flush-logs為結束目前日志,生成新日志檔案;
--delete-master-logs 則清除以前的日志,以釋放空間;      

進行增量備份。我們使用上一步中的flush- logs時間點來進行備份,執行以下指令:

mysqladmin -uUserName -pPassword flush-logs      

在/var/mysql/目錄下看到新生産的日志檔案:sql_backup.000002

做恢複增量備份前,需要恢複完全備份。執行以下指令:

mysql -uUsername -pPassword 資料庫名 < /root/完全備份檔案名.sql      

導入增量備份,執行以下指令:

mysqlbinlog /var/lib/mysql/sql_backup.000002 | mysql -uUsername -pPassword 資料庫名      

Linux自動備份

開啟Linux crond 服務:service crond start 
cd root/      

在root/下編寫一個自動化腳本:vi bak.sh

Linux下MySQL資料庫備份和恢複
通過執行指令chmod +x bak.sh為bak.sh賦予執行權限:chmod +x bak.sh 
crontab檔案中,加入計劃任務。假設我們每天1點30分開始備份,指令如下:crontab -e      
Linux下MySQL資料庫備份和恢複

驗證計劃任務是否添加成功,輸入指令:crontab -l

Linux下MySQL資料庫備份和恢複

确認一下crontab有沒有開機啟動,避免伺服器重新開機後計劃任務時效,輸入指令:

chkconfig --list crond      
Linux下MySQL資料庫備份和恢複

上圖中,我們看到2、3、4、5狀态下都是啟動的,是以可以确認會開機自啟動。

至此,每日的1點30分将會在目錄/root/下自動産生資料庫的一份全備。