MySQL Docker 单一机器上如何配置自动备份
来源:互联网 发布:海淘iphone7知乎 编辑:程序博客网 时间:2024/06/03 23:08
本文介绍在单一宿主机上如何配置自动备份。建议使用两个容器,其中一个容器作为 MySQL 的服务器,用来处理数据;另一个容器用于自动备份。这样保证隔离,避免备份的容器影响到 MySQL Server 的可用性。
配置 MySQL 服务器容器
建立容器:
docker run --name mysql-a \-p 3306:3306 \-v /zc/mysql/datadir-a:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD='123456' -d mysql:latest
进入容器的 bash :
docker exec -it mysql-a bash
设置时区:
tzselect
输入tzselect命令后,根据屏幕提示输入大洲、城市。因为中国的东八区时间,所以选择 Asia/Hong Kong。做好选择后,输入命令:
cp /usr/share/zoneinfo/Asia/Hong_Kong /etc/localtime
来持久化你的设置。
进入 /etc/mysql/conf.d
cd /etc/mysql/conf.d
在这个目录下,可以创建一个新的文件。文件名可随便起,只要保证后缀名是 .cnf 即可。因为 MySQL 的官方镜像默认没有带 vim 编辑器,所以建议使用 cat 命令来编写配置文件:
cat >zhangchao.cnf <<EOF[mysqldump]user=rootpassword='123456'[mysqld]max_allowed_packet=8Mlower_case_table_names=1character_set_server=utf8max_connections=300max_connect_errors=200EOF
输入 exit 来退出容器,使用 docker stop mysql-a 和 docker start mysql-a 重启容器即可。
配置 MySQL 备份容器
建立容器:
docker run --name mysql-b \-v /zc/mysql/backup-a:/zc/mysql/backup \-e MYSQL_ROOT_PASSWORD='123456' -d mysql:latest
查看虚拟网络,其中 bridge 是 Docker 默认使用的虚拟网络:
docker network inspect bridge
在返回的结果中,找到 Containers 部分。内容如下:
"Containers": { "asdf2334a": { "Name": "mysql-a" "EndpointID": "sadfas234" "MacAddress": "...." "IPv4Address": "192.168.0.2" "IPv6Address": "" }}
Containers 列出了所有使用 bridge 网络的容器。因为我给 MySQL 服务器容器起名为 mysql-a,所以我查看Name 为 mysql-a 的配置。IPv4Address表示容器mysql-a的虚拟IP是 192.168.0.2 。记录下这个IP 。
进入容器的 bash :
docker exec -it mysql-b bash
更改时区,使用 tzselect 命令和cp命令,具体步骤与上面的mysql-a一样。
安装VIM和CRON定时任务:
apt-get update && apt-get install vimapt-get update && apt-get install cron
生成一个shell脚本文件来进行备份。
cat >/zc/mysql/backup.sh <<EOF#!/bin/shzcDATE=\$(date +%Y%m%d)mkdir /zc/mysql/backup/\$zcDATEmysqldump -h '192.168.0.2' -uroot -p'123456' --databases db1 > /zc/mysql/backup/\$zcDATE/db1.sqlmysqldump -h '192.168.0.2' -uroot -p'123456' --databases db2 > /zc/mysql/backup/\$zcDATE/db2.sqlEOF
MySQL上存在两个数据库,名称分别是 db1 和 db2,利用这种方式在硬盘上备份数据。-h表示远程的服务器IP。-u 和 -p 分别是远程服务器的用户名和密码。这里不建议使用 mysqldump 的 –all-database 选项。因为该选项会把远程MySQL里的系统数据库也备份下来,包括 root 用户的密码等内容。如果你要把导出的内容导入到别的机器上,这些系统设置(比如用户名和密码)会覆盖你的机器上原来的设置。
设置定时任务的启动时间:
crontab -e
在打开的文件中输入一下内容:
0 23 * * * sh /zc/mysql/backup.sh
系统默认使用VIM打开这个文件。修改完后用 wq 命令保存文件。
启动定时任务的服务:
service cron start
然后退出容器即可。
- MySQL Docker 单一机器上如何配置自动备份
- 配置mysql自动备份
- Linux上自动备份MySQL
- Linux上自动备份MySQL
- mac上 mysql数据库自动备份
- linux的docker上如何安装mysql
- Linux的Docker上如何安装MySQL
- linux的docker上如何安装mysql
- Centos7 的Docker上如何安装MySQL
- Win7下配置MySql定时自动备份
- linux 配置mysql 自动备份任务
- Win7下配置MySql定时自动备份
- centos下自动备份mysql,将备份文件转到其他机器备份
- mysql相关包括事件、事务、以及服务器上自动备份
- CentOS6.5 上crontab每天自动备份mysql数据库
- 使用python如何自动生成docker nginx反向代理配置?
- 利用sqlyog配置MySQL自动备份sql文件
- MySql自动备份数据库, 数据库主(master)从(slave)配置
- memcache与memcached的区别
- 数组中
- 微信小程序一(开始构建)
- js对子节点操作
- UITableView中Group的顶部出现空白
- MySQL Docker 单一机器上如何配置自动备份
- 3075 走捷径
- Android官方开发文档Training系列课程中文版:线程执行操作之线程间通讯
- Java递归实现字符串全排列
- 异常的基本概念
- CSS3 动画卡顿解决方案
- 几种基本的插入排序
- Ubuntu12.04下安装配置Android SDK NDK
- 『Scrapy』日常工作和学习中所遇到的坑及解决办法——长期更新