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主从配置

相关推荐
haoshuai_1 小时前
第二次作业
android·adb
IEVEl2 小时前
CentOS 7安装 mysql
mysql·adb·centos
casual_clover8 小时前
Android 设备实现 adb connect 连接的步骤
android·adb
热爱编程的小曾19 小时前
sqli-labs靶场 less 7
android·adb·less
weixin_3913369021 小时前
gdb 调试mysql
android·mysql·adb
肆仙.2 天前
单表、多表查询练习
android·adb
小李小李快乐不已2 天前
3.1.3 MYSQL连接池
数据库·mysql·adb
冲浪中台2 天前
MySQL 的 JSON 路径格式
mysql·adb·json
Free飝Fly2 天前
Android R adb remount 调用流程
android·adb·remount
测试笔记(自看)3 天前
Flask接口开发--引入mysql
mysql·adb·flask