Docker MariaDB/Mysql 转储

Docker MariaDB/Mysql dump

如何从 https://hub.docker.com/_/mariadb/ 上的 运行ning 容器中进行 mysqldump?

我找不到任何有用的文档或数据?

任何备份和恢复数据库的方法。

这是我的容器 运行 命令:

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 官方图片 page 中有更多有用的使用提示。

已接受的答案在所有意义上都被接受且正确。添加,这是针对我们已将数据库映射到外部卷的情况。

因此,例如,如果容器是使用以下命令创建的

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

然后,我们可以从命令行或终端执行以下命令

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

如果您遇到任何与导入相关的错误,请检查 this 是否有帮助。