您好,登錄后才能下訂單哦!
本文主要給大家簡單講講mysql主要備份方式有哪些,相關專業術語大家可以上網查查或者找一些相關書籍補充一下,這里就不涉獵了,我們就直奔主題吧,希望mysql主要備份方式有哪些這篇文章可以給大家帶來一些實際幫助。
Mysql主要的備份方式
在線備份如何保障備份的數據的一致性,使用邏輯卷快照功能來實現,先鎖幾秒
把blog日志重定向到一個文件里,再用source導入到數據庫里,因為每操作一步都會產生新的blog日志
物理備份:
直接復制數據庫文件,適用于大型數據庫環境,一般結構lvm snapshot的方式實現,缺點是不能恢復到異構系統中如Windows中
邏輯備份
備份的是建表,建庫,插入等操作所執行的sql語句,適用于中小型數據庫,效率比較低
Mysqldump實現邏輯備份
語法
#mysqldump -h 云服務器 -u用戶名 -p密碼 數據庫名 > 備份文件.sql
數據庫名的選項
--all -databases 所有庫
School 數據庫名
School stu_info t1 school數據庫的表stu_info t1
--databases bbs test mysql 多個數據庫
實例:
單庫備份:
#mysqldump -uroot -p123 bbs >bbs.sql
#mysqldump -uroot -p123 bbs table1 table 2 > bbs table1 table2.sql
多庫備份
#mysqldump -uroot -p123 -databases bbs test mysql > bbs_test_mysql,sql
備份所有庫
#mysqldump -uroot -p123 --all-databases > all.sql
#mysqldump -uroot -p123 --all-databses --lock-all-tables > /tmp/all2.sql
備份/恢復案例:
情況1數據庫損壞了,等于是機器都壞了
操作步驟:
備份
1#mysqldump -uroot -p123 --all-databases --lock-all-tables>/backup/`date+%F`_all.sql
2mysql -uroot -p123 -e ‘flush logs’ //截斷并產生新的binlog
3插入數據 //模擬云服務器正常運行
4mysql>set sql_log_bin=0;
Mysql>drop database bbs //模擬云服務器損壞
恢復:(干凈的環境,新機器)
1mysql>set sql_log_bin=0;
Mysql>source /backup/2014-02-13 all.sql //恢復最近一次完全備份
2mysqlbinlog 最后一個binlog |mysql -uroot -p 123 //恢復最后一個binlog文件
情況2如果有誤刪除
備份
1#mysqldump -uroot -p123 --all-databases --lock-all-tables>/backup/`date+%F`_all.sql
2mysql -uroot -p123 -e ‘flush logs’ //截斷并產生新的binlog
3插入數據 //模擬云服務器正常運行
4Mysql>drop table db1.t1 //模擬誤刪除
恢復:(干凈的環境,新機器)
1mysql>set sql_log_bin=0;
Mysql>source /backup/2014-02-13 all.sql //恢復最近一次完全備份
2mysqlbinlog 最后一個binlog --stop-position=260|mysql -uroot -p 123
mysqlbinlog 最后一個binlog --start-position=500|mysql -uroot -p 123 這種情況下就需要用到blog字符截取來恢復
備份/恢復注意事項:
1)完全備份到一個干凈的環境(例如新的數據庫或刪除原有的數據庫)
2)恢復期間所有sql語句不應該記錄到binlog中
3)單庫恢復前需要手動創建數據庫
實現自動化備份
1)寫腳本
Vim /mysql_back.sql
#!/bin/Bash
#The mysql_back
# Author: luliechu (E-mail: 983765387@qq.com)
Back_dir=/backup
Back_file=`date+%F`_all.sql
User=root
Pass=123
If[! -d /backup];
Then
Mkdir -p /backup
Fi
#備份并切斷日志
Mysqldump -u${user} -p${pass} -- events --all-databases --lock-all-tables>${back_dir}/${back_file}
Mysql -u${user} -p${pass} -e ‘flush’ logs
#只保留最近一周的備份
Cd $back_dir
Find -mtime +7 -exec rm -rf {}\;
2)測試
Chmod a+x /mysql_back.sql //給腳本執行權限
Chattr +i /mysql_back.sql //為了安全給這腳本文件上鎖,禁止任何人做改動
/mysql_back.sql //執行腳本
3)配置定時任務到生產環境中
Crontab -l
0 2 * * * /mysql_back.sql //每天凌晨2點執行腳本
導出表
將表導入到文本文件中
表的導出和導入
Select ....into outfile 導出文本文件
實例:
Mysql>select * from school.student1
Into outfile ‘student1.txt’
Fields terminated by `,` //定義字段分割符
Optinon
Ally enclosed by `’’` 定義字符串使用什么符號括起來
Lines terminated by ‘\n’ //定義換行符
數據庫遷移
注意要盡量是相同版本之間遷移
Mysqldump -h 遷移源ip -uroot -p123 --databases bbs |mysql -h 目標ip -uroot
-p456
//遷移源為本機,不用申請
總結:mysql支持多種不同的備份方式,包括物理備份,邏輯備份等方式,通過在生產環境中一般都是采用物理備份和邏輯備份相結合的方式來實現
mysql主要備份方式有哪些就先給大家講到這里,對于其它相關問題大家想要了解的可以持續關注我們的行業資訊。我們的板塊內容每天都會捕捉一些行業新聞及專業知識分享給大家的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。