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主库上创建表,增加数据等操作进行检测。主库的数据会自动同步到从库。

 

 

 

  • 20
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要查看MySQL5.7主从同步的状态,你可以按照以下步骤进行操作: 1. 进入主库的MySQL控制台:使用命令`docker exec -it db1 mysql -uroot -p`进入主库的MySQL容器,并输入密码。 2. 在主库控制台中,执行命令`show master status;`来查看主库的同步状态。这将显示出主库的binlog文件名和位置。 3. 记下主库的binlog文件名和位置。 4. 进入从库的MySQL控制台:使用命令`docker exec -it db2 mysql -uroot -p`进入从库的MySQL容器,并输入密码。 5. 在从库控制台中,执行命令`stop slave;`来停止从库的同步进程。 6. 执行命令`change master to master_host='主库IP', master_user='主库用户名', master_password='主库密码', master_log_file='主库的binlog文件名', master_log_pos=主库的binlog位置;`来配置从库连接主库。将命令中的参数替换为实际的值。 7. 执行命令`start slave;`来启动从库的同步进程。 8. 执行命令`show slave status\G;`来查看从库的同步状态。在输出中,可以查看到以下信息:Slave_IO_Running和Slave_SQL_Running字段的值应该都是"YES",表示主从同步正在运行。 通过以上步骤,你可以查看MySQL5.7主从同步状态,并确保主从同步正常工作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [MySQL5.7 设置主从同步](https://blog.csdn.net/qq_32733527/article/details/130731031)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值