如何从运行/mariadb/上的容器中转储mysqldump?
我找不到任何有用的文件或数据?
任何备份和还原数据库的方法。
这是我连续运行的命令:
docker run --name myaapp-mariadb -v /databases/maria:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password -d mariadb:10
发布于 2015-09-16 14:31:22
如果我们假设您以这种方式创建了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中有更多有用的用法提示。
发布于 2020-09-29 06:23:05
接受的答案被接受&在所有意义上都是正确的。添加,这适用于将数据库映射到外部卷的情况。
因此,例如,如果容器是使用以下命令创建的
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
如果遇到任何与导入相关的错误,请检查this是否有所帮助。
https://stackoverflow.com/questions/32610787
复制相似问题