• MySQL5.6基于GTID主从复制


    GTID简述:
        mysql数据库从5.6.5开始新增一种基于GDIT的复制方式。通过GDIT保证每个主库上提交的事务在集群中有一个唯一的ID.这种方式强化了数据库的主备一致性,故障恢复以及容错能力。 
        GTID (Global Transaction ID) 是对于一个已提交事务的编号,并且是一个全局唯一的编号。 GTID 实际上 是由 UUID+TID 组成的。其中 UUID 是一个 MySQL 实例的唯一标识。TID 代表了该实例上已经提交的事务数量,并且随着事务提交单调递增。

    1. 环境准备:
        操作系统:CentOS release 6.8 (Final)
        MySQL版本:5.6.21(源码包编译安装)
    IP角色端口
    192.168.1.150master3306
    192.168.1.151slave3306
    2. 文件位置:
        源码包编译安装,配置文件my.cnf路径:/usr/local/mysql/my.cnf
    3. 开始配置:
        3.1 修改两台主机的hosts文件:
                ~]# vim /etc/hosts
                        192.168.1.150 master
                        192.168.1.151 slave
         3.2 修改两台主机的MySQL配置文件:
                  ~]# vim /usr/local/mysql/my.cnf
                         autocommit=1
                         log-bin=mysql-bin  ##开启二进制日志
                         binlog_format=row
                         gtid_mode=ON  ##启动gtid模式
                         enforce_gtid_consistency=1  ##开启GTID一些安全限制
                         log-slave-updates  ##从机日志同步
                         server-id=150  ##服务器标识
                            主从都要进行此修改,注意二者服务器标识不同
                   server_id存在的作用:mysql同步的数据中是包含server-id的,而server-id用于标识该语句最初是从哪个server写入的。因此server-id一定要有的。server_id不能相同的原因:每一个同步中的slave在master上都对应一个master线程,该线程就是通过slave的server-id来标识的;每个slave在master端最多有一个master线程,如果两个slave的server-id 相同,则后一个连接成功时,slave主动连接master之后,如果slave上面执行了slave stop;则连接断开,但是master上对应的线程并没有退出;当slave start之后,master不能再创建一个线程而保留原来的线程,那样同步就可能有问题。在mysql做主主同步时,多个主需要构成一个环状,但是同步的时候又要保证一条数据不会陷入死循环,这里就是靠server-id来实现的;
        3.3 保存后重启数据库:
                 ~]# /etc/init.d/mysql restart
                        Shutting down MySQL............ SUCCESS! 
                        Starting MySQL.. SUCCESS!
        3.4 主库授权:
                mysql> grant replication slave,reload,super on *.* to slave@'192.168.1.%' identified by '1234';
                mysql> flush privileges;
        3.5 从库更改从属关系:
                mysql> change master to
            -> master_host="192.168.1.150",
            -> master_port=3306,
            -> master_user="slave",
            -> master_password="1234",
            -> master_auto_position=1;
                mysql> start slave;  ##从库启动slave
                mysql> show slave status G;
                    Slave_IO_Running: Yes
                Slave_SQL_Running: Yes  -> 主从配置成功
    4. 测试:
        主库建表并插入数据:
            mysql> create table t1(id int);
                Query OK, 0 rows affected (0.03 sec)
            mysql> insert into t1 values (1);
                Query OK, 1 row affected (0.01 sec)
        从库可以查询到:
            mysql> select * from t1;
    +------+
    | id     |
    +------+
    | 1      |
    +------+



                






  • 相关阅读:
    SpringBoot-07:SpringBoot整合PageHelper做多条件分页查询
    SpringBoot-06:SpringBoot增删改查一套完整的考试案例
    SpringBoot-05:SpringBoot初运行以及tomcat端口号的修改
    SpringBoot-04:SpringBoot在idea中的俩种创建方式
    SpringBoot-03:SpringBoot+Idea热部署
    SpringBoot-02:SpringBoot中的POM文件详细解释
    SpringBoot-01:什么是SpringBoot?
    SSM-Spring-23:概念《Spring中的事务是什么?》
    二叉查找树 & B(B-)树 & B+树 & B*树
    静态资源缓存与更新
  • 原文地址:https://www.cnblogs.com/plutozzl/p/13217838.html
Copyright © 2020-2023  润新知