如何从https://hub.docker.com/_/mariadb/上运行的容器中转储mysqldump?我找不到任何有用的文档或数据?备份和恢复数据库的任何方法。这是我的continaer run命令:第一个月
um6iljoc1#
如果我们假设您以这种方式创建了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中有很多有用的使用技巧。
cbjzeqam2#
接受的答案在所有意义上都是正确的。添加,这是针对我们将数据库Map到外部卷的情况。因此,例如,如果容器是使用以下命令创建的
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是否有帮助。
myzjeezk3#
已接受的答案看起来不推荐用于mariadb。从11.0.1 mariadb开始,mysqldump被弃用并从mariadb Docker官方镜像中删除。使用mariadb-dump代替。(https://mariadb.com/kb/en/mysqldump/)mariadb备份命令示例:
docker exec -t <containerID> mariadb-dump -u <USER> -p --all-databases > dump_db_`date +%d-%m-%Y"_"%H_%M_%S`.sql
字符串
3条答案
按热度按时间um6iljoc1#
如果我们假设您以这种方式创建了mariadb服务器容器:
字符串
然后从另一个客户端容器访问它:
型
在mysql官方镜像page中有很多有用的使用技巧。
cbjzeqam2#
接受的答案在所有意义上都是正确的。添加,这是针对我们将数据库Map到外部卷的情况。
因此,例如,如果容器是使用以下命令创建的
字符串
然后,我们可以从cmd行或终端执行下面的命令
型
但是,使用上述命令创建的转储不会转储存储过程、函数和事件。我们将需要额外的参数与
型
因此,我们可以修改我们的命令以包含上述参数以获得所需的结果。
更新命令示例
型
如果您遇到任何与导入相关的错误,请检查this是否有帮助。
myzjeezk3#
已接受的答案看起来不推荐用于mariadb。
从11.0.1 mariadb开始,mysqldump被弃用并从mariadb Docker官方镜像中删除。使用mariadb-dump代替。(https://mariadb.com/kb/en/mysqldump/)
mariadb备份命令示例:
字符串