• ADADADADAD

    MYSQL架构中该怎么主从GTID[ mysql数据库 ]

    mysql数据库 时间:2024-11-28 13:00:52

    作者:文/会员上传

    简介:

    GTID又叫全局事务ID(Global Transaction ID),是一个已提交事务的编号,并且是一个全局唯一的编号,Mysql 5.6版本之后在主从复制类型上新增了GTID复制。GTID是由server_uuid和事

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    GTID又叫全局事务ID(Global Transaction ID),是一个已提交事务的编号,并且是一个全局唯一的编号,Mysql 5.6版本之后在主从复制类型上新增了GTID复制。

    GTID是由server_uuid和事务ID组成的。即GUID=server_id:transaction_id.server_uuid是在数据库启动过程中自动生成的。每台机器的server_uuid不一样,同一环境删除重新搭建之后也不一样。

    工作原理:

    1. master更新数据时,会在事务前产生GTID,一同记录到binlog日志中。

    2. slave端的I/O线程将变更的binlog,写入到本地的relay log中。

    3. sql线程从relay log中获取GTID,然后对比slave端的binlog是否有记录。

    4. 如果有记录,说明该GTID的事务已经执行,slave会忽略。

    5. 如果没有记录,slave就会从relay log中执行该GTID的事务,并记录到binlog.

    环境配置

    /

    主服务器

    从服务器

    Ip

    192.168.31.79

    192.168.31.188

    hostname

    mysql

    mysql2

    mysql-version

    5.7.23

    5.7.23

    Server-id

    f99accbf-6690-11ea-a934-080027c1c1ff

    a535303f-668e-11ea-8be9-080027b0e953

    1.主库配置

    1.1参数配置

    [root@mysql2 bin]# vi /etc/my.cnf

    添加内容如下

    gtid_mode=on

    enforce_gtid_consistency=on

    log_bin=on

    binlog_format=row

    server-id=79

    [root@mysql2 bin]# service mysql stop

    [root@mysql2 bin]# service mysql stop

    1.2权限配置

    [root@mysql bin]# mysql -uroot -p

    mysql> grant replication slave on *.* to 'rep'@'192.168.31.%' identified by 'Oracle123';

    mysql> flush privileges;

    2.主库备份数据至从库恢复

    注:如果是新搭建的环境,可以不用做迁移步骤。

    3.从库配置

    2.1 从库参数配置

    [root@mysql2 bin]# vi /etc/my.cnf

    添加内容如下

    gtid_mode=on

    enforce_gtid_consistency=on

    log_slave_updates=1

    serve-id=188

    2.2从库权限配置

    [root@mysql2 bin]# mysql -uroot -p

    mysql> change master to master_host='192.168.31.79', master_user='rep',master_password='Oracle123',master_port=3306,master_auto_position=1;

    mysql> start slave;

    3.检查主从状态

    1)主库

    mysql> show master status;

    2)从库

    mysql> show slave status\G;

    4.验证

    1)主库

    mysql> create database test;

    2)从库

    mysql> show databases;

    注:

    在mysql 5.7版本之后,gtid_executed数值会被持久化

    mysql> use mysql

    mysql> desc gtid_executed;

    mysql> select * from gtid_executed;

    在执行reset master中,会清空表内的数据。

    mysql> show variables like '%gtid_executed%';

    该参数用来控制gtid_executed表的压缩。默认值是1000.意味着表压缩在执行1000个

    事务之后开始。

    MYSQL架构中该怎么主从GTID.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: gtidmysql