mysql 8.0数据备份恢复_MySQL 8.0 增强逻辑备份恢复工具介绍-爱可生
作者:楊濤濤
資深數(shù)據(jù)庫專家,專研 MySQL 十余年。擅長 MySQL、PostgreSQL、MongoDB 等開源數(shù)據(jù)庫相關(guān)的備份恢復(fù)、SQL 調(diào)優(yōu)、監(jiān)控運維、高可用架構(gòu)設(shè)計等。目前任職于愛可生,為各大運營商及銀行金融企業(yè)提供 MySQL 相關(guān)技術(shù)支持、MySQL 相關(guān)課程培訓(xùn)等工作。
本文來源:原創(chuàng)投稿 *愛可生開源社區(qū)出品,原創(chuàng)內(nèi)容未經(jīng)授權(quán)不得隨意使用,轉(zhuǎn)載請聯(lián)系小編并注明來源。
這篇我們來簡單介紹下 MySQL 8.0.21 附帶的增強版邏輯備份工具。
在介紹這個工具之前,先來回顧下 MySQL 的邏輯備份工具歷史。
1.mysqldump:最早,也是最成熟的邏輯備份工具,是 MySQL 原生的用來備份整個數(shù)據(jù)庫實例、單個數(shù)據(jù)庫、單張表的邏輯備份工具, 上手簡單,學(xué)習(xí)成本幾乎為 0。備份簡單,恢復(fù)也簡單。
比如導(dǎo)出單個數(shù)據(jù)庫 ytt: mysqldump ytt > /tmp/ytt.sql;
恢復(fù)也非常簡單:mysql
缺點是備份速度慢。在整個備份過程中,是單線程運行;備份出來的數(shù)據(jù)集要恢復(fù)的話同樣也是單線程運行,恢復(fù)速度也慢。除非對同一時刻的所有表單獨備份出來,自己寫額外腳本進行多線程恢復(fù)。
2.mysqlpump:MySQL 5.7 GA 后推出的 mysqldump工具的增強版。可以對同一個數(shù)據(jù)集多個線程并發(fā)備份,備份速度很快。
其他缺點和 mysqldump 一樣。
3.MySQL Shell UTIL對象附帶的備份工具:隨 MySQL 8.0.21 最新版本捆綁發(fā)布,自帶多線程備份以及多線程恢復(fù)功能, 可以直接替代 mysqldump/mysqlpump。
dump_instance/dumpInstance 用來多線程備份 MySQL 整個單機實例
dump_schemas/dumpSchemas 用來多線程備份 MySQL 單個數(shù)據(jù)庫
load_dump/loadDump 用來多線程恢復(fù)之前兩個工具導(dǎo)出的數(shù)據(jù)集文件
MySQL Shell UTIL 備份恢復(fù)工具具備如下特性:
1. 壓縮導(dǎo)出(默認壓縮算法 zstd)
2. 數(shù)據(jù)集分塊導(dǎo)出,每塊 32M
3. 默認導(dǎo)出存儲過程、存儲函數(shù)、觸發(fā)器、事件、用戶、視圖
4. 默認 4 個線程導(dǎo)出
5. 默認進度展示
6. 默認字符集 utf8mb4
7. 默認開啟一致性導(dǎo)出
8. 默認表,視圖等定義導(dǎo)出為 SQL 語句
9. 默認數(shù)據(jù)導(dǎo)出為 TSV 格式數(shù)據(jù)
接下來,我們來簡單演示下 MySQL SHELL UTIL 備份恢復(fù)工具,以下我基于 PYTHON 語法:
1.dump_instance 示例
具體參數(shù):(4 個線程同時備份數(shù)據(jù)庫 ytt)
# 備份路徑backup_path='/tmp/ytt_backup_instance';
# 備份選項,定義一致性,不包含哪些數(shù)據(jù)庫,線程數(shù)等等。backup_options = {"consistent":True,"threads":4,"excludeSchemas":["world","ytt_new","score","query_rewrite"]}
以下為備份結(jié)果信息匯總,其中包含備份時間,備份數(shù)據(jù)集原始大小,壓縮后大小,壓縮率以及壓縮速度等信息。
Duration: 00:00:35sSchemas dumped: 1Tables dumped: 8Uncompressed data size: 584.89 MBCompressed data size: 12.02 MBCompression ratio: 48.7Rows written: 28000016Bytes written: 12.02 MBAverage uncompressed throughput: 16.49 MB/sAverage compressed throughput: 338.96 KB/s
再來查看備份路徑下的文件,
.json 后綴的為元數(shù)據(jù)文件,比如備份開始時間,備份結(jié)束時間,備份的用戶,每張表的數(shù)據(jù)字典等信息。
剩下的即為備份的數(shù)據(jù)集,默認 ZSTD 壓縮。
2.dump_schemas
dump_instance 主要用來備份整個 MySQL 實例,如果只想備份單個數(shù)據(jù)庫,用 dump_schemas 更加簡單。
dump_schemas 參數(shù)除了要指定具體的數(shù)據(jù)庫名,其余的參數(shù)和 dump_instance 一樣
# 備份指定的數(shù)據(jù)庫backup_schema = ["ytt"]
# 備份路徑backup_path='/tmp/ytt_backup_schemas';
# 備份選項backup_options = {"consistent":True,"threads":4}
以下為 dump_schemas 備份的結(jié)果和 dump_instance 一樣。
Duration: 00:00:32sSchemas dumped: 1Tables dumped: 8Uncompressed data size: 584.89 MBCompressed data size: 12.02 MBCompression ratio: 48.7Rows written: 28000016Bytes written: 12.02 MBAverage uncompressed throughput: 18.15 MB/sAverage compressed throughput: 373.01 KB/s
3.load_dump
備份好了后,用 load_dump 恢復(fù)下數(shù)據(jù)庫 ytt 的備份集,
# 刪除原數(shù)據(jù)庫mysql> drop database ytt;Query OK, 8 rows affected (0.27 sec)
# 創(chuàng)建指定數(shù)據(jù)庫ytt.mysql> create database ytt;Query OK, 1 row affected (0.01 sec)
# 用于恢復(fù)的備份集目錄restore_url = '/tmp/ytt_backup_schemas'
# 恢復(fù)選項:是否對恢復(fù)的表做樣例數(shù)據(jù)收集,是否延遲建立索引,恢復(fù)指定的數(shù)據(jù)庫等。restore_options={"analyzeTables":"on","deferTableIndexes":"all","includeSchemas":["ytt"]}
恢復(fù)過程如下:
這里要說明下,load_dump 恢復(fù)數(shù)據(jù)的線程數(shù)量取決于之前備份集的線程數(shù)量。
恢復(fù)信息,由于筆記本虛擬機性能太差,數(shù)據(jù)僅供參考。
Executing common postamble SQL
40 chunks (28.00M rows, 584.89 MB) for 6 tables in 1 schemas were loaded in 3 min 30 sec (avg throughput 2.79 MB/s)0 warnings were reported during the load.
總結(jié):
本篇介紹了 MySQL 8.0.21 發(fā)布的高性能邏輯備份恢復(fù)工具,可以完美替換性能低下的傳統(tǒng)備份工具 mysqldump 或者 mysqlpump。
總結(jié)
以上是生活随笔為你收集整理的mysql 8.0数据备份恢复_MySQL 8.0 增强逻辑备份恢复工具介绍-爱可生的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sql server cdc 清理_基于
- 下一篇: mysql数据库优化清理_mysql 数