mysql之數據備份與還原


mysql數據備份

#1. 物理備份: 直接復制數據庫文件,適用於大型數據庫環境。但不能恢復到異構系統中如Windows。
#2. 邏輯備份: 備份的是建表、建庫、插入等操作所執行SQL語句,適用於中小型數據庫,效率相對較低。
#3. 導出表: 將表導入到文本文件中。

一、使用mysqldump實現邏輯備份

#語法:
# mysqldump -h 服務器 -u用戶名 -p密碼 數據庫名 > 備份文件.sql
 
#示例:
#單庫備份
mysqldump -uroot -p123 db1 > db1.sql
mysqldump -uroot -p123 db1 table1 table2 > db1-table1-table2.sql
 
#多庫備份
mysqldump -uroot -p123 --databases db1 db2 mysql db3 > db1_db2_mysql_db3.sql
 
#備份所有庫
mysqldump -uroot -p123 --all-databases > all.sql

二、恢復邏輯備份

#方法一:
[root@localhost backup]# mysql -uroot -p123 < /backup/all.sql
 
#方法二:
mysql> use db1;
mysql> SET SQL_LOG_BIN=0;
mysql> source /root/db1.sql
 
#注:如果備份/恢復單個庫時,可以修改sql文件
DROP database if exists school;
create database school;
use school;

三、備份/恢復案例

#數據庫備份/恢復實驗一:數據庫損壞
備份:
1. # mysqldump -uroot -p123 --all-databases > /backup/`date +%F`_all.sql
2. # mysql -uroot -p123 -e 'flush logs' //截斷並產生新的binlog
3. 插入數據 //模擬服務器正常運行
4. mysql> set sql_log_bin=0; //模擬服務器損壞
mysql> drop database db;
 
恢復:
1. # mysqlbinlog 最后一個binlog > /backup/last_bin.log
2. mysql> set sql_log_bin=0;
mysql> source /backup/2014-02-13_all.sql //恢復最近一次完全備份
mysql> source /backup/last_bin.log //恢復最后個binlog文件
 
 
#數據庫備份/恢復實驗二:如果有誤刪除
備份:
1. mysqldump -uroot -p123 --all-databases > /backup/`date +%F`_all.sql
2. mysql -uroot -p123 -e 'flush logs' //截斷並產生新的binlog
3. 插入數據 //模擬服務器正常運行
4. drop table db1.t1 //模擬誤刪除
5. 插入數據 //模擬服務器正常運行
 
恢復:
1. # mysqlbinlog 最后一個binlog --stop-position=260 > /tmp/1.sql
# mysqlbinlog 最后一個binlog --start-position=900 > /tmp/2.sql
2. mysql> set sql_log_bin=0;
mysql> source /backup/2014-02-13_all.sql //恢復最近一次完全備份
mysql> source /tmp/1.log //恢復最后個binlog文件
mysql> source /tmp/2.log //恢復最后個binlog文件
 
注意事項:
1. 完全恢復到一個干凈的環境(例如新的數據庫或刪除原有的數據庫)
2. 恢復期間所有SQL語句不應該記錄到binlog中

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM