MySQL主从配置

一、 主从原理

MySQL 主从同步是一种数据库复制技术,它通过将主服务器上的数据更改复制到一个或多个从服务器,实现数据的自动同步。主从同步的核心原理是将主服务器上的二进制日志复制到从服务器,并在从服务器上执行这些日志中的操作。

二、主从复制的工作流程

主数据库记录写操作到 二进制日志。

从数据库 的 I/O 线程 连接主数据库,读取主库的二进制日志,并存储到 中继日志。

SQL 线程 从中继日志中读取事件,并将事件执行到从库中。

三、进行主从配置

1、基于binlog的主从同步配置

主库配置:

root@server \~\]# yum install mysql-server -y \[root@server \~\]# vim /etc/my.cnf (或者子配置文件:/etc/my.cnf.d/mysql-server.cnf) server_id=1 (服务id可以随便配置,一般可根据ip) \[root@server \~\]# systemctl restart mysqld # 创建用于复制的用户并赋予权限 mysql\>create user 'req'@'192.168.8.% identified with mysql_native_password by '123456'; 加上with mysql_native_password 是为了兼容之前的密码插件,可以不加 mysql\> grant replication slave on \*.\* to rep@'192.168.8.%'; mysql\> show master status; #获取主服务器的二进制日志文件名和位置: +---------------+----------+--------------+------------------+-------------------+ \| File \| Position \| Binlog_Do_DB \| Binlog_Ignore_DB \| Executed_Gtid_Set \| +---------------+----------+--------------+------------------+-------------------+ \| binlog.000001 \| 1054 \| \| \| \| +---------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec) **从库配置:** \[root@slave1 \~\]# yum install mysql-server -y \[root@slave1 \~\]# vim /etc/my.cnf server_id=2 \[root@slave1 \~\]# systemctl restart mysqld \[root@slave1 \~\]# mysql mysql\> change master to -\> master_host='192.168.8.128', ----主库ip -\> master_user='rep', ----之前授权的用户 -\> master_password='123456', -\> master_log_file='binlog.000001', ----主服务器的二进制日志文件名 -\> master_log_pos=1054; ---- 主服务器的二进制日志位置 mysql\> start slave; mysql\> show slave status \\G ![](https://i-blog.csdnimg.cn/direct/9c8fae868e394a1c8d4e072466bca012.png)

主从服务器 都开启gtid:

在/etc/my.cnf的server_id下面加入两行,然后重启服务:

gtid_mode=ON
enforce-gtid-consistency=ON

从库配置:

mysql> stop slave;#停止复制线程


mysql> change master to
-> master_host='192.168.8.138',
-> master_port=3306,
-> master_user='rep',
-> master_password='123456',
-> master_auto_position=1;

Query OK, 0 rows affected, 8 warnings (0.00 sec)

mysql> start slave;

相关推荐
q***46523 分钟前
在Django中安装、配置、使用CKEditor5,并将CKEditor5录入的文章展现出来,实现一个简单博客网站的功能
数据库·django·sqlite
不光头强3 小时前
Spring框架的事务管理
数据库·spring·oracle
百***92026 小时前
【MySQL】MySQL库的操作
android·数据库·mysql
q***76666 小时前
Spring Boot 从 2.7.x 升级到 3.3注意事项
数据库·hive·spring boot
信仰_2739932436 小时前
Redis红锁
数据库·redis·缓存
人间打气筒(Ada)6 小时前
Centos7 搭建hadoop2.7.2、hbase伪分布式集群
数据库·分布式·hbase
心灵宝贝6 小时前
如何在 Mac 上安装 MySQL 8.0.20.dmg(从下载到使用全流程)
数据库·mysql·macos
想睡hhh6 小时前
mysql索引——理解索引机制及操作
mysql
剑动山河6 小时前
ubuntu 升级mysql由mysql5.7.42 升级到8.4.0
mysql·ubuntu·adb
奋斗的牛马7 小时前
OFDM理解
网络·数据库·单片机·嵌入式硬件·fpga开发·信息与通信