由于主机有限,现在采用docker来快速搭建。基于centos7
- 安装docker ```bash yum -y update
yum install -y docker
2. 下载mysql的镜像
```bash
docker pull mysql:5.7
- 分别启动两个mysql容器 来当做主和从节点 ```bash 主节点 docker run -p 3339:3306 —name jxc-mysql-master -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 从节点 docker run -p 3340:3306 —name jxc-mysql-slave -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
4.进入主节点 所在的容器 进行配置
```bash
进入主节点 所在的容器
docker exec -it jxc-mysql-master /bin/bash
5.在主节点的容器内,切换到/etc/mysql目录下
cd /etc/mysql
- 在主节点的容器内, 先更新源 ,为了安装vim
7.在主节点的容器内,编辑配置文件 ```bash vi my.cnfapt-get update
apt-get install vim
在my.cnf中添加如下配置: [mysqld]
同一局域网内注意要唯一
server-id=100
开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
8. 在主节点的容器内,重新启动下mysql
```bash
service mysql restart
重启了mysql后,会导致容器退出,所以需要重新启动容器
docker start jxc-mysql-master
重启容器后,需要再进入主节点的容器内,进入mysql的命令行交互界面
先进入容器
docker exec -it jxc-mysql-master /bin/bash
进入mysql的命令行交互界面
mysql -u root -p
创建主从同步的账号和权限
创建账号
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
创建权限
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
获取主节点的binlog的二进制文件
show master status;
如下的截图
注意这里的File名称和Position的值 这个值会配置给从节点
12.到此主节点的配置完毕,主节点已经开启了bin-log日志,下面开始配置从节点
docker exec -it jxc-mysql-salve /bin/bash
- 然后也需要修改配置文件,也需要安装vim,需要重复第6步
- 修改配置文件 从节点的重点是需要配置中继日志 ```bash vi my.cnf
添加如下配置 [mysqld]
设置server_id,注意要唯一
server-id=101
开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin
relay_log配置中继日志
relay_log=edu-mysql-relay-bin
15. 重复8 9 10 这三步 重新进入子节点
15. 获取docker里面某个容器的ip 这里是获取主容器的ip
```bash
docker inspect 容器名称|容器id
比如
docker inspect jxc-mysql-master
或者
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称|容器id
比如
docker inspect --format='{{.NetworkSettings.IPAddress}}' jxc-mysql-master
- 在从节点配置主节点的配置信息 注意master_host是主节点的ip master_port是主节点的mysql的端口,是容器的端口 master_log_file 和 master_log_pos 是在主节点的获取到的值 ```bash change master to master_host=’172.17.0.3’, master_user=’slave’, master_password=’123456’, master_port=3306, master_log_file=’mysql-bin.000007’, master_log_pos= 154, master_connect_retry=30;
18. 在从节点 的mysql 的互动命令行 开启主从配置
```bash
start slave;
查看主从状态
show slave status \G;