微服务 教程
1085个小节阅读:195.4k
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
xxxxxxxxxx
docker pull mysql:5.7
xxxxxxxxxx
#启动Master
docker run -p 3350:3306 --name master -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
#启动Slave
docker run -p 3340:3306 --name slave -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
注意:
- --name:为容器指定名称,这里是master
- -p:将容器的指定端口映射到主机的指定端口,这里是将容器的3306端口映射到主机的3306端口
- -e:设置环境变量,这里是指定root账号的密码为root
- -d:后台运行容器,并返回容器ID
xxxxxxxxxx
[root@localhost mycat]# docker inspect master
[root@localhost mycat]# docker inspect slave
xxxxxxxxxx
docker ps -a 显示所有的容器,包括未运行的
注意:
是UP状态,表示正在运行中。
进入master容器内部
xxxxxxxxxx
docker exec -it master /bin/bash
修改mysqld.cnf配置
xxxxxxxxxx
#切换目录
cd /etc/mysql/mysql.conf.d/mysqld.cnf
#修改配置文件加入
[mysqld]
## 同一局域网内注意要唯一
server-id=100
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
注意:
vi my.cnf
对my.cnf进行编辑。此时会报出bash: vi: command not found
,需要我们在docker容器内部自行安装vim。使用apt-get install vim
命令安装vim如果报错:
Reading package lists... Done Building dependency tree
Reading state information... Done E: Unable to locate package vim更新apt-get
apt-get update
安装vim
apt-get install vim
xxxxxxxxxx
service mysql restart
docker start master
xxxxxxxxxx
mysql> GRANT replication SLAVE ON *.* TO 'slave' @'%' IDENTIFIED BY '123456';
和配置Master(主)一样,在Slave配置文件mysqld.cnf中添加如下配置
xxxxxxxxxx
[mysqld]
## 设置server_id,注意要唯一
server-id=101
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin
注意:
配置完成后也需要重启mysql服务和docker容器,操作和配置Master(主)一致。
在Master进入mysql
xxxxxxxxxx
show master status;
在Slave 中进入 mysql
xxxxxxxxxx
mysql>change master to master_host='172.17.0.2',master_user='slave',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=438;
参数:
- master_host: Master 的IP地址
- master_user: 在 Master 中授权的用于数据同步的用户
- master_password: 同步数据的用户的密码
- master_port: Master 的数据库的端口号
- master_log_file: 指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值
- master_log_pos: 从哪个 Position 开始读,即上文中提到的 Position 字段的值
- master_connect_retry: 当重新建立主从连接时,如果连接失败,重试的时间间隔,单位是秒,默认是60秒。
在Slave中开启主从复制
xxxxxxxxxx
mysql> start slave
在 Slave 的 MySQL 终端执行查看主从同步状态
xxxxxxxxxx
show slave status \G;