文章目錄
- 一、主從復制
- 二、案例
- 總結
一、主從復制
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的主從分離,后續會補充上讀寫分離