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.150 master 3306
    192.168.1.151 slave 3306
  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 |
    ±-----+
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值