[英]How to Import large or moderate size SQL dump into Mysql/MariaDB using docker
我是 Docker 的新手,想創建 MariaDB 容器。 在啟動容器時,我想導入一個大小為 50MB 的 SQL 轉儲。 我正在使用以下 Docker 撰寫文件,該文件目前需要超過 1 小時才能導入 SQL 轉儲。
services:
mariadb:
image: mariadb:10.1
container_name: mariadb
volumes:
- ./mountedVolume/dbvolume:/var/lib/mysql
- ./webAppDatabase/dctdatabase/appDB.sql:/docker-entrypoint-initdb.d/appDB.sql
command: --max_allowed_packet=500M
environment:
MYSQL_ROOT_PASSWORD: root123
ports:
- "3306:3306"
在導入 SQL 轉儲之前,我嘗試使用以下 Mysql 設置
SET @OLD_AUTOCOMMIT=@@AUTOCOMMIT, AUTOCOMMIT = 0;
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS = 0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS = 0;
導入 SQL 轉儲后,我已重置值
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
SET AUTOCOMMIT = @OLD_AUTOCOMMIT;
COMMIT;
但上述設置沒有幫助。 我也使用了鏈接上發布的解決方案,但沒有幫助。
我已經嘗試將 SQL 文件分成更小的塊並將其導入 MariaDB 容器,但它需要相同的時間
我只是想在更短的時間內導入約 50MB 的 SQL 轉儲,我已經嘗試了互聯網上所有可能的方法,但沒有一個解決方案可以幫助我縮短時間。 請讓我知道是否有解決方法。
經過長時間的搜索,我得到了解決方案。 聽到我將解釋 3 種不同的方法來使用性能統計導入/導出Mysql/MariaDB 數據庫。
導入 SQL 轉儲的傳統方式需要大量時間來導入數據,因為它必須先創建表,然后按順序導入數據。但仍然可以通過將 CREATE/INSERT 語句分隔在兩個不同的文件中來提高性能並執行它。 它只會比傳統的導入方式提高一點性能。
為了提高更多性能,我們可以 go 以gz格式導入/導出SQL 轉儲。!!
例子:
導出數據庫:
mysqldump -u [user] -p [DATA_BASE_NAME] | gzip > [SQL_FILE_DUMP.sql.gz]
導入數據庫:
gunzip < [SQL_FILE_DUMP.sql.gz] | mysql -u [user] -p[password] [DATA_BASE_NAME]
為了提高導入/導出性能,我們應該使用 go 來獲取/var/lib/mysql目錄的 Mysql/MariaDB 快照。!!。
[注意:由於我使用的是InnoDB表,因此我沒有嘗試使用其他數據庫引擎,我在其中 一篇博客中找到了解決方案]
導出數據庫:
docker run --rm --volumes-from mariadb carinamarina/backup backup --source /var/lib/mysql/ --stdout --zip > db-data-volume.tar.gz
導入數據庫:
docker run --rm --interactive --volumes-from mariadb carinamarina/backup restore --destination /var/lib/mysql/ --stdin --zip < db-data-volume.tar.gz
導入 ~50mb 的 Mysql/MariaDB 數據的測試用例統計數據:
___Method_______________Size_____________Time Taken in minits_____________
Traditional way 50mb 50 min
gzip / .gz 50mb 29 min
/var/lib/mysql/ 50mb 0.2 min or 20 seconds
[注:測試用例在 Ubuntu 14.04、Intel® Core™ i5-3470 CPU 和 4gb 內存中執行。 可以在高端系統中提高性能]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.