GTID是基于mysql事务实现的,如果对mysql事务没啥概念的话,建议先看看

『浅入深出』MySQL 中事务的实现

不在单独说明如何搭建mysql单点 请参考

使用二进制包安装mysql

然后再看这个gtid的

https://www.hi-linux.com/posts/47176.html

 

现在有这样一个需求:

主1mysql 是个单点的mysql库,库里有很多数据,想给主1增加个从库,并且使用gtid

具体操作可以在https://www.hi-linux.com/posts/47176.html 里寻找

思路如下:

1.备份主1的数据或者拿主1最新的备份(主1已经开启gtid)

 

通过配置文件my.cnf 开启gtid
gtid-mode = ON
enforce-gtid-consistency = ON
log-slave-updates = ON

在线开启gtid 不用重启
mysql> set global gtid_mode='OFF_PERMISSIVE';
Query OK, 0 rows affected (0.01 sec)
mysql> set global gtid_mode='ON_PERMISSIVE';
Query OK, 0 rows affected (0.01 sec)
mysql> set global enforce_gtid_consistency=ON;
Query OK, 0 rows affected (0.00 sec)
mysql> set global gtid_mode='ON';
Query OK, 0 rows affected (0.00 sec)


 查看主库与从库的GTID是否开启

mysql> show variables like "%gtid%";

+----------------------------------+-----------+
| Variable_name                    | Value     |
+----------------------------------+-----------+
| binlog_gtid_simple_recovery      | ON        |
| enforce_gtid_consistency         | ON        |
| gtid_executed_compression_period | 1000      |
| gtid_mode                        | ON        |
| gtid_next                        | AUTOMATIC |
| gtid_owned                       |           |
| gtid_purged                      |           |
| session_track_gtids              | OFF       |
+----------------------------------+-----------+
8 rows in set (0.00 sec)

mysql> show variables like '%gtid_next%';
+---------------+-----------+
| Variable_name | Value     |
+---------------+-----------+
| gtid_next     | AUTOMATIC |
+---------------+-----------+
1 row in set (0.00 sec)

备份常用指令
 /usr/local/mysql/bin/mysqldump --all-databases --single-transaction --master-data=2 --set-gtid-purged=off -F --triggers --routines --events  --user=root -p --socket=/data/mysql3306/logs/mysql.sock > all111_0423.sql
所需命令

相关文章: