您的位置:首页 > 科技 > IT业 > 山西网站建站系统哪家好_太原网站制作建设_哪里有竞价推广托管_河南网站建设哪里好

山西网站建站系统哪家好_太原网站制作建设_哪里有竞价推广托管_河南网站建设哪里好

2025/4/3 10:30:05 来源:https://blog.csdn.net/Starry__Sky222/article/details/145550105  浏览:    关键词:山西网站建站系统哪家好_太原网站制作建设_哪里有竞价推广托管_河南网站建设哪里好
山西网站建站系统哪家好_太原网站制作建设_哪里有竞价推广托管_河南网站建设哪里好

MySQL 主从复制工作过程

1、主库记录二进制日志

当主库上执行更新操作(如 INSERT、UPDATE、DELETE 等)时,主库会将这些操作记录到二进制日志(Binary Log)中。

2、从库创建 I/O 线程

从库会创建一个 I/O 线程,该线程连接到主库,并请求主库发送二进制日志。

3、主库创建 Binlog Dump 线程

主库接收到从库的请求后,会创建一个 Binlog Dump 线程,将二进制日志中的内容发送给从库。

4、从库接收并存储中继日志

从库的 I/O 线程接收到主库发送的二进制日志内容后,将其存储到本地的中继日志(Relay Log)中。

5、从库创建 SQL 线程

从库会创建一个 SQL 线程,该线程读取中继日志中的内容,并将其中的 SQL 语句在从库上执行,从而实现数据的同步。

首先准备三台虚拟机

  • 主:192.168.1.11(mater)
  • 从:192.168.1.13(slave1)
  • 从:192.168.1.14(slave2)

建议版本环境干净且相同(成功率高)

一、192.168.1.11(mater)

编辑配置文件

[root@master ~]# vim /etc/my.cnf
server_id=11

也可以写在子配置文件mysqld

[root@master ~]# vim /etc/my.cnf.d/mysql-server.cnf

重新启动MySQL

[root@master ~]# systemctl restart mysqld.service或者第一次启动:
[root@master ~]# systemctl enable --now mysqld

授权用户:

mysql> create user rep@'192.168.1.%' identified with mysql_native_password by '123456';
mysql> grant replication slave on *.* to rep@'192.168.1.%';mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000001 |      678 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

二、192.168.1.13(slave1)

同理先编辑配置文件和重新启动MySQL

[root@slave1 ~]# vim /etc/my.cnf
server_id=13[root@slave1 ~]# systemctl restart mysqld.service或者第一次启动:
[root@slave1 ~]# systemctl enable --now mysqld

与Master(192.168.1.11主机)建立连接

CHANGE MASTER TOMASTER_HOST = '192.168.1.11',MASTER_USER = 'rep',MASTER_PASSWORD = '123456',MASTER_LOG_FILE = 'binlog.000001',MASTER_LOG_POS = 678;
mysql> start slave;mysql> show slave status \G  #查看是否成功

出现双yes才算成功

三、192.168.1.14(slave2)

同理先编辑配置文件和重新启动MySQL

[root@slave2 ~]# vim /etc/my.cnf
server_id=14[root@slave2 ~]# systemctl restart mysqld.service或者第一次启动:
[root@slave2 ~]# systemctl enable --now mysqld

与Master(192.168.1.11主机)建立连接

CHANGE MASTER TOMASTER_HOST = '192.168.1.11',MASTER_USER = 'rep',MASTER_PASSWORD = '123456',MASTER_LOG_FILE = 'binlog.000001',MASTER_LOG_POS = 678;
mysql> start slave;mysql> show slave status \G  #查看是否成功

如果有报错,部分解决方法可以看我前面的博客MySQL主从同步

测试:

可以在主库创建数据库,从库会立即出现

mysql> create database db1;   #主库创建mysql> show databases;        #主从库皆可查看到db1
+--------------------+
| Database           |
+--------------------+
| db1                |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com