簡述mysql 主從復制原理及其工作過程,配置一主兩從并驗證。
主從原理:MySQL 主從同步是一種數據庫復制技術,它通過將主服務器上的數據更改復制到一個或多個從服務器,實現數據的自動同步。
主從同步的核心原理是將主服務器上的二進制日志復制到從服務器,并在從服務器上執行這些日志中的操作。
1.主:
[root@openEuler ~]# yum install -y mysql-server? ? ? ?安裝mysql
[root@openEuler ~]# vim /etc/my.cnf.d? ? ? ? ? ? ? ? ? ? ? ? ? 編輯my.cnf.d
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysql/mysqld.log
pid-file=/run/mysqld/mysqld.pid
server-id =11? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
[root@openEuler ~]# systemctl enable --now mysqld? ? ? ? ? ? ??啟動服務
[root@openEuler ~]# mysql? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 進入mysql
mysql> create user rep@'192.168.23.%' identified with mysql_native_password by '123456';
mysql> grant replication slave on *.* to rep@'192.168.23.%';? ? ? ? ? ? ? ? ? ?創建用戶
2.從1:
[root@openEuler-2 ~]# vim /etc/my.cnf.d/mysql-server.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysql/mysqld.log
pid-file=/run/mysqld/mysqld.pid
server-id =12
[root@openEuler-2 ~]# systemctl restart mysqld? ? ? ?重啟
[root@openEuler-2 ~]# mysql? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?進入mysql
mysql> change master to? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 配置
? ? -> master_host='192.168.23.11',
? ? -> master_user='rep',
? ? -> master_password='123456',
? ? -> master_log_file='binlog.000006',
? ? -> master_log_pos=157;
mysql> start slave;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?啟動復制
mysql> show slave status \G;? ? ? ? ? ? ? ? ? ? ? ? ? ??查看狀態
Slave_IO_Running: Yes? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 看這兩個是否為yes
Slave_SQL_Running: Yes
3.從3
[root@openEuler-3~]# vim /etc/my.cnf.d/mysql-server.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysql/mysqld.log
pid-file=/run/mysqld/mysqld.pid
server-id =13
[root@openEuler-3?~]# systemctl restart mysqld? ? ? ?重啟
[root@openEuler-3?~]# mysql? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?進入mysql
mysql> change master to? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 配置
? ? -> master_host='192.168.23.11',
? ? -> master_user='rep',
? ? -> master_password='123456',
? ? -> master_log_file='binlog.000006',
? ? -> master_log_pos=157;
mysql> start slave;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?啟動復制
mysql> show slave status \G;? ? ? ? ? ? ? ? ? ? ? ? ? ??查看狀態
Slave_IO_Running: Yes? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 看這兩個是否為yes
Slave_SQL_Running: Yes
4.驗證
主:
從: