当前位置:   article > 正文

MySQL5.7 设置主从同步_mysql5.7 主从配置

mysql5.7 主从配置

今天我们学习MySQL5.7的主从同步设置。

首先我们用docker搭建三台MySQL的数据库,然后。我们在这三个数据库上搭建主从同步

三台MySQL的名字分别为db1(3307端口),db2(3308端口),db3(3309端口),其中db1充当master主库,另外两天充当从库

 

一,创建所需目录

我们首先在自己的目录下创建一个mysql目录,在mysql目录中创建db1,db2,db3三个目录,用来存储一会创建的三个mysql容器的文件。

然后我们在这三个目录中分别创建三个目录名为data,log,conf 。然后再conf目录中再创建一个conf.d目录和一个mysql.conf.d目录,这两个目录均为空即可。

命令如下:

mkdir mysql

cd mysql

# 创建第一个目录db1

mkdir db1

cd db1

mkdir log

mkdir data

mkdir conf

mkdir conf/conf.d

# db2,db3同理,结构完全一致,不再赘述

。。。

然后我们进入~/mysql/db1ml

cd ~/mysql/db1

在db1中创建第一个mysql容器的启动脚本

vim startdb1.sh

docker run -p 3307:3306 --name db1 --restart=always --privileged=true \
-v /home/toyflivver/mysql/db1/conf:/etc/mysql \
-v /home/toyflivver/mysql/db1/data:/var/lib/mysql \
-v /home/toyflivver/mysql/db1/log:/var/log/mysql \
-v /etc/localtime:/etc/localtime:ro \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

然后我们运行器第一个mysql

sudo ./startdb1.sh

其余两个mysql容器的启动方式同理,不再赘述,仅贴出启动脚本:

docker run -p 3308:3306 --name db2 --restart=always --privileged=true \
-v /home/toyflivver/mysql/db2/conf:/etc/mysql \
-v /home/toyflivver/mysql/db2/data:/var/lib/mysql \
-v /home/toyflivver/mysql/db2/log:/var/log/mysql \
-v /etc/localtime:/etc/localtime:ro \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

docker run -p 3309:3306 --name db3 --restart=always --privileged=true \
-v /home/toyflivver/mysql/db3/conf:/etc/mysql \
-v /home/toyflivver/mysql/db3/data:/var/lib/mysql \
-v /home/toyflivver/mysql/db3/log:/var/log/mysql \
-v /etc/localtime:/etc/localtime:ro \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

好。三个mysql容器我们成功启动了,接下来就是开始配置主从同步。

二,MySQL5.7 主从同步配置

2.1主库的配置

首先。我们去db1(3307端口主库)的conf.d目录中找到或者创建my.cnf配置文件

[mysqld]

# 开启二进制日志
log-bin=mysql-bin

# 设置库id
server-id=1

主从同步的配置主要就是的这两个配置项。然后我们在主库上创建一个用户,用来专门和从库同步数据用

CREATE USER 'slave'@'%' IDENTIFIED BY 'slave';

GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY 'slave';

FLUSH PRIVILEGES;

然后我们重启主库

sudo docker restart db1

然后我们在db1(主库)上查询一下主库状态

SHOW MASTER STATUS;

在显示的结果中记下 :File列和Position列的值。比如我的是显示File:mysql-bin.000001,Position:1030。配置从库的时候要用到。

2.2 从库的配置

首先我们需要为所有的从库设置server-id.这里我们把对db2设置为2,db3设置为3

# db2 的conf.d/my.cnf中

[mysqld]

****

server-id=2

****

 

# db3 的conf.d/my.cnf中

[mysqld]

****

server-id=3

****

然后我们登录到db2数据库,运行一下命令来指定主库信息。

STOP SLAVE; #停止主从同步,第一次配置应该不用运行这一行

CHANGE MASTER TO 
MASTER_HOST = '*.*.*.*',# 指定主库IP
MASTER_PORT = 3307, # 指定主库端口
MASTER_USER = 'slave', # 指定查询主库的用户名
MASTER_PASSWORD = 'slave', 指定密码
MASTER_LOG_FILE = 'mysql-bin.000001', #这里就对应了上一步主库中查到的File信息
MASTER_LOG_POS = 1030; #这里就对应了上一步主库中查到的Position信息

START SLAVE;

然后在db2数据库上运行:

SHOW SLAVE STATUS;

如果看到slave_io_running为yes,slave_sql_running为yes,则说明主从同步成功。

db3数据库的配置是一样的。可以自行配置一下。

至此,一主两从的主从同步结构就假设完毕了。你可以在db1主库上创建表,增加数据等操作进行检测。主库的数据会自动同步到从库。

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/1008806
推荐阅读
相关标签
  

闽ICP备14008679号