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