docker 中mysql备份

以下示例均在镜像mysql:5.7.22基础上应用

一、备份mysql

1.创建容器testmysql

docker run -p 3307:3306 --name testmysql -e MYSQL_ROOT_PASSWORD=12345 -d mysql:5.7.22

2.创建数据库test、数据表test1

docker exec -it testmysql /bin/bash //进入容器

mysql -uroot -p //进入数据库

show databases; //查询数据库
create database test; // 创建名为test数据库
use test;//切换到数据库 test
create table test (id int);//创建名为test的数据表
insert into test (id) values (1); //插入一条数据
添加数据

2.mysqldump 备份

导出命令1(建议使用此命令)

docker exec -it mysql_server【docker容器名称/ID】 mysqldump --defaults-extra-file=/etc/mysql/my.cnf test_db【数据库名称】 > /opt/sql_bak/test_db.sql【导出表格路径】

(1)修改/etc/mysql/my.cnf文件

vim /etc/mysql/my.cnf

[mysqldump]
user=your_backup_user_name
password=your_backup_password
image.png

进入容器后执行vim /etc/mysql/my.cnf,如果报bash: vim: command not found
在容器内执行以下代码下载vim即可

apt-get update
apt-get install vim

修改后,exit退出容器,重启以下容器 docker restart testmysql【容器名称/id】

执行导出命令

docker exec -it testmysql mysqldump --defaults-extra-file=/etc/mysql/my.cnf test > /home/iotdev/cjj/test.sql

导出命令2
docker exec -it mysql_server【docker容器名称/ID】 mysqldump -uroot -p12345【数据库密码】 test_db【数据库名称】 > /opt/sql_bak/test_db.sql【导出表格路径】

docker exec -it testmysql mysqldump -p12345 test > /home/iotdev/cjj/test.sql

如果使用这个命令,导出的文件会有警告 ,在导入的时候报这个错误,需要把警告删除再导入


导入

二、导入备份

1.创建容器testmysql1

docker run -p 3308:3306 --name testmysql1 -e MYSQL_ROOT_PASSWORD=1234 -d mysql:5.7.22

2.导入命令

(1)先将文件导入到容器

docker cp **.sql 【容器名】:/root/

(2)进入容器

docker exec -ti 【容器名/ID】/bin/bash

(3)创建数据库

mysql -uroot -p
create database test

(4)将文件导入数据库

 mysql -uroot -p 【数据库名】 < ***.sql

三、加入定时任务
用crontab添加定时器,参考详情 https://www.cnblogs.com/peida/archive/2013/01/08/2850483.html

1.添加myql_test.sh文件

#!/bin/bash

data_name="rap2-mysql-new"
data_dir="/mysql_data/rap2-new"
database="RAP2_DELOS_APP"
time="date +%H:%M"
docker exec data_name sh -c "rm -rf /database"
docker exec data_name sh -c "mkdirdatabase"
docker exec data_name sh -c "mysqldump -uroot -pfewsdkjk13_ --databasesdatabase > /database/data_`date +%Y%m%d_%H:%M`.txt" docker cpdata_name:database/data_dir

mv data_dir/database/data_date +%Y%m%d_%H:%M.sql data_dir/database/data_date +%Y%m%d_%H:%M.txt

将备份文件发送到邮箱 数据量小的情况下 服务器需要安装 yum install mailx 并配置 yum install sharutils

修改 vi /etc/mail.rc

添加以下配置

set from=shenjianyu@thinktrader.net smtp=smtp.exmail.qq.com

set smtp-auth-user=shenjianyu@thinktrader.net smtp-auth-password=邮箱密码

set smtp-auth=login

echo -e "rap2备份文件" | mail -s 'rap2备份' -a data_dir/database/data_date +%Y%m%d_%H:%M.txt 845142388@qq.com

if [ time = "12:00" ] then echo -e "rap2备份文件" | mail -s 'rap2备份' -adata_dir/database/data_`date +%Y%m%d_%H:%M`.txt 845142388@qq.com fi if [time = "20:00" ]
then
echo -e "rap2备份文件" | mail -s 'rap2备份' -a data_dir/database/data_date +%Y%m%d_%H:%M.txt chenjiajun@cmiot.chinamobile.com
fi
find $data_dir -mtime +7 -name 'data_*.txt' -exec rm -rf {} ;

以上代码和之前的命令有些不一样,之前的命令是直接生成到宿主机,但不知为什么,直接执行.sh文件是可以正常生成文件的,但使用定时器生成的文件内容是空的,求大神答疑解惑。

问题代码如下:

#!/bin/bash
data_dir="/home/iotdev/cjj/"
docker exec -it testmysql mysqldump -uroot -p12345 test > "$data_dir/data_`date +%Y%m%d_%H:%M`.sql"
2.添加定时任务

以下添加的是每分钟执行一次,可根据自己情况配置

crontab -e
* * * * * sh /home/cjj/mysql_test.sh 【.sh文件的位置】

*/15 * * * * sh /opt/cjj/rap2/rap2-delos-deploy/rap2_mysql_baskup.sh

四、添加脚本,删除时间太久的文件

// 删除60分钟前的文件
find $data_dir$container_dir -amin +60 -name 'data_*.sql' -exec rm -rf {} \; 

//删除7天前的数据
find $data_dir$container_dir -mtime +7 -name 'data_*.sql' -exec rm -rf {} \; 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,319评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,801评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,567评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,156评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,019评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,090评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,500评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,192评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,474评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,566评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,338评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,212评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,572评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,890评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,169评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,478评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,661评论 2 335