簡體   English   中英

Docker MariaDB/Mysql 轉儲

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM