久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySQL數據庫中有哪些備份方案

154次閱讀
沒有評論

共計 4040 個字符,預計需要花費 11 分鐘才能閱讀完成。

MySQL 數據庫中有哪些備份方案,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

1、冷備份:

一般主要用于非核心業務,這類業務一般都是允許業務中斷的,冷備份的特點就是數度快,恢復時也最為簡單。通常直接復物理文件來實現冷備份。

1.1 備份過程:

*** 關閉 mysql 服務

第二步就是把 datas 數據目錄(包含 ibdata1)和日志目錄 (包含 ib_logfile0,ib_logfile1,ib_logfile2) 復制到磁盤,或者本地的另一塊磁盤里

1.2 恢復過程:

*** 使用復制的數據目錄和日志目錄替換原有的目錄

第二就是啟動 mysql

2、邏輯備份 MySQLdump

生產場景備份的命令:

生產場景不同引擎 mysqldump 備份命令

myisam 引擎企業生產備份命令(適合所有引擎或混合引擎):

mysqldump -uroot -p123456 -A -B -F -R --master-data=2 -x --events|gzip  /opt/all.sql.gz

提示:- F 也可以不用,與 –master-data 有些重復。

innodb 引擎企業生產備份命令: 推薦使用的

mysqldump -uroot -p123456 -A -B -F -R --master-data=2 --default-character-set=utf8 --events --single-transaction |gzip  /opt/all.sql.gz

提示:- F 也可以不用。與 –master-data 有些重復。

–default-character-set=utf8 指定備份出的 sql 數據的字符集為 utf8,當然,這個要提前知道線上的 mysql 庫全部采用的字符集都是 utf8,否則在恢復到線上的庫會出現字符集不一致的問題出現亂碼

提示:邏輯備份一般是數據遷移或者數據量很小時采用,邏輯備份采用的是數據導出的方式

2.1mysqldump 庫表等備份說明:

全備:

Mysqldump  ndash;uroot  ndash;p -q  ndash;single-transaction  ndash;A  all.sql

導出多個數據庫:

Mysqldump  ndash;uroot  ndash;p -q  ndash;single-transaction  ndash;B test01 wjw01 test02  test01_wjw01_test02.sql

導出一個 test 庫的某張 wjw01 表:

Mysqldump  ndash;uroot  ndash;p -q  ndash;single-transaction  ndash;b test wjw01 test_wjw01.sql

只導出表結構:

Mysqldump  ndash;uroot  ndash;q  ndash;d --skip-triggers

只需要導出儲存過程時:

Mysqldump  ndash;uroot  ndash;q -Rtdn --skip-triggers

只需要導出觸發器:

Mysqldump  ndash;uroot  ndash;p  ndash;q  ndash;tdn  ndash;triggers

只需要導出事件:

Mysqldump  ndash;uroot  ndash;p  ndash;q  ndash;Etdn  ndash;skip-triggers

只需要導出數據:

Mysqldump  ndash;uroot  ndash;p  ndash;q --skip-transaction --skip-triggers  ndash;t

要想在線上建立一臺新的 slave,則在 master 上執行如下命令:

Mysqldump  ndash;uroot  ndash;p  ndash;q  ndash;single-transaction  ndash;master-data=2 -A  all.sql

提示:在 mysql5.5 里增加了一個新的參數:–dump-slave, 使用該參數可在 slave 端 dump 數據,建立新的 slave,其目的是為了防止對主庫造成過大的壓力。

在 slave 上執行以下命令:

Mysqldump -uroot  ndash;p -A  ndash;dump-slave=2  ndash;q  ndash;single-transaction  /tmp/all.sql

查看 alls.sql 里面會記錄 slave 上的那個點。

注意:–dump-slave 用于在 slave 上 dump 數據,建立新的 slave

2.2Mysqldump 優缺點以及使用場景

優點:

鴻蒙官方戰略合作共建——HarmonyOS 技術社區

恢復簡單,可以使用管道將他們輸入到 mysql

與存儲引擎無關,因為是從 MySQL 服務器中提取數據而生成的,所以消除了底層數據存儲的不同

有助于避免數據損壞。若磁盤驅動器有故障而要復制原始文件時,此時將得到一個損壞的備份

缺點:

鴻蒙官方戰略合作共建——HarmonyOS 技術社區

必須有數據庫服務器完成邏輯工作,需要更多地 cpu 周期

  邏輯備份還原速度慢:需要 MySQL 加載和解釋語句、轉化存儲格式、重建引擎

使用場景:對于 MySQL 數據庫數據量不是很大的場景,建議使用。因為備份方便,簡單靈活,易操作

