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

目录

前言:

1、 log dump 线程

2、从节点 I/O线程

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、服务器

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

HOSTNAMEIPOS版本MYSQL版本
mysql-master192.168.100.123Rocky Linux9.58.4.4 MySQL Community Server - GPL
mysql-slave192.168.100.124Rocky Linux9.58.4.4 MySQL Community Server - GPL

2、安装及配置

(1)、linux安装

        参见:Rocky Linux 9.5操作系统安装-优快云博客

(2)、MYSQL数据库安装

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

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

二、数据库配置

1、主库MASTER配置

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

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的时候会用到。

+------------------+----------+--------------+------------------+-------------------------------------------+
| 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文件,加入以下配置内容,详细参数说明参见主库

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;如果存在其它错误,该状态会显示出来。

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值