当前位置:   article > 正文

MySQL 5.7使用 GTID 和 Binlog高可用方案

MySQL 5.7使用 GTID 和 Binlog高可用方案

介绍

GTID和Binlog的关系

GTID 和 Binlog 是互补的技术。GTID 提供了更高级的事务跟踪和管理机制,而 Binlog 则是底层的日志记录机制。在 GTID 模式下,每个事务在写入 binlog 时都会附带一个 GTID,从而实现更加可靠和简化的复制管理。

  • GTID 用于全局唯一标识事务,简化复制管理和故障恢复。
  • Binlog 用于记录数据更改事件,是数据恢复和复制的基础。

在许多高可用方案中,GTID 和 Binlog 是结合使用的。GTID 为每个事务提供唯一标识符,简化了复制和故障恢复,而 Binlog 依然是底层的变更日志机制。


GTID(Global Transaction ID)

  1. 定义:
    GTID 是一个全局唯一的事务标识符。它由 MySQL 5.6 引入,用于跟踪和标识服务器上的每个事务。

  2. 组成:
    GTID 由 source_id:transaction_id 组成,其中 source_id 通常是服务器的 UUID,transaction_id 是事务在该服务器上的序号。

  3. 用途:

    • 用于主从复制:GTID 确保每个事务在主服务器和从服务器上都有唯一的标识,有助于简化复制和故障恢复。
    • 自动故障切换:在 GTID 模式下,复制的管理变得更加简单和自动化,有助于自动故障切换。
  4. 优势:

    • 自动化:GTID 模式下,可以实现更自动化的故障恢复和复制管理。
    • 去重:避免了事务重复应用的问题。、
    • 灵活性:在主从切换和故障恢复中更加灵活。、

Binlog(二进制日志)

  1. 定义:
    Binlog 是 MySQL 用于记录所有更改数据的 SQL 语句的日志文件。它记录所有导致数据更改的事件(如插入、更新、删除操作)。

  2. 组成:
    Binlog 文件由一系列事件组成,每个事件记录了某个数据更改操作。

  3. 用途:

    • 数据恢复:通过重放 binlog,可以恢复数据库到特定的时间点。
    • 主从复制:从服务器可以读取主服务器的 binlog 并重放其中的事件,从而实现数据同步。
  4. 优势:

    • 数据恢复:通过 binlog,可以将数据库恢复到特定时间点。
    • 复制:Binlog 是 MySQL 主从复制的基础,确保从服务器可以同步主服务器的数据变化。

MySQL5.7基于yum搭建

安装 MySQL

# 下载MySQL yum 包
wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm

# 查看是否有mariadb
rpm -qa |grep mariadb

# 删除mariadb依赖
yum remove -y mariadb-libs.x86_64

# 安装密钥
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

# 安装 MySQL 源
rpm -Uvh mysql57-community-release-el7-10.noarch.rpm

# 安装 MySQL 服务器
yum install -y mysql-community-server

# 启动服务
systemctl start mysqld
systemctl enable mysqld

# 防火墙开放端口
firewall-cmd  --permanent --add-port=3306/tcp
firewall-cmd --reload
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

初始化并设置远程登录密码

查看密码

[root@mysql1 ~]# grep 'temporary password' /var/log/mysqld.log
2024-08-05T02:26:48.667443Z 1 [Note] A temporary password is generated for root@localhost: y7XtM-u9dVwt
  • 1
  • 2

登录MySQL

[root@mysql mysql]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.35

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

初始化密码(密码有复杂度,数字大小写和符号)

mysql> ALTER USER USER() IDENTIFIED BY 'Gdh%Y4C4BMyH';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
  • 1
  • 2
  • 3
  • 4
  • 5

支持root用户允许远程连接mysql数据库

mysql> grant all privileges on *.* to 'root'@'%' identified by 'Gdh%Y4C4BMyH' with grant option;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
  • 1
  • 2
  • 3
  • 4
  • 5

配置基于GTID的复制模式

GTID(全局事务标识符)是 MySQL 提供的一种新型复制方式,它简化了主从复制的配置和管理,确保数据的一致性和完整性。在配置 MySQL 双主复制之前,我们需要确保两台主服务器都启用了 GTID 模式。

在2台MySQL服务器上创建拥有复制权限的用户

# 创建拥有复制权限的用户
grant replication slave on *.* to 'synchronize'@'%' identified by 'Abc-1234';

# 刷新权限使其生效
flush privileges;

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

第一台主服务器配置

主服务器配置

修改第一台主服务器的配置文件 /etc/my.cnf,添加以下内容:

server-id = 100                 # 设置服务器的唯一标识符。
log_bin = mysql-bin             # 启用二进制日志记录。
gtid_mode = ON                  # 启用 GTID 模式。
enforce_gtid_consistency = true # 强制 GTID 一致性。
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

修改完配置文件后,重启 MySQL 服务使配置生效:

systemctl restart mysqld
  • 1

启动从服务

在创建好用户之后,进入 MySQL 数据库执行以下命令,将第二台服务器配置为从服务器:

进入 MySQL数据库

mysql -u root -p 
  • 1

执行以下命令

change master to
master_host="172.25.14.12",
master_user="synchronize",
master_password="Abc-1234",
master_auto_position=1;
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

启动从服务:

start slave;
  • 1

第二台主服务器配置

主服务器配置

在第二台主服务器上,同样需要修改配置文件 /etc/my.cnf,添加以下内容:

server-id = 101                 # 设置服务器的唯一标识符。
log_bin = mysql-bin             # 启用二进制日志记录。
gtid_mode = ON                  # 启用 GTID 模式。
enforce_gtid_consistency = true # 强制 GTID 一致性。
  • 1
  • 2
  • 3
  • 4

修改完配置文件后,重启 MySQL 服务使配置生效:

systemctl restart mysqld
  • 1

启动从服务

进入 MySQL 数据库执行以下命令,将第一台主服务器配置为从服务器:

进入 MySQL数据库

mysql -u root -p 
  • 1

执行以下命令

change master to
master_host="172.25.14.11",
master_user="synchronize",
master_password="Abc-1234",
master_auto_position=1;
  • 1
  • 2
  • 3
  • 4
  • 5

启动从服务:

start slave;
  • 1

查看是否成功同步

show slave status\G;
  • 1

在这里插入图片描述



参考文档:
Centos7.0 安装 MYSQL5.7
Linux中MySQL 双主复制(互为主从)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/938318
推荐阅读
相关标签
  

闽ICP备14008679号