赞
踩
GTID 和 Binlog 是互补的技术。GTID 提供了更高级的事务跟踪和管理机制,而 Binlog 则是底层的日志记录机制。在 GTID 模式下,每个事务在写入 binlog 时都会附带一个 GTID,从而实现更加可靠和简化的复制管理。
在许多高可用方案中,GTID 和 Binlog 是结合使用的。GTID 为每个事务提供唯一标识符,简化了复制和故障恢复,而 Binlog 依然是底层的变更日志机制。
定义:
GTID 是一个全局唯一的事务标识符。它由 MySQL 5.6 引入,用于跟踪和标识服务器上的每个事务。
组成:
GTID 由 source_id:transaction_id 组成,其中 source_id 通常是服务器的 UUID,transaction_id 是事务在该服务器上的序号。
用途:
优势:
定义:
Binlog 是 MySQL 用于记录所有更改数据的 SQL 语句的日志文件。它记录所有导致数据更改的事件(如插入、更新、删除操作)。
组成:
Binlog 文件由一系列事件组成,每个事件记录了某个数据更改操作。
用途:
优势:
# 下载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
查看密码
[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
登录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>
初始化密码(密码有复杂度,数字大小写和符号)
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)
支持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)
GTID(全局事务标识符)是 MySQL 提供的一种新型复制方式,它简化了主从复制的配置和管理,确保数据的一致性和完整性。在配置 MySQL 双主复制之前,我们需要确保两台主服务器都启用了 GTID 模式。
在2台MySQL服务器上创建拥有复制权限的用户
# 创建拥有复制权限的用户
grant replication slave on *.* to 'synchronize'@'%' identified by 'Abc-1234';
# 刷新权限使其生效
flush privileges;
修改第一台主服务器的配置文件 /etc/my.cnf,添加以下内容:
server-id = 100 # 设置服务器的唯一标识符。
log_bin = mysql-bin # 启用二进制日志记录。
gtid_mode = ON # 启用 GTID 模式。
enforce_gtid_consistency = true # 强制 GTID 一致性。
修改完配置文件后,重启 MySQL 服务使配置生效:
systemctl restart mysqld
在创建好用户之后,进入 MySQL 数据库执行以下命令,将第二台服务器配置为从服务器:
进入 MySQL数据库
mysql -u root -p
执行以下命令
change master to
master_host="172.25.14.12",
master_user="synchronize",
master_password="Abc-1234",
master_auto_position=1;
启动从服务:
start slave;
在第二台主服务器上,同样需要修改配置文件 /etc/my.cnf,添加以下内容:
server-id = 101 # 设置服务器的唯一标识符。
log_bin = mysql-bin # 启用二进制日志记录。
gtid_mode = ON # 启用 GTID 模式。
enforce_gtid_consistency = true # 强制 GTID 一致性。
修改完配置文件后,重启 MySQL 服务使配置生效:
systemctl restart mysqld
进入 MySQL 数据库执行以下命令,将第一台主服务器配置为从服务器:
进入 MySQL数据库
mysql -u root -p
执行以下命令
change master to
master_host="172.25.14.11",
master_user="synchronize",
master_password="Abc-1234",
master_auto_position=1;
启动从服务:
start slave;
查看是否成功同步
show slave status\G;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。