首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Docker MariaDB/Mysql转储

Docker MariaDB/Mysql转储
EN

Stack Overflow用户
提问于 2015-09-16 14:00:41
回答 2查看 10.7K关注 0票数 4

如何从运行/mariadb/上的容器中转储mysqldump?

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

任何备份和还原数据库的方法。

这是我连续运行的命令:

docker run --name myaapp-mariadb -v /databases/maria:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password -d mariadb:10

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-16 14:31:22

如果我们假设您以这种方式创建了mariadb服务器容器:

代码语言:javascript
运行
复制
docker run --name some-mariadb -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb:latest

然后从另一个客户端容器访问它:

代码语言:javascript
运行
复制
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中有更多有用的用法提示。

票数 11
EN

Stack Overflow用户

发布于 2020-09-29 06:23:05

接受的答案被接受&在所有意义上都是正确的。添加,这适用于将数据库映射到外部卷的情况。

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

代码语言:javascript
运行
复制
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行或终端执行以下命令

代码语言:javascript
运行
复制
docker exec mysqldb mysqldump --user=root --password=password dbname > /dir_path_on_your_machine/mysql-data/dump/db.sql

但是,使用上述命令创建的转储不会转储存储过程、函数和事件。为了做到这一点,我们需要额外的参数。

代码语言:javascript
运行
复制
--triggers          Dump triggers for each dumped table.
--routines          Dump stored routines (functions and procedures).
--events            Dump events.

因此,我们可以修改我们的命令,使其包含上述参数以获得所需的结果。

示例更新命令

代码语言:javascript
运行
复制
docker exec mysqldb mysqldump --routines --triggers --user=root --password=password dbname > /dir_path_on_your_machine/mysql-data/dump/db1.sql

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32610787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档