![](/img/trans.png)
[英]Restore sql dump into running mysql/mariadb docker container
[英]Docker MariaDB/Mysql dump
我如何從在https://hub.docker.com/_/mariadb/上運行容器進行 mysqldump?
我找不到任何有用的文檔或數據?
任何備份和恢復數據庫的方法。
這是我的 continaer 運行命令:
docker run --name myaapp-mariadb -v /databases/maria:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password -d mariadb:10
如果我們假設您以這種方式創建了 mariadb 服務器容器:
docker run --name some-mariadb -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb:latest
然后從另一個客戶端容器訪問它:
docker run -it --link some-mariadb:mysql \
--rm mariadb:latest \
sh -c 'exec mysqldump -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD" database_name' > database_name_dump.sql
mysql 官方圖片頁面中有更多有用的使用技巧。
接受的答案在所有意義上都代表接受和正確。 添加,這適用於我們將數據庫映射到外部卷的情況。
因此,例如,如果容器是使用以下命令創建的
docker run --name mysqldb -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -v /dir_path_on_your_machine/mysql-data:/var/lib/mysql -d mariadb:latest
然后,我們可以從 cmd 行或終端執行以下命令
docker exec mysqldb mysqldump --user=root --password=password dbname > /dir_path_on_your_machine/mysql-data/dump/db.sql
但是,使用上述命令創建的轉儲不會轉儲存儲過程、函數和事件。 我們需要額外的參數才能做到這一點
--triggers Dump triggers for each dumped table.
--routines Dump stored routines (functions and procedures).
--events Dump events.
因此,我們可以修改我們的命令以包含上述參數以獲得所需的結果。
示例更新命令
docker exec mysqldb mysqldump --routines --triggers --user=root --password=password dbname > /dir_path_on_your_machine/mysql-data/dump/db1.sql
如果您遇到任何與導入相關的錯誤,請檢查這是否有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.