Docker使用mysqldump命令备份导出mysql容器中的数据

本文详细介绍了如何在Docker环境中使用mysqldump命令,包括全量备份、结构与数据分离、表结构备份、特定表备份,以及如何导入恢复数据库。适合Docker用户和MySQL管理员进行容器数据管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Docker使用mysqldump命令备份导出mysql容器中的数据

1、查看Docker中运行的容器

[root@instance-0pk09gjj ~]# docker ps

2、使用mysqldump命令备份导出数据库中的所有表结构和数据

[root@instance-0pk09gjj home]# mkdir bak

[root@instance-0pk09gjj /]# docker exec -it mysql01 mysqldump -uroot -proot demo > /home/bak/demo.sql

3、使用mysqldump只导出数据不导出表结构

[root@instance-0pk09gjj /]# docker exec -it mysql01 mysqldump --opt -t -uroot -proot demo > /home/bak/demo2.sql

4、使用mysqldump只导出表结构不导出数据

[root@instance-0pk09gjj /]# docker exec -it mysql01 mysqldump --opt -d -uroot -proot demo > /home/bak/demo1.sql

5、使用mysqldump导出特定表的结构

[root@instance-0pk09gjj /]# docker exec -it mysql01 mysqldump -uroot -proot -B demo --table playmath_user > /home/bak/playmath_user.sql

Docker执行导入(恢复)数据库命令:

[root@instance-0pk09gjj ~]# docker exec -i mysql01 mysql -uroot -proot playmath_sso < /home/bak/playmath_sso.sql

 

### 如何在 Docker 容器使用 `mysqldump` 导出 MySQL 数据库 #### 使用 `docker exec` 执行 `mysqldump` 为了从 Docker 容器导出 MySQL 数据库,可以利用 `docker exec` 命令,在指定的容器内部执行 `mysqldump` 工具。这允许创建数据库的一个逻辑备份副本。 对于具体操作而言,假设有一个正在运行的 MySQL 容器,并希望将其内的某个特定数据导出为 SQL 文件: ```bash docker exec <container_name_or_id> mysqldump -u<username> -p<password> <database_name> > /path/to/backup.sql ``` 此命令会连接到名为 `<container_name_or_id>` 的容器并从中提取由 `<database_name>` 指定的数据表结构与记录,最终保存至主机上的 `/path/to/backup.sql` 路径下[^1]。 例如,如果要从 ID 或者名字叫做 "mysql_container" 的容器里边把叫作 "my_database" 的数据库转储出来,则应输入如下指令: ```bash docker exec mysql_container mysqldump -uroot -psecret my_database > ./backups/my_backup_$(date +%F_%T).sql ``` 这里 `-uroot` 表明是以 root 用户身份登录;而 `-psecret` 则指定了该用户的密码 secret(实际应用时应当替换为自己真实的凭证)。最后部分通过重定向符 (`>`) 将输出写入到了当前目录下的 backups 子文件夹之中,同时给文件名加上了时间戳以便区分不同版本的备份[^3]。 #### 自动化定期备份过程 考虑到手动触发备份可能不够高效,还可以考虑设置定时任务来自动完成这项工作。比如可以在宿主机上配置 cron job 来周期性地调用上述提到过的命令实现无人值守式的维护作业。 另外值得注意的是,当涉及到敏感信息保护的时候,建议采用更安全的方式处理认证凭据而不是简单地暴露于 shell 历史记录或脚本当中。一种方法就是借助环境变量传递参数,像这样: ```bash export MYSQL_ROOT_PASSWORD="your_secure_password" docker exec some-mysql sh -c 'exec mysqldump "$MYSQL_DATABASE" -uroot -p"$MYSQL_ROOT_PASSWORD"' > /mnt/backups/db-backup-$(date +\%Y-\%m-\%d_\%H:\%M:\%S).sql unset MYSQL_ROOT_PASSWORD ``` 这样做不仅提高了安全性还增强了灵活性[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值