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
数据库导入
-
mysql -h localhost -u root -p(进入mysql下面)
-
create database abc;(创建数据库)
-
show databases;(就可看到所有已经存在的数据库,以及刚刚创建的数据库abc)
-
use abc;(进入abc数据库下面)
-
show tables;(产看abc数据库下面的所有表,空的)
-
source /var/test.sql(导入数据库表)
-
show tables;(查看abc数据库下面的所有表,就可以看到表了)
-
desc pollution;(查看表结构设计)
-
select * from pollution;
-
exit(或者ctrl + c)退出mysql
mysql超大文件导入参考:https://www.cnblogs.com/gaogaoxingxing/p/6066533.html