mysql 一主一从_mysql搭建主从复制(一主一从,双主双从)

本文详细介绍了如何搭建MySQL的一主一从和双主双从复制。首先解释了主从复制的原理,然后通过修改配置文件、授权、设置主从状态等步骤,逐步实现主从服务器之间的数据同步。在双主双从配置中,还涉及到了自增ID的处理,确保不同主机间的自增ID不冲突。
摘要由CSDN通过智能技术生成

主从复制原理

Mysql 中有一个binlog 二进制日志,这个日志会记录下所有修改了的SQL 语句,从服务器把主服务器上的binlog二进制日志在指定的位置开始复制主服务器所进行修改的语句到从服务器上执行一遍。

流程图

02e931d3b51a7efc7ecf4c7c8863f133.png

搭建一主一从

前期环境准备

Linux:centos7

mysql版本:mysql5.7(安装教程:https://blog.csdn.net/weixin_45797918/article/details/104929127)

主服务器:10.10.10.130

从服务器:10.10.10.133

修改配置文件

主机配置

vim /etc/my.cnf

添加配置

d5b2f478d0fad3da67fb021502855866.png

#主服务器唯一ID

server-id=1

#启用二进制日志

log-bin=mysql-bin

#设置不要复制的数据库(可设置多个)

binlog-ignore-db=mysql binlog-ignore-db=information_schema

#设置需要复制的数据库

binlog-do-db=需要复制的主数据库名字

#设置logbin格式

binlog_format=STATEMENT

从机配置

vim /etc/my.cnf

添加配置

8e5e65ff7c6ec17ddc4fd800ac9e80f6.png

#从服务器唯一ID

server-id=2

#启用中继日志

relay-log=mysql-relay

配置主机

在主机MySQL里执行授权命令

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

352cef678ba1f50b5664f5194b7151cb.png

查询master的状态

show master status;

e24b547ee28e4abd07290b6a3828a094.png

#记录下File和Position的值

#执行完此步骤后不要再操作主服务器MySQL,防止主服务器状态值变化

配置从机

在主机MySQL里执行

CHANGE MASTER TO MASTER_HOST='10.10.10.130',

MASTER_USER='slave',

MASTER_PASSWORD='123456',

MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=154;

ca47b7e18ba91dd8c979d87d65aa5c00.png

CHANGE MASTER TO MASTER_HOST=‘主机的IP地址’,

MASTER_USER=‘slave’,

MASTER_PASSWORD=‘123456’,

MASTER_LOG_FILE=‘mysql-bin.具体数字’,MASTER_LOG_POS=具体值;

启动从服务器复制功能

start slave;

查看从服务器状态

show slave status\G;

3730b513810f3aadbbb331a040310206.png

测试一主一从

主机创建testdb数据库和表user

68f0f088c47da87d53402cae758e4e79.png

8ba5ebf77ae62c8484b7c4713797a3f7.png

从机直接刷新

4bf5e2cd6a8d806aa372110e4ab43aa6.png

搭建双主双从

前期环境准备

Master1:10.10.10.130

Slave1:10.10.10.133

Master2:10.10.10.134

Slave2:10.10.10.135

停止一主一从(没有启动的跳过)

从机上执行

stop slave;

重设

reset slave;

删除主机从机testdb数据库

修改配置文件

编辑Master1

修改配置文件,添加

vim /etc/my.cnf

0170af492ce6252aa825f0fb0c7de4c2.png

#主服务器唯一ID

server-id=1

#启用二进制日志

log-bin=mysql-bin

#设置不要复制的数据库(可设置多个)

binlog-ignore-db=mysql

binlog-ignore-db=information_schema

#设置需要复制的数据库

binlog-do-db=需要复制的主数据库名字

#设置logbin格式

binlog_format=STATEMENT

#在作为从数据库的时候,有写入操作也要更新二进制日志文件

log-slave-updates

#表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1,取值范围是1 … 65535

auto-increment-increment=2

#表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 … 65535

auto-increment-offset=1

编辑Master2

修改配置文件,添加

vim /etc/my.cnf

464b245fd7077acdff5002b958c45b98.png

#主服务器唯一ID

server-id=3

#启用二进制日志

log-bin=mysql-bin

#设置不要复制的数据库(可设置多个)

binlog-ignore-db=mysql

binlog-ignore-db=information_schema

#设置需要复制的数据库

binlog-do-db=需要复制的主数据库名字

#设置logbin格式

binlog_format=STATEMENT

#在作为从数据库的时候,有写入操作也要更新二进制日志文件

log-slave-updates

#表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1,取值范围是1 … 65535

auto-increment-increment=2

#表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 … 65535

auto-increment-offset=2

编辑Slave1

修改配置文件,添加

vim /etc/my.cnf

ac1311e6f0a5c3c8159f3094e0088b08.png

#从服务器唯一ID

server-id=2

#启用中继日志

relay-log=mysql-relay

编辑Slave2

修改配置文件,添加

vim /etc/my.cnf

58a99faf0639dd5a3ea96e4fcde71826.png

#从服务器唯一ID

server-id=4#启用中继日志

relay-log=mysql-relay

Master1、Master2授权slave并查看状态

Master1主机

MySQL里执行授权命令

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

Master1

show master status;

d5c1e51e3b677b9766433ff78f7c6488.png

Master2主机

MySQL里执行授权命令

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

Master1

show master status;

8bd5ae325c4d1f77fb311326e9c4be44.png

启动双主双从

Slave1

执行

CHANGE MASTER TO MASTER_HOST='10.10.10.130',

MASTER_USER='slave',

MASTER_PASSWORD='123456',

MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=766;

启动两台从服务器复制功能

start slave;

查看从服务器状态

show slave status\G;

4e38ae712e15d3cef5506564f0f8f1fc.png

Slave2

执行

CHANGE MASTER TO MASTER_HOST='10.10.10.134',

MASTER_USER='slave',

MASTER_PASSWORD='123456',

MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=154;

启动两台从服务器复制功能

start slave;

查看从服务器状态

show slave status\G;

adb643de19f6c8bf5252fcf1e62faa9f.png

两个主机互相复制

Master2

执行

CHANGE MASTER TO MASTER_HOST='10.10.10.130',

MASTER_USER='slave',

MASTER_PASSWORD='123456',

MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=766;

启动两台从服务器复制功能

start slave;

查看从服务器状态

show slave status\G;

f465f7311fd388c0bbe41369b318b1ce.png

Master1

执行

CHANGE MASTER TO MASTER_HOST='10.10.10.134',

MASTER_USER='slave',

MASTER_PASSWORD='123456',

MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=154;

启动两台从服务器复制功能

start slave;

查看从服务器状态

show slave status\G;

9412bee6b4b762e3654d1d958ef02caf.png

#复制主机的命令

CHANGE MASTER TO MASTER_HOST=‘主机的IP地址’,

MASTER_USER=‘slave’,

MASTER_PASSWORD=‘123456’,

MASTER_LOG_FILE=‘mysql-bin.具体数字’,MASTER_LOG_POS=具体值;

测试双主双从

在Master1创建数据库testdb

其他三个数据库刷新查询出现testdb数据库

c8d351f6e7dabdaa8a496c52afc58ca0.png

在Master2创建user表

其他上数据库刷新出现user表

69d7228c29934380e5a42f23cc832b0f.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值