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