Docker方式搭建MySQL 5.7主从复制(一主一从),附带备份主库恢复到从库教程

说明

MySQL使用的是5.7版本,其实用Docker装数据库就是图个方便,生产环境还是不建议哈!

本文重点在主从复制,需要部署单机版请查看另外一个教程:CentOS 7 使用Docker方式安装部署MySQL 5.7

第一步,分别在机器上装好docker并启动(不会使用docker的话请先百度了解一下)

第二步,分别在机器上创建挂载目录,如下

主库机器

mkdir -p /usr/local/docker/mysql/data/  

从库机器

mkdir -p /usr/local/docker/mysql/data/

第三步,分别以docker方式部署mysql,如下

主库

docker run -dit --name mysql-5.7-master -p 3306:3306 -v /etc/localtime:/etc/localtime:ro -v /usr/local/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my1234 mysql:5.7 --lower_case_table_names=1 --server-id=100 --log-bin=mysql-bin

从库

docker run -dit --name mysql-5.7-slave -p 3306:3306 -v /etc/localtime:/etc/localtime:ro -v /usr/local/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my1234 mysql:5.7 --lower_case_table_names=1 --server-id=101 --log-bin=mysql-slave-bin --relay_log=edu-mysql-relay-bin --log_slave_updates=1
image.png

说明

  1. lower_case_table_names设置不区分大小写。
  2. MYSQL_ROOT_PASSWORD设置root用户密码,本例子中账号密码都设置为my1234,连接请用该账号密码。
  3. /etc/localtime:/etc/localtime:ro设置时区跟随宿主机。
  4. 端口随自己修改,修改后注意docker容器的映射端口要跟着改。
  5. server_id注意要唯一。
  6. log-bin开启二进制日志功能。
  7. relay_log配置中继日志。
  8. log_slave_updates复制的数据写入日志中。

第四步,主库创建数据同步的用户slave,如下

并授予slave用户REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据

# 进入容器
docker exec -it mysql-5.7-master /bin/bash
# 进入mysql
mysql -uroot -pmy1234
# 创建用户
CREATE USER 'slave'@'%' IDENTIFIED BY 'root';
# 授予用户
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
image.png

第五步,备份主库数据到从库(如果是新建数据库,跳过这一步),如下

1. 在主库上加锁,使只有只读权限,防止新数据的写入

# 进入容器
docker exec -it mysql-5.7-master /bin/bash
# 进入mysql
mysql -uroot -pmy1234
# 加锁
flush table with read lock;
image.png

2. 查看当前主库状态,记下这个数值,后面要用

show master status;
image.png

3. 备份数据

# 进入容器
docker exec -it mysql-5.7-master /bin/bash
# 进入mysql
mysql -uroot -pmy1234
# 备份数据
mysqldump -uroot -pmy1234 --all-databases|gzip > dump.sql.gz
# 释放锁
unlock tables;
image.png

4. 将文件传到从库所在机器,ip,路径自行替换

# 复制数据到宿主机
docker cp mysql-5.7-master:/dump.sql.gz /usr/local/docker/mysql
# 服务器传输
scp /usr/local/docker/mysql/dump.sql.gz root@从库机器ip:/usr/local/docker/mysql

5. 恢复数据到从库,路径自行替换

# 解压文件
gzip -d /usr/local/docker/mysql/dump.sql.gz
# 移动文件到挂载目录下
mv /usr/local/docker/mysql/dump.sql /usr/local/docker/mysql/data/dump.sql
# 进入容器
docker exec -it mysql-5.7-slave /bin/bash
# 进入mysql
mysql -uroot -pmy1234
# 恢复数据,慢慢等吧,比较耗时
source /var/lib/mysql/dump.sql

第六步,配置从库进行同步,如下

1. 配置同步

# 进入容器
docker exec -it mysql-5.7-slave /bin/bash
# 进入mysql
mysql -uroot -pmy1234
# 配置同步
change master to master_host='主库机器ip', master_user='slave', master_password='my1234', master_port=3306, master_log_file='mysql-bin.000002', master_log_pos=46781778;

说明

  1. master_user和master_password为第四步在主库创建的用户和密码
  2. master_log_file和master_log_pos均为第五步第2点查看的主库状态(新创建的库直接用"show master status;"命令查看主库状态即可得到)

2. 开启同步

# 开启同步
start slave;
# 查看从库同步状态
show slave status;
image.png

说明

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

推荐阅读更多精彩内容