GTID(Global Transaction Identifier)是MySQL 5.6版本后引入的一个特性,用于全局事务标识。它使得主从复制更加简单、可靠和高效。GTID由服务器UUID和事务ID组成,全局唯一地标识一个事务。
MySQL的GTID配置主要涉及两种类型:
GTID主要应用于需要高可用性和数据一致性的数据库环境,如:
以下是一个简单的MySQL GTID主从配置示例:
编辑MySQL配置文件(通常是my.cnf
或my.ini
),添加以下配置:
[mysqld]
server-id=1
log-bin=mysql-bin
binlog_format=row
gtid_mode=ON
enforce_gtid_consistency=ON
重启MySQL服务使配置生效。
同样编辑MySQL配置文件,添加以下配置:
[mysqld]
server-id=2
relay_log=mysql-relay-bin
log_bin=mysql-bin
binlog_format=row
gtid_mode=ON
enforce_gtid_consistency=ON
read_only=ON
重启MySQL服务。
在主服务器上创建一个复制用户:
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
在主服务器上锁定表并记录二进制日志位置:
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
记下File
和Position
的值。
在从服务器上设置主服务器信息:
CHANGE MASTER TO
MASTER_HOST='master_host',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='recorded_file_name',
MASTER_LOG_POS=recorded_position;
START SLAVE;
innodb_buffer_pool_size
、innodb_log_file_size
等,以优化性能。领取专属 10元无门槛券
手把手带您无忧上云