MYSQL8.4.4基于Rocky Linux9.5主从模式配置

目录

前言:

[1、 log dump 线程](#1、 log dump 线程)

[2、从节点 I/O线程](#2、从节点 I/O线程)

[3、从节点 SQL线程](#3、从节点 SQL线程)

一、资源准备

1、服务器

2、安装及配置

二、数据库配置

1、主库MASTER配置

2、从库SLAVE配置

三、测试

1、创建表

2、数据库插入测试


前言:

MYSQL主从原理:从3.23版本开始提供主从复制功能,复制是将主库的DDL和DML操作通过二进制日志传递到复制服务器(从库)上,然后从库对这些日志重新执行(重做),从而使得主库和从库保持数据一致。

MySQL主从复制涉及到三个线程,一个运行在主节点(log dump thread),其余两个(I/O thread, SQL thread)运行在从节点,如下图所示:

1、 log dump 线程

当从节点连接主节点时,主节点会为其创建一个log dump 线程,用于发送和读取bin-log的内容。在读取bin-log中的操作时,log dump线程会对主节点上的bin-log加锁,当读取完成,再发送给从节点之前,锁会被释放。主节点会为自己的每一个从节点创建一个log dump 线程。

2、从节点 I/O线程

当从节点上执行`start slave`命令之后,从节点会创建一个I/O线程用来连接主节点,请求主库中更新的bin-log。I/O线程接收到主节点的blog dump进程发来的更新之后,保存在本地relay-log(中继日志)中。

3、从节点 SQL线程

SQL线程负责读取relay-log中的内容,解析成具体的操作并执行,最终保证主从数据的一致性。

一、资源准备

1、服务器

采取一主一从模式,两台服务器,具体说明如下:

|--------------|-----------------|----------------|------------------------------------|
| HOSTNAME | IP | OS版本 | MYSQL版本 |
| mysql-master | 192.168.100.123 | Rocky Linux9.5 | 8.4.4 MySQL Community Server - GPL |
| mysql-slave | 192.168.100.124 | Rocky Linux9.5 | 8.4.4 MySQL Community Server - GPL |

2、安装及配置

(1)、linux安装

参见:Rocky Linux 9.5操作系统安装-CSDN博客

(2)、MYSQL数据库安装

参见:基于Rockylinux9.5(LTS-SP4)安装MySQL Community Server 9.2.0-CSDN博客

(3)、关闭OS防火墙及selinux

二、数据库配置

1、主库MASTER配置

(1)、编辑my.cnf文件,加入以下配置内容

bash 复制代码
vim /etc/my.cnf
server-id=123     //唯一标识ID,区别与从库
log-bin=mysql-bin
binlog_format=ROW //二进制日志格式,设置为ROW,当设置为MIXED的时候,从WORKBENCH插入的数据未同步
sync_binlog=1
read-only=0
innodb_flush_log_at_trx_commit = 1
gtid_mode = ON
enforce_gtid_consistency = ON
binlog_expire_logs_seconds=1296000   //此值为秒,表示保留日志有效期15天:15*24*60*60

binlog-do-db=dlkdb    //需要同步的数据库

(2)、创建远程连接的账号并授权

登录数据库

mysql -u root -p

create user 'backup'@'%' identified by 'passwd';

其中%表示可以在任何一台服务器上连接,如果需要指定IP地址,可以将%改为指定的IP地址

(3)、重新加载权限

flush privileges;

(4)、重启数据库

systemctl restart mysqld

(5)、查看二进制日志状态

SHOW BINARY LOG STATUS,其中File和Position的值需要记录,配置从库SLAVE的时候会用到。

bash 复制代码
+------------------+----------+--------------+------------------+-------------------------------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set                         |
+------------------+----------+--------------+------------------+-------------------------------------------+
| mysql-bin.000015 |      198 | dlkdb        |                  | 24e40de7-0860-11f0-95df-000c29dbd455:1-31 |
+------------------+----------+--------------+------------------+-------------------------------------------+
1 row in set (0.01 sec)

2、从库SLAVE配置

(1)、编辑my.cnf文件,加入以下配置内容,详细参数说明参见主库

bash 复制代码
server-id=124    //唯一标识
replicate-do-db=dlkdb  //需要同步的数据库名
read_only=1
sync_binlog = 1
gtid_mode = ON
enforce_gtid_consistency = ON
innodb_flush_log_at_trx_commit = 1
binlog_format=ROW
binlog_expire_logs_seconds=1296000

(2)、重启数据库 systemctl restart mysqld

(3)、开始数据同步

CHANGE REPLICATION SOURCE TO

SOURCE_HOST='192.168.100.123', //主库服务器IP

SOURCE_USER='backup', //远程账号

SOURCE_PASSWORD='passwd', //密码

SOURCE_PORT=3306, //端口

SOURCE_LOG_FILE='bin-log.000015', //主库二进制文件名

SOURCE_LOG_POS=198; //主库二进制文件位置

(4)、开始同步复制

START REPLICA;

(5)、检查同步状态是否成功:SHOW REPLICA STATUS\G

要求其中这两个参数的值为Yes,Slave_IO_Running: Yes、Slave_SQL_Running: Yes;如果存在其它错误,该状态会显示出来。

bash 复制代码
mysql> SHOW REPLICA STATUS\G;
*************************** 1. row ***************************
             Replica_IO_State: Waiting for source to send event
                  Source_Host: 192.168.100.123
                  Source_User: zpback
                  Source_Port: 3306
                Connect_Retry: 60
              Source_Log_File: mysql-bin.000015
          Read_Source_Log_Pos: 499
               Relay_Log_File: mysql-slave-relay-bin.000014
                Relay_Log_Pos: 669
        Relay_Source_Log_File: mysql-bin.000015
           Replica_IO_Running: Yes
          Replica_SQL_Running: Yes
              Replicate_Do_DB: dlkdb
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Source_Log_Pos: 499
              Relay_Log_Space: 1364
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Source_SSL_Allowed: Yes
           Source_SSL_CA_File: 
           Source_SSL_CA_Path: 
              Source_SSL_Cert: 
            Source_SSL_Cipher: 
               Source_SSL_Key: 
        Seconds_Behind_Source: 0
Source_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Source_Server_Id: 123
                  Source_UUID: 24e40de7-0860-11f0-95df-000c29dbd455
             Source_Info_File: mysql.slave_master_info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
    Replica_SQL_Running_State: Replica has read all relay log; waiting for more updates
           Source_Retry_Count: 10
                  Source_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 
               Source_SSL_Crl: 
           Source_SSL_Crlpath: 
           Retrieved_Gtid_Set: 24e40de7-0860-11f0-95df-000c29dbd455:17-32
            Executed_Gtid_Set: 24e40de7-0860-11f0-95df-000c29dbd455:5-32,
3a573e05-0876-11f0-9ef1-000c2983ccb9:1
                Auto_Position: 0
         Replicate_Rewrite_DB: 
                 Channel_Name: 
           Source_TLS_Version: 
       Source_public_key_path: 
        Get_Source_public_key: 0
            Network_Namespace: 
1 row in set (0.00 sec)

三、测试

1、创建表

(1)、主库MASTER创建表

(2)、从库slave中可以查看到新创建的表

2、数据库插入测试

(1)、主库MASTER中插入数据

(2)、从库slave中可查看到此条数据

通过以上步骤完成MYSQL主从配置

相关推荐
风流 少年5 天前
mysql mcp
数据库·mysql·adb
轩情吖5 天前
MySQL初识
android·数据库·sql·mysql·adb·存储引擎
lucky67077 天前
Laravel6.x新特性全解析
数据库·mysql·adb
秋氘渔7 天前
MySQL EXPLAIN命令详解:SQL查询性能分析与优化指南(基础篇)
sql·mysql·adb
半桔8 天前
【MySQL数据库】SQL 查询封神之路:步步拆解核心操作,手把手帮你解锁高阶玩法
linux·数据库·sql·mysql·adb·oracle
桂花很香,旭很美8 天前
ADB 安卓实战手册
android·adb
limingade11 天前
ADB应用浅析-普通手机app不依赖电脑如何获取ADB权限
adb·智能手机·android应用·手机无线调试adb·手机adb抓取屏幕画面·无线调试抓屏·adb授权
limingade11 天前
重启手机后-自动领金币app如何独自取到ADB权限进行手机操作
物联网·adb·智能手机·ocr识别手机广告·adb自动关闭广告·手机adb授权·自动领金币app
·云扬·12 天前
MySQL基于位点的主从复制完整部署指南
android·mysql·adb