mysql主从复制学习笔记

jupiter
2023-08-08 / 0 评论 / 34 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2023年08月08日,已超过275天没有更新,若内容或图片失效,请留言反馈。

1.主从复制原理

基于二进制日志文件

1.Master主库在事务提交时,会把数据变更记录在二进制日志文件binlog中。
2.从库Slaver读取主库的二进制文件binlog,写入到从库的中继日志Relay log。

3.Slave重做中继日志的事件,将变化反映到自身进行数据更新(复制)。

2.主库配置

2.1 防火墙设置

# 开放指定的3306端口
firewall-cmd --zone=public --add-port=3306/tcp -pemanent
firewall-cmd -reload

2.2 修改配置文件/etc/my.cnf

在最下面增加配置:

# mysql服务id,保证是整个集群环境中唯一,取值范围1-2^32-1,默认为1
server-id=1
# 是否只读,1代表只读,0代表读写
read-only=0

2.3 重启Mysql服务

systemctl restart mysqld

2.4 创建数据同步的用户并授权

登录mysql,并执行如下指令,创建用户并授权:

mysql> CREATE USER 'jupiter'@'%' IDENTIFIED WITH mysql_native_password BY 'Root@123456';
# @'%':用户可以在任意主机访问当前服务器。
# IDENTIFIED WITH mysql_native_password BY 'Root@123456':设置访问密码为Root@123456
mysql> GRANT REPLICATION SLAVE ON *.* TO 'jupiter'@'%';
# 为'jupiter'@'%'用户分配主从复制的权限,即REPLICATION SLAVE权限

MySQL密码复杂程度说明:

mysql> show variables like 'validate_password_policy';

目前 MySQL8.0.30 默认密码校验策略等级为 MEDIUM , 该等级要求密码组成为: 数字、小写字母、大写字母 、特殊字符、长度至少8位

2.5 通过命令,查看二进制日志坐标

mysql> show master status;

3.从库配置

3.1 防火墙设置

# 开放指定的3306端口
firewall-cmd --zone=public --add-port=3306/tcp -pemanent
firewall-cmd -reload

3.2 修改配置文件/etc/my.cnf

在最下面增加配置:

# mysql服务id,保证是整个集群环境中唯一,取值范围1-2^32-1,与主库不一致即可
server-id=2
# 是否只读,1代表只读,0代表读写,只对非root用户生效
read-only=1

3.3 重启Mysql服务

systemctl restart mysqld

3.4 登录Mysql数据库,设置主库地址及同步位置

master_log_filemaster_log_pos的参数由 show master status;的执行结果决定。

mysql> change master to master_host='192.168.36.168',master_user='jupiter',master_password='Root@123456',master_log_file='mysql-bin.000015',master_log_pos=157;

参数说明:

A. master_host : 主库的IP地址

B. master_user : 访问主库进行主从复制的用户名(上面在主库创建的)

C. master_password : 访问主库进行主从复制的用户名对应的密码

D. master_log_file : 从哪个日志文件开始同步(上述查询master状态中展示的有)

E. master_log_pos : 从指定日志文件的哪个位置开始同步(上述查询master状态中展示的有)

3.5 开启同步操作

mysql> start replica; # 8.0.22之后
mysql> start slave; # 8.0.22之前

3.6 查看主从同步状态

mysql> show replica status\G; # 8.0.22之后
mysql> show slave status\G; # 8.0.22之前

然后通过状态信息中的 Slave_IO_runningSlave_SQL_running 可以看出主从同步是否就绪,如果这两个参数全为Yes,表示主从同步已经配置完成。

4.验证测试

我们只需要在主库Master执行操作,查看从库Slave中是否将数据同步过去即可。

参考资料

  1. https://www.bilibili.com/video/BV1jT411r77s
  2. MySQL配置主从复制
0

评论 (0)

打卡
取消