docker mysql 主从复制
1.环境准备:
alpine-linux x86_64 3.8
docker-ce 18
mysql 5.7
配置软件源 docker加速器什么的就不再说了 直接开始搭建mysql 主从复制
2. 拉取镜像
docker pull mysql:5.7
运行一个实例:
master: 端口是3339 密码 1-6
docker run -p 3339:3306 --name master -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
slave:端口是3340 密码1-6
docker run -p 3340:3306 --name slave -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
docker ps 检查正在运行的容器
此时可以使用Navicat等工具测试连接mysql
3.配置
master :
docker exec -it 9b321bb7d73c /bin/bash
apt-get update && apt-get install vim -y
vim /etc/mysql/my.cnf
添加如下内容:
[mysqld]
server-id=100 局域网内唯一就行
log-bin=mysql-bin 二进制日志功能 这步很关键
service mysql restart
然后容器就自动退出了
docker restart 9b321bb7d73c 重启下 运行起来
再次进入容器:
docker exec -it 9b321bb7d73c /bin/bash
登陆mysql
创建数据库用户并授权 用于复制
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
slave:
docker exec -it 6734835934c5 /bin/bash
apt-get update && apt-get install vim -y
vim /etc/mysql/my.cnf
添加如下内容:
[mysqld]
server-id=101
log-bin=mysql-slave-bin 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
relay_log=edu-mysql-relay-bin relay_log配置中继日志
service mysql restart
重启容器:
docker restart 6734835934c5
4.链接master和slave
master:
进入容器登陆mysql:
执行:show master status;
记录下File和Position字段 的值
我这里 file 是mysql-bin.000001 position 是617
slave :
进入容器登陆mysql:
执行:
change master to master_host='172.17.0.2', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 617, master_connect_retry=30;
这条命令说明:
master_host :Master的地址,指的是容器的独立ip,可以通过docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称|容器id
查询容器的ip
master_port:Master的端口号,指的是容器的端口号
master_user:用于数据同步的用户
master_password:用于同步的用户的密码
master_log_file:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值
master_log_pos:从哪个 Position 开始读,即上文中提到的 Position 字段的值
master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒
在Slave 中的mysql终端执行show slave status \G;
用于查看主从同步状态
正常情况下,SlaveIORunning 和 SlaveSQLRunning 都是No,因为我们还没有开启主从复制过程。使用start slave
开启主从复制过程,然后再次查询主从同步状态show slave status \G;
SlaveIORunning 和 SlaveSQLRunning 都是Yes,说明主从复制已经开启。此时可以测试数据同步是否成功
tags:
相关文章
- MySQL双主主从复制:实现高可用(mysql双主主从)
- 揭秘MySQL密码:走近藏在背后的秘密(查看mysql密码)
- 写入数据Java实现MySQL数据写入(java向mysql)
- MySQL数据库:修改数据步骤指引(mysql数据库修改数据)
- Mysql:主从复制实现的一种能力。(mysql一主多从)
- 什么MySQL中添加索引的命令详解(mysql添加索引命令是)
- mysql容器化部署:利用 Docker 搭建 Redis MySQL 集群服务(dockerredis)
- 重装系统后恢复Mysql数据库(重装系统后恢复mysql)
- MySQL实现跳过主从复制的方法(mysql跳过主从)
- 使用 Docker 轻松安装 MySQL 数据库(docker安装mysql)
- MySQL实现消息队列的绝佳方案(mysql消息队列)
- MySQL主从复制——保障数据安全(mysql主从作用)
- 式MySQL嵌入式:让数据库性能跃上新台阶(mysql嵌入)
- Mysql主从复制:安装步骤详解(mysql主从安装)
- MySQL之Java实现主从复制(java mysql主从)
- MySQL 主从复制故障解决方案(mysql 主从修复)
- Mysql主从复制环境的修复(mysql 主从修复)
- MySQL主从复制实现只读访问(mysql中主从复制只读)
- MySQL中TSQL语法使用详解(mysql中t-sql)