遇见0和1

V1

2023/03/09阅读:17主题:全栈蓝

MySQL主从复制架构

前言

前三期介绍了redis主从复制、哨兵模式(sentinel)、redis集群(cluster)三种架构模式的演变以及搭建,MySQL也有类似的架构演变过程:MySQL主从复制——>MySQL读写分离集群

MySQL主从复制原理

与Redis主从复制架构诞生的原因一样,MySQL主从复制主要是为了避免单节点主机出现硬件或主机系统故障时可能导致数据丢失的问题,而对数据进行的冗余备份

  • 备份的从节点不对系统提供服务,仅仅负责同步master节点的数据
  • 主从复制架构一旦搭建完成,不能在slave从节点上执行更新操作(如create、update、insert、delete等),否则会导致主从数据不一致甚至同步失败

搭建MySQL主从复制

1、准备两个安装好MySQL的主机作为主从节点(Linux中安装MySQL可以看我以前的文章),在两个节点的MySQL配置文件my.cnf中分别加入如下配置:

[mysqld]
# 节点唯一标识
server_id=101
# 开启binlog二进制日志功能(关键),值作为日志文件前缀可以随便取
log-bin=mysql-master-bin
# master的binlog日志有变化时告诉从节点要立即同步更新
log-slave-updates
# 让从节点跳过执行错误的sql,不同步
slave-skip-errors=all


# 从节点可以不配置,这里配置了以后可以作为另一个主从架构的master节点
[mysqld]
# 节点唯一标识
server_id=102
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin
# master的binlog日志有变化时告诉从节点要立即同步更新
log-slave-updates
# 让从节点跳过执行错误的sql,不同步
slave-skip-errors=all

2、重启两个MySQL服务,登录MySQL客户端,验证主从节点的server_id配置是否生效重要

# 查看主从的server_id变量
show variables like 'server_id';

3、在master主节点上查询binlog文件名和位置

mysql > show master status;

4、根据上一步查到的两个信息,在slave从节点上设置主节点参数并绑定

change master to master_host='192.168.31.161',master_user='root',master_password='123456',master_log_file='mysql-master-bin.000001',master_port=3306,master_log_pos=155;

5、在slave节点上启动并查看主从同步状态

# 开启从节点
mysql > start slave;

# # 查看同步状态,\G:格式化结果
mysql> show slave status\G;

若看到Slave_IO_Running和Slave_SQL_Running两个都为Yes即配置主从复制成功!

注意:主从同步需要两台机MySQL的服务端口能够正常通信,配置不成功的大多是防火墙问题。

6、在主节点建库建表(插入删除数据)等测试,查看从库是否同步

后记

MySQL主从复制架构由于从节点不对系统提供服务,仅仅负责同步master节点的数据,和Redis一样存在单节点的高并发问题,所以演化出了MySQL读写分离集群!

下期带来MySQL读写分离集群!

分类:

后端

标签:

数据库

作者介绍

遇见0和1
V1

追风赶月莫停留,平芜尽处是春山!