小白成长之路-mysql数据基础(三)
文章目录
- 一、主从复制
- 二、案例
- 总结
一、主从复制
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的主从分离,后续会补充上读写分离