Docker MariaDB/Mysql dump

e1xvtsh3  于 2023-08-05  发布在  Docker
关注(0)|答案(3)|浏览(146)

如何从https://hub.docker.com/_/mariadb/上运行的容器中转储mysqldump?
我找不到任何有用的文档或数据?
备份和恢复数据库的任何方法。
这是我的continaer run命令:
第一个月

um6iljoc

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中有很多有用的使用技巧。

cbjzeqam

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是否有帮助。

myzjeezk

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

字符串

相关问题