1、備份單個資料庫
mysql資料庫自帶了乙個很好用的備份命令,就是mysqldump,他的基本使用如下:
語法:mysqldump -u 使用者名稱 -p 資料庫名 > 備份的檔名
備份一1、備份:mysqldump -uroot -p'*****' test >/opt/test_bak.sql
2、檢視備份資料的內容 egrep -v "#|\*|--|^$" /opt/test_bak.sql
3、為了方便測試可以考慮將原來的表刪除:mysql -uroot -p'*****' -e "use test;dorp table test;"
4、恢復:mysql -uroot -p'*****' test /opt/test_bak.sql 加了-b之後作用,增加了建立資料庫和連線資料庫的命令,加了比較好,-b可以指定多個庫備份
2、恢復:mysql -uroot -p'*****' /opt/test_bak.sql.gz 壓縮備份
備份四1、備份:mysqldump -uroot -p'*****' -b test1 test2 |gzip >/opt/test_bak.sql 備份多個庫
分庫備份:
有時乙個企業的資料庫裡會有多個庫,但是出問題的時候很可能是某乙個庫,如果在備份時把所有的庫都備份成了乙個資料檔案的話,恢復某乙個庫的資料時就比較麻煩了,所有-b是備份到乙個資料檔案裡面的。
2、備份表
語法:mysqldump -u使用者名稱 -p密碼 資料庫名 表名1 表2>備份的檔名 後面可以加若干個表
分表備份:每個表單獨備份,而不是所有統一備份
備份表結構:
mysqldump -u使用者名稱 -p密碼 -d 資料庫 表 >備份檔案
備份資料:
mysqldump -u使用者名稱 -p密碼 -t 資料庫 表 >備份檔案
備份整個資料庫,所有的東西mysqldump -u使用者名稱 -p密碼 -a -b --events|gzip >檔案 -a是所有的東西
3、插曲
啟用bin-log時,需要在配置檔案裡面開啟-f重新整理bin-log,切割bin-log,不恢復老資料,恢復新資料
--master-data=1 找到bin-log的位置,與-f的功能是一樣的 =2的時候會加上注釋
#鎖表-x 鎖表
-l 唯讀鎖表
--single-transaction 適合innodb事務資料庫備份,通常用它來保證備份的一致性,實際上它的工作原理是設定本次會話的隔離級別為:repeatable read,以確保本次會話dump時,不會看到其他會話已經提交了的資料
4、乙個完整的備份過程
myisam引擎:mysqldump -uroot -p123 -a -b --master-data=2 -f -x --events|gzip >/opt/test.sql.gzinnodb:mysqldump -uroot -p123 -a -b --master-data=2 -f --single-transaction --events|gzip >/opt/test.sql.gz
如果是混合引擎就以myisam為主
5、恢復
1、source 恢復進入mysql
source /opt/13123.sql
2、標準的恢復命令mysql
mysql -uroot -p123 oldboy < /opt/13123.sql
壓縮了的需要先解壓
gzip -d mysql.sql.gz -d就是將檔案儲存為當前的名字,去掉gz
mysql完整備份策略
備份頻率 備份方式 儲存期限 每小時一次 日誌備份 30天每天一次 增量30天 每週一次 全量4周 每月一次 全量6月 每年一次 全量2年 儲存方式 本地 異地 bin bash etc profile week date a today date y m d month date d y m01 ...
mysql完整備份案例
vim etc my.cnf 修改配置檔案使其支援漢字 修改內容 systemctl restart mariadb 重啟服務 create database client default charset utf8 若配置檔案沒有生效則刪除已建立的庫,重新在建立庫時進行修改 drop databas...
MySQL完整備份和恢復資料庫
1 問題背景 使用mysqldump命令可以方便的對資料庫進行備份,如下 mysqldump uroot p test test.sql 上述命令表示將test資料庫備份到test.sql檔案中。備份完成後,我們開啟test.sql檔案,可以看到在這個sql檔案中包含了建立test資料庫中所有表及資...