简述mysql 主从复制原理及其工作过程,配置一主两从并验证。
主从复制原理
主从原理:MySQL 主从同步是一种数据库复制技术,它通过将主服务器上的数据更改复制到一个或多个从服务器,实现数据的自动同步。
主从同步的核心原理是将主服务器上的二进制日志复制到从服务器,并在从服务器上执行这些日志中的操作。
工作过程
主服务器:
执行数据操作并将更改记录到二进制日志(binlog)
从服务器
启动 I/O 线程,连接到主服务器并请求二进制日志
主服务器将二进制日志发送到从服务器
从服务器将接收到的日志写入中继日志
SQL 线程从中继日志中读取日志并执行相应的 SQL 语句
配置
192.168.165.128为主,192.168.165.129和192.168.165.131为从
配置主库
[root@openEuler ~]# cd /MySQL/
[root@openEuler MySQL]# vim /etc/my.cnf
[mysqld]
server_id=1
[root@openEuler MySQL]# systemctl enable --now mysqld.service
mysql> create user rep@'192.168.165.%' identified with mysql_native_password by 'MySQL@123';
Query OK, 0 rows affected (0.01 sec)
mysql> grant replication slave on *.* to rep@'192.168.165.%';
Query OK, 0 rows affected (0.01 sec)
配置从库
[root@localhost MySQL]# vim /etc/my.cnf
从库1
[root@localhost ~]# vim /etc/my.cnf
[mysqld]
server_id=2
从库2
[root@localhost-1 ~]# vim /etc/my.cnf
[mysqld]
server_id=3
共同
[root@localhost ~]# systemctl enable --now mysqld.service
mysql> change master to
-> master_host='192.168.165.128',
-> master_user='rep',
-> master_password='MySQL@123',
-> master_log_file='binlog.000001',
-> master_log_pos=678;
Query OK, 0 rows affected, 8 warnings (0.01 sec)
mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.01 sec)
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
测试
主库中
mysql> create database test;
Query OK, 1 row affected (0.00 sec)
mysql> use test;
Database changed
mysql> create table td1(id int(10),name varchar(20));
Query OK, 0 rows affected, 1 warning (0.01 sec)
mysql> insert into td1 values (1,'张三'),(2,'李四');
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> select * from td1;
+------+--------+
| id | name |
+------+--------+
| 1 | 张三 |
| 2 | 李四 |
+------+--------+
2 rows in set (0.00 sec)
从库中
mysql> select * from td1;
+------+--------+
| id | name |
+------+--------+
| 1 | 张三 |
| 2 | 李四 |
+------+--------+
2 rows in set (0.00 sec)