centos Mysql使用mysqldump備份數據庫

1.mysqldump需要的權限

select, reload, lock tables, replication client, show view, process

2.備份時的參數

--single-transation #對inodb存儲引擎有效

-l ,--lock-tables #對非事務型存儲引擎,只能保證某一個數據庫的數據是一致性的。不能保證所有數據庫的數據是一致的

-x,--lock-all-tables #可以保證所有數據庫的數據的一致性,但是在備份的時候數據庫只讀,不能寫數據

--master-data=[1/2] #爲1時備份文件中只記錄了change master語句,爲2時註釋掉change master,自動忽略--lock-tables參數。如果在備份時指定了此參數卻沒有制定--single-trasation參數時會自動使用--lock-all-tables參數

 

如果數據庫中存在存儲過程,觸發器,數據庫調度事件

-R,--routines 數據庫中存在存儲過程

---triggers 數據庫中存在觸發器

-E,---event 數據庫中存在調度事件

 

其他參數:

--hex-blob 16進制保存

---tab=path 生成兩個文件(結構和數據)

-w,--where = ‘過濾條件導出’

 

實戰:

1.創建備份用戶賬號密碼

create user 'backup'@'localhost' identified by '123456';

 

2.授權

grant select, reload, lock tables,replication client,show view, event, process on *.* to 'backup'@'localhost';

 

3.使用backup對指定數據庫進行全備

在shell命令下:

cd /data
mysqldump -ubackup -p --master-data=2 --single-transaction --routines --triggers --events htlb_order > ordered.sql 

 

查看

more htlb_order.sql
grep "CREATE TABLE" htlb_order.sql 

 

4.備份單個表

mysqldump -ubackup -p --master-data=2 --single-transaction --routines --triggers --events htlb_order t_order > t_order.sql 
grep "CREATE TABLE" t_order.sql

 

5.全量備份 

mysqldump -ubackup -p --master-data=2 --single-transaction --routines --triggers --events --all-databases > htlb_data.sql 
grep "Current Database" htlb_data.sql

mysqldump 恢復數據

1.通過mysql客戶端導入

mysql -u -p dbname < backup.sql

2.在mysql命令行下

source /tmp/backup.sql

3.全備數據庫恢復

創建一個數據庫:

mysql -uroot -p -e"create database bak_orderdb"

導入備份文件

mysql -uroot -p bak_orderdb < htlb_order.sql

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章