目录
- 前言
- 1、原理
- 2、数据库搭建
- 3、主库搭建配置
- 4、从库搭建配置
前言
MySQL
主从复制是一种数据同步机制,允许将一个MySQL
数据库服务器(主服务器)的数据复制到另一个MySQL
服务器(从服务器)。这种复制机制为应用程序提供了高可用性、读写分离和数据备份等好处。
主从复制的基本原理如下:
主服务器(Master)
:主服务器负责处理写操作和更新数据。当主服务器上的数据发生更改时,它将记录这些更改在二进制日志中(Binary Log)。从服务器(Slave)
:从服务器负责接收主服务器的数据更新,并将主服务器的二进制日志复制到自己的中继日志(Relay Log)中。复制过程
:从服务器连接到主服务器,并请求复制主服务器的数据更改。主服务器将这些更改发送给从服务器,从服务器接收并应用这些更改,使其数据与主服务器保持同步。读写分离
:由于读操作通常比写操作更频繁,可以在从服务器上处理读取查询,从而分担主服务器的负载,提高整体性能。
尽管主从复制可以提高数据库的可用性和性能,但它并不是解决所有问题的完美方案。在设计和实施主从复制时,还需要考虑一些因素,如延迟、数据一致性、故障恢复等。
Mysql主从同步,要求需要先搭建至少两个mysql实例,一主一从,使用推荐Docker搭建Mysql《Docker部署安装Mysql》
1、原理
mysql主(称master)从(称slave)复制的原理:
- master将数据改变记录到二进制日志(binary log)中,也就是配置文件log-bin指定的文件(这些记录叫做二进制日志事件,binary log events)
- slave将master的binary log events拷贝到它的中继日志(relay log)
- slave重做中继日志中的事件,将改变反映它自己的数据(数据重演)
主从配置需要注意的地方:
- 主DB server和从DB server数据库的版本一致
- 主DB server和从DB server数据库数据一致
- 主DB server开启二进制日志,主DB server和从DB server的server_id都必须唯一
2、数据库搭建
事先搭建好两个数据库,分别为端口3306、3307,并且分别创建数据库test
;
数据库的容器名称分别为;mysql-3306、mysql-3307;
3、主库搭建配置
主数据库使用docker
搭建,端口为3306
1、修改配置文件:
在搭建好基础Mysql以后,修改配置文件,在原有基础上加入如下内容:
[mysqld]
server-id=1 #服务id,不可重复
log-bin=mysql-bin #开启二进制日志,设置路径
#是否只读,1 代表只读, 0 代表读写
read-only=0
#需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行(先建好库),不指定则同步整个数据源
binlog-do-db=test
#不同步系统数据库
binlog-ignore-db=mysql
binlog-ignore-db=sys
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
2、重启数据库:
docker restart mysql-3306
4、从库搭建配置
主数据库使用docker
搭建,端口为3306
1、修改配置文件:
在搭建好基础Mysql以后,修改配置文件,在原有基础上加入如下内容:
[mysqld]
#服务id,不可重复
server-id=2
# 开启二进制日志
log-bin=mysql-bin
2、重启数据库:
docker restart mysql-3307
3、获取master相关信息:
在3306端口的主库执行:SHOW MASTER STATUS;
查看新的主库信息,结果如下:
4、从库连接主库配置:
连接语句:
-- 从库SQL语句:
CHANGE MASTER TO
master_host='162.10.1.35', #主库所在地址
master_user='root', -- 前面主库设置的用户、密码
master_password='123456',
master_port=3306, -- 主库端口
master_log_file='mysql-bin.000001', -- 前面主库的File信息
master_log_pos=157; -- 前面主库的Position信息
启动同步语句:
-- 启动同步 SQL语句: stop:停止,reset:重启
start slave;
5、从库状态检测:
检测语句:
show slave status;
效果:
注意: 当Slave_IO_Running 和 Slave_SQL_Running: 均为YES 标识则表示主从同步启动成功;
6、其他操作事项:
查看server相关的配置项:
SHOW GLOBAL VARIABLES LIKE 'server%';
停止主从复制:
stop slave;
重新配置主从:
# 重新配置主从流程,先停止,再重置从库连接主库配置
stop slave;
reset master;
再根据主库信息进行从库配置(SHOW MASTER STATUS;)