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

本文详细介绍在Docker环境下MySQL数据库的备份与恢复方法,包括全库、单一表及特定数据库的备份策略,同时提供了自动备份脚本及crontab定时任务设置教程。

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

1.查看当前启动的mysql运行容器

docker ps 


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

docker exec -i(不要加t参数,t:开启伪终端,不然备份的表为空表)  mysql mysqldump -uroot -p123456 paas_portal > /cloud/sql/paas_portal.sql
3.只导数据不导结构

    mysqldump -t 数据库名 -uroot -p > xxx.sql 

docker exec -it mysql mysqldump -t -uroot -p123456 paas_portal >/cloud/sql/paas_portal_dml.sql
4.只导结构不导数据

mysqldump --opt -d 数据库名 -u root -p > xxx.sql 

docker exec -it mysql mysqldump  --opt -d   -uroot -p123456 paas_portal >/cloud/sql/paas_portal_ddl.sql 
5.导出特定表的结构

mysqldump -uroot -p -B 数据库名 --table 表名 > xxx.sql

docker exec -it mysql mysqldump -uroot -p -B paas_portal --table user > user.sql
这是工作中用到的,记录下来,以供学习参考
--------------------- 
作者:harris135 
来源:优快云 
原文:https://blog.youkuaiyun.com/harris135/article/details/79663901 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

linux 下 自动备份docker 下(MySQL容器内备份)内 mysql 数据

docker exec -i mysql bash <<'EOF'
 
mkdir /backup/mysql/$(date +%Y%m%d)
 
# 备份指定数据库
mysqldump -uroot -padmin discuz > /backup/mysql/$(date +%Y%m%d)/discuz_$(date +%Y%m%d_%H%M%S).sql
 
# 备份所有数据库
mysqldump --no-defaults --events --all-databases -uroot -padmin > /backup/mysql/$(date +%Y%m%d)/all_$(date +%Y%m%d_%H%M%S).sql
 
exit
 
EOF
 
mkdir /backup/mysql/$(date +%Y%m%d)
 

 //从容器复制到主机:sudo docker cp containerID:container_path host_path
docker cp mysql:/backup/mysql/$(date +%Y%m%d) /backup/mysql/
新增crontab任务:

crontab -e
 
# 每天下午一点执行脚本
0 13 * * * bash /backup/mysql.sh
重启crontabd 服务

service crond restart

tail -f /var/log/cron 查看定时任务的日志

docker exec -it mysql bash 进入MySQL容器   进入/backup/mysql下查看备份的数据
--------------------- 
作者:爱拍照的程序员Ray 
来源:优快云 

 

 

docker容器化mysql备份单一表数据

非常简单(标题有点绕)
与正常备份一样,只不过是在docker容器内,失败会发邮件到邮箱,会删除超过7天的数据


基础命令介绍:
docker exec 在运行的容器中执行命令
参数:
-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端


脚本:
#!/bin/bash
docker exec -i docker_mysql mysqldump -uroot -pffsdf epel >/backup/$(date +%F).sql 
if [ $? -eq 0 ];then
find /backup/ -type f -mtime +7|xargs rm -f
else
echo "请登录主机“127.0.0.1"检查mysql备份是否正常,备份目录/backup/。" | mail -s "备份失败" 123456789@qq.com
fi
加一个crontab就可以用了,这是一个最简单的备份哦


docker exec -i (一定不要带-t)这样备份会是空表,切记。看清上边的命令介绍,docker exec -it 相当于交互打开一个伪终端执行备份操作crontab是无法执行的。

原文:https://blog.youkuaiyun.com/MR1269427885/article/details/82978311 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

docker拷贝本地文件到容器

docker cp 本地路径 容器长ID:容器路径

MySQL命令行导入导出数据库

MySQL命令行导出数据库:
1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录,如我输入的命令行:cd C:\Program Files\MySQL\MySQL Server 4.1\bin
(或者直接将windows的环境变量path中添加该目录)

2,导出数据库:mysqldump -u 用户名 -p 数据库名 > 导出的文件名,如我输入的命令行:mysqldump -u root -p news > news.sql   (输入后会让你输入进入MySQL的密码)
(如果导出单张表的话在数据库名后面输入表名即可)

3、会看到文件news.sql自动生成到bin文件下,命令行导入数据库:

1,将要导入的.sql文件移至bin文件下,这样的路径比较方便
2,同上面导出的第1步
3,进入MySQL:mysql -u 用户名 -p ,如我输入的命令行:mysql -u root -p   (输入同样后会让你输入MySQL的密码)
4,在MySQL-Front中新建你要建的数据库,这时是空数据库,如新建一个名为news的目标数据库
5,输入:mysql>use 目标数据库名,如我输入的命令行:mysql>use news;
6,导入文件:mysql>source 导入的文件名;如我输入的命令行:mysql>source news.sql;

 

 

docker mysql数据导入

一、主机与docker容器之间数据导入、导出

从主机复制到容器

sudo docker cp host_path containerID:container_path

从容器复制到主机

sudo docker cp containerID:container_path host_path

二、mysql source导入*.sql文件

进入数据库容器

docker exec -it containerID bash

数据库导入

 
  1. mysql -h localhost -u root -p(进入mysql下面)

  2. create database abc;(创建数据库)

  3. show databases;(就可看到所有已经存在的数据库,以及刚刚创建的数据库abc)

  4. use abc;(进入abc数据库下面)

  5. show tables;(产看abc数据库下面的所有表,空的)

  6. source /var/test.sql(导入数据库表)

  7. show tables;(查看abc数据库下面的所有表,就可以看到表了)

  8. desc pollution;(查看表结构设计)

  9. select * from pollution;

  10. exit(或者ctrl + c)退出mysql

mysql超大文件导入参考:https://www.cnblogs.com/gaogaoxingxing/p/6066533.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值