小白成长之路-mysql数据基础(三)

发布于:2025-07-08 ⋅ 阅读:(13) ⋅ 点赞:(0)


一、主从复制

在这里插入图片描述

1、master开启二进制日志记录

2、slave开启IO进程,从master中读取二进制日志并写入slave的中继日志

3、slave开启SQL进程,从中继日志中读取二进制日志并进行重放

4、最终,达到slave与master中数据一致的状态,我们称作为主从复制的过程

二、案例

1.前提:实验开始前

systemctl disable --now firewalld
setenforce 0

保证主机和丛机的时间一致:

timedatectl set-timezone Asia/shanghai
主机和丛机都需要配置:

vim /etc/chrony.conf 

在这里插入图片描述
重启服务:

systemctl restart chronyd.service

2.在主机上创建一个账户并赋予权限
在这里插入图片描述
3.打开二进制文件

vim /etc/my.cnf.d/mysql-server.cnf

主机在这里插入图片描述
从机
在这里插入图片描述
4.主机变为从机(在没有改变前,从机也是主机)
主机;
在这里插入图片描述
从机:其中master_log_file和master_log_pos均来自于主机的状态

change master to master_host=‘192.168.144.129’,master_user=‘slave’,master_password=‘123’,master_log_file=‘binlog.000014’,master_log_pos=706;

在这里插入图片描述
从机验证:
在这里插入图片描述
这两个地方必须都是yes才代表成功
如果出现

ALTER USER ‘slave’@‘192.168.144.%’ IDENTIFIED WITH mysql_native_password BY ‘123’;
ERROR 1227 (42000): Access denied; you need (at least one of) the SYSTEM_USER privilege(s) for this operation

问题原因
在MySQL 8.0+版本中:

修改其他用户的认证插件需要 SYSTEM_USER 权限
普通用户即使有 CREATE USER 权限也无法修改其他用户的认证方式
修改方案:

主机:

CREATE USER 'slave_new'@'192.168.144.%' IDENTIFIED WITH mysql_native_password BY '123';
GRANT REPLICATION SLAVE ON *.* TO 'slave_new'@'192.168.144.%';
FLUSH PRIVILEGES;

从机:

mysql> STOP SLAVE;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> CHANGE MASTER TO MASTER_USER='slave_new', MASTER_PASSWORD='123',master_log_file='binlog.000014',master_log_pos=1569;
Query OK, 0 rows affected, 7 warnings (0.01 sec)

验证:
主机上创建个数据库
在这里插入图片描述
从机上可以看到:

在这里插入图片描述

总结

以上就是mysql的主从分离,后续会补充上读写分离