一.mysql 基于GTID的主从复制
mysql数据库从5.6.5开始新增一种基于GDIT的复制方式。
通过GDIT保证每个主库上提交的事务在集群中有一个唯一的ID.
这种方式强化了数据库的主备一致性,故障恢复以及容错能力。
GTID (Global Transaction ID) 是对于一个已提交事务的编号,
并且是一个全局唯一的编号。 GTID 实际上 是由 UUID+TID 组成的。
其中 UUID 是一个 MySQL 实例的唯一标识。
TID 代表了该实例上已经提交的事务数量,并且随着事务提交单调递增。
注:此实验基于mysql主从复制的基础,关于mysql的下载配置等不再赘述,
实验:
主:server4
从:server2
主库;
1.编辑配置文件:
vim /etc/my.cn
文章末尾编辑(不改变主从复制时添加的语句):
gtid-mode=on
enforce-gtid-consistency=1
2.开启mysql服务:
systemctl start mysqld
3.进库:
mysql -p #进入数据库
添加多个value
mysql> use westos;
mysql> show tables;
mysql> insert into usertb values('user3','123');
Query OK, 1 row affected (0.08 sec)
mysql> insert into usertb values('user4','123');
Query OK, 1 row affected (0.28 sec)
mysql> insert into usertb values('user5','123');
Query OK, 1 row affected (0.08 sec)
从库:server2;
1.编辑配置文件:
vim /etc/my.cnf
文章末尾编辑(不改变主从复制时添加的语句):
gtid-mode=on
enforce-gtid-consistency=1
2.开启服务:
systemctl restart mysqld
3.进入数据库:
mysql -p
stop slave;
CHANGE_MASTER TO MASTER_HOST='172.25.17.4', master='repl', master_pawwword='Westos-6', MASTWR_AUTO_POSITION=1;
start slave;
show slave status\G
select * from gtid_executed;
测试;
在server4中:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
5 rows in set (0.00 sec)
mysql> use test;
Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select * from userlist;
+----------+----------+
| username | password |
+----------+----------+
| user1 | 111 |
| user2 | 222 |
+----------+----------+
2 rows in set (0.00 sec)
##删除用户
mysql> delete from userlist where username='user1';
Query OK,
1 row affected (0.07 sec)
server2中:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
5 rows in set (0.00 sec)
mysql> use test;
Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select * from userlist;
+----------+----------+ |
username | password |
+----------+----------+
| user2 | 222 |
+----------+----------+
---------------------