當數據庫特別的時候,比如 30G 以上時,備份 MySQL 數據時,也就建議不要采用 mysqldump 了,因為備份的時間以及恢復數據庫的時間太長了,會對庫表造成鎖,對線上的業務影響還是比較大的

2.3 簡單介紹下 MySQL 全量備份 + 增量備份 binlog

注意:生產上強烈建議 MySQL 開啟 Row 格式來記錄 binlog, 盡管這樣對磁盤的 IO 以及磁盤的空間的消耗是比較大,但是和數據的安全性、完整性相比,磁盤資源那都是小事

全量備份腳本內容:

#!/bin/bash #mysql 全量備份腳本建議在 slave 從庫上運行,從庫 slave 上建議開啟參數 log_slave_updates=1 mkdir /backup cd /backup dateDIR=$(date + %Y-%m-%d) mkdir -p $dateDIR/data path=/data/mysql/data for n in `mysql -uroot -p123456 -e  show databases |grep -v  Database ` do mysqldump -uroot -p123456 --default-character-set=utf8 -q --lock-all-tables --flush-logs -E -R --triggers -B $n|gzip  /backup/$dateDIR/data/${n}_$dateDIR.sql.gz done binlog_rm=$(tail -n 1 $path/mysql-bin.index|sed  s/.\///) mysql -uroot -p123456 -e  purge binary logs to  $binlog_rm

說明: 這個全量備份腳本,會在導出的時候鎖住全局表,并且此時刷新產生一個新的 bin-log, 期間會產生寫操作的等待,直到導出結束后才會寫入新產生的 bin-log 文件,然后舊的 bin-log 文件會被刪除刪除掉,一般在晚上 2:00 業務低峰期執行操作

進行本地 bin-log 增量備份

在執行完全量備份腳本后,就可以執行增量備份腳本了。

增量備份腳本思路很簡單:

先 mysqladmin -uroot -p123456 flush-logs 刷新新的 binlog 文件,此時 mysql 寫入到新的 binlog 文件中。

然后把當前 mysql 數據庫存放 binlog 的目錄中拋去剛才 *** 生成的 binlog 文件,其余舊的 binlog 文件全部 cp 到本地服務器 /backup/binlog  binlog 的備份目錄下。

*** 在登錄 MySQL 清除當前的 binlog 文件數減一

mysql -uroot -p123456 -e  purge binary logs to  mysql-bin.(n-1)

3. 熱備份與恢復

熱備份的方式也是直接復制數據物理文件,和冷備份一樣,但是熱備份可以不停機直接復制,一般用于 7 *24 小時不間斷的重要核心業務。Mysql 的社區版本熱備份工具 InnoDB Hot Backup 是付費的,只能試用 30 天,商業版才可以 *** 的使用,

Percona 公司發布一個 xtrabackup 熱備工具,和付費的工具一樣,支持在線熱備(備份時不影響數據的讀寫)是商業工具 InnoDB Hot Backup 的一個很好的替代。

xtrabackup 熱備工具是一個開源的工具,他可以非常快速的備份和恢復 mysql 數據庫。由于 Xtrabackup 支持備份 innodb 表,實際生產環境中我們使用的工具是 innobackupex,它是對 xtrabackup 的一層封裝。innobackupex 腳本用來備份非 InnoDB 表,同時會調用 xtrabackup 命令來備份 InnoDB 表,innobackupex 的基本流程如下:

鴻蒙官方戰略合作共建——HarmonyOS 技術社區

開啟 redo 日志拷貝線程,從 *** 的檢查點開始順序拷貝 redo 日志;

開啟 idb 文件拷貝線程,拷貝 innodb 表的數據

idb 文件拷貝結束,通知調用 FTWRL,獲取一致性位點

備份非 innodb 表 (系統表) 和 frm 文件

由于此時沒有新事務提交,等待 redo 日志拷貝完成

*** 的 redo 日志拷貝完成后,相當于此時的 innodb 表和非 innodb 表數據都是 *** 的

獲取 binlog 位點,此時數據庫的狀態是一致的。

釋放鎖,備份結束。

看完上述內容,你們掌握 MySQL 數據庫中有哪些備份方案的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-01發表,共計4040字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 航空| 东辽县| 响水县| 井陉县| 大荔县| 阿鲁科尔沁旗| 杭锦后旗| 吴桥县| 若尔盖县| 东乡| 华蓥市| 诏安县| 中宁县| 丰都县| 化州市| 五大连池市| 兰坪| 东乡县| 兴海县| 诸暨市| 海南省| 瑞金市| 呈贡县| 清原| 杭锦后旗| 寿光市| 德化县| 胶南市| 南阳市| 铅山县| 内乡县| 富裕县| 石城县| 家居| 富平县| 双牌县| 依安县| 怀柔区| 应城市| 盐山县| 沐川县|