本文實例講述了mysql 數據庫備份的多種實現方式。,具體如下:
一、使用mysqldump進行備份
1、完整備份所有數據庫
mysqldump -u root -p --all-databases > E:/all.sql
在mysql8之前,存儲過程和事件存儲在mysql.proc和mysql.event表中。
從mysql8開始,相應對象的定義存儲在數據字典中,這些表不會被備份。
要將存儲過程和事件也包含,請使用如下語句:
mysqldump -u root -p --all-databases --routines --events > E:/all.sql
2、時間點恢復
要獲得時間點恢復,應該指定--single-transaction 和 --master-data
--single-transaction 在備份之前,會將事務隔離級別設為REPEATABLE READ模式,并執行 START TRANSACTION 來提供一致的備份。
--master-data 將服務器的二進制日志的位置輸出到 sql 文件。
mysqldump -u root -p --all-databases --routines --events --single-transaction --master-data > E:/all.sql
--master-data = 2表示在導出過程中,記錄當前庫的binlog和pos點,并在導出文件中注釋這一行。
--master-data = 1表示在導出過程中,記錄當前庫的binlog和pos點,并在導出文件中不注釋這一行。
3、在從庫導出時,記錄主庫的二進制日志位置
mysqldump -u root -p --all-databases --routines --events --single-transaction --dump-slave > E:/all.sql
--dump-slave = 2表示在導出過程中,記錄主庫的binlog和pos點,并在導出文件中注釋這一行。
--dump-slave = 1表示在導出過程中,記錄主庫的binlog和pos點,并在導出文件中不注釋這一行。
4、指定數據庫和表導出
mysqldump -u root -p --databases 數據庫 > E:/bak.sqlmysqldump -u root -p --databases 數據庫 --tables 數據表 > E:/bak.sql
5、忽略表
mysqldump -u root -p --databases 數據庫 --ignore-table=數據庫.數據表 > E:/bak.sql
6、指定行
mysqldump -u root -p --databases 數據庫 --tables 數據表 --where="條件" > E:/bak.sql
或者用limit限制結果集
mysqldump -u root -p --databases 數據庫 --tables 數據表 --where="條件 LIMIT 條數" > E:/bak.sql
7、導出遠程服務器
mysqldump -u root -p -h 主機IP --all-databases --routines --events --triggers > E:/all.sql
8、用于與其他服務器合并數據的備份
mysqldump -u root -p --databases 數據庫 --skip-add-drop-table --replace > E:/bak.sql
--skip-add-drop-table: 不會將drop table語句寫入導出文件中。
--replace:將使用replace into語句而不是insert語句導出。
新聞熱點
疑難解答