我有这个问题的“如何避免陷阱模式升级与Percona XtraDB集群(PXC)”雷竞技下载官网研讨会并想回答在一个单独的文章。
将RSU影响GTID如果PXC集群复制到另一个集群的一致性?
回答:是的,没有。
Galera分配自己的GTID操作,复制到集群中的所有节点。这些操作包括DML (插入/更新/删除)InnoDB表和DDL命令,使用默认的钢铁洪流方法执行。你可以找到更多的细节关于GTIDs工作Percona XtraDB集群雷竞技下载官网博客。
然而,DDL命令,执行与RSU方法,应用在本地,有自己的个体,GTID。
让我们建立一个复制两个PXC集群,看看它是如何工作的。
首先,让我们使用默认的wsrep_osu_method钢铁洪流和集群的每个节点上创建三个表:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20.
21
22
23
24
25
26
|
node1>
创建
表
toi1 (id
int)
引擎
=
innodb;
查询好吧,0
行
影响(0,08年sec)
node1>
显示
全球
变量
就像
“gtid_executed”\ G
* * * * * * * * * * * * * * * * * * * * * * * * * * *1。
行
* * * * * * * * * * * * * * * * * * * * * * * * * * *
Variable_name:gtid_executed
价值:24 f602ff- - - - - -cb98- - - - - -11 ea- - - - - -beb2- - - - - -ba09d9a11266:1
1
行
在
集
(0,1sec)
node2>
创建
表
toi2 (id
int)
引擎
=
innodb;
查询好吧,0
行
影响(0,07年sec)
node2>
显示
全球
变量
就像
“gtid_executed”\ G
* * * * * * * * * * * * * * * * * * * * * * * * * * *1。
行
* * * * * * * * * * * * * * * * * * * * * * * * * * *
Variable_name:gtid_executed
价值:24 f602ff- - - - - -cb98- - - - - -11 ea- - - - - -beb2- - - - - -ba09d9a11266:1- - - - - -2
1
行
在
集
(0,1sec)
node3>
创建
表
toi3 (id
int)
引擎
=
innodb;
查询好吧,0
行
影响(0,07年sec)
node3>
显示
全球
变量
就像
“gtid_executed”\ G
* * * * * * * * * * * * * * * * * * * * * * * * * * *1。
行
* * * * * * * * * * * * * * * * * * * * * * * * * * *
Variable_name:gtid_executed
价值:24 f602ff- - - - - -cb98- - - - - -11 ea- - - - - -beb2- - - - - -ba09d9a11266:1- - - - - -3
1
行
在
集
(0,1sec)
|
你看到所有GTIDs UUID:相同24 f602ff- - - - - -cb98- - - - - -11 ea- - - - - -beb2- - - - - -ba09d9a11266和事务的数量增加无论哪个节点变化的来源。
所有更改成功复制。因此,副本已经收到和应用GTIDs可以看到显示奴隶状态输出:
|
1
2
3
4
5
6
|
mysql>
显示
奴隶的地位\ G
* * * * * * * * * * * * * * * * * * * * * * * * * * *1。
行
* * * * * * * * * * * * * * * * * * * * * * * * * * *
…
Retrieved_Gtid_Set:24 f602ff- - - - - -cb98- - - - - -11 ea- - - - - -beb2- - - - - -ba09d9a11266:1- - - - - -3
Executed_Gtid_Set:24 f602ff- - - - - -cb98- - - - - -11 ea- - - - - -beb2- - - - - -ba09d9a11266:1- - - - - -3
…
|
RSU方法我们在每个节点上执行DDL时不同步与其他集群。操作完成后没有复制到其他节点本身,而是依赖于DBA执行手动更改。因此GTID对于这样一个操作使用本地UUID:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20.
21
22
23
24
25
26
27
28
29日
30.
31日
32
33
34
35
36
37
38
|
node1>
集
wsrep_osu_method =“rsu”;
查询好吧,0
行
影响(0,00sec)
node1>
创建
表
rsu (id
int)
引擎
=
innodb;
查询好吧,0
行
影响(0,04sec)
node1>
显示
全球
变量
就像
“gtid_executed”\ G
* * * * * * * * * * * * * * * * * * * * * * * * * * *1。
行
* * * * * * * * * * * * * * * * * * * * * * * * * * *
Variable_name:gtid_executed
价值:24 f602ff- - - - - -cb98- - - - - -11 ea- - - - - -beb2- - - - - -ba09d9a11266:1- - - - - -3,
25394777- - - - - -cb98- - - - - -11 ea- - - - - -a23a- - - - - -98年af65266957:1
1
行
在
集
(0,00sec)
node2>
集
wsrep_osu_method =“rsu”;
查询好吧,0
行
影响(0,00sec)
node2>
创建
表
rsu (id
int)
引擎
=
innodb;
查询好吧,0
行
影响(0,04sec)
node2>
显示
全球
变量
就像
“gtid_executed”\ G
* * * * * * * * * * * * * * * * * * * * * * * * * * *1。
行
* * * * * * * * * * * * * * * * * * * * * * * * * * *
Variable_name:gtid_executed
价值:24 f602ff- - - - - -cb98- - - - - -11 ea- - - - - -beb2- - - - - -ba09d9a11266:1- - - - - -3,
322年ff3eb- - - - - -cb98- - - - - -11 ea- - - - - -8 a94- - - - - -98年af65266957:1
1
行
在
集
(0,00sec)
node3>
集
wsrep_osu_method =“rsu”;
查询好吧,0
行
影响(0,00sec)
node3>
创建
表
rsu (id
int)
引擎
=
innodb;
查询好吧,0
行
影响(0,04sec)
node3>
显示
全球
变量
就像
“gtid_executed”\ G
* * * * * * * * * * * * * * * * * * * * * * * * * * *1。
行
* * * * * * * * * * * * * * * * * * * * * * * * * * *
Variable_name:gtid_executed
价值:24 f602ff- - - - - -cb98- - - - - -11 ea- - - - - -beb2- - - - - -ba09d9a11266:1- - - - - -3,
3 ab8cf00- - - - - -cb98- - - - - -11 ea- - - - - -b433- - - - - -98年af65266957:1
1
行
在
集
(0,1sec)
|
如你所见,这个操作与三个不同的uuid GTIDs创建三个节点:25394777- - - - - -cb98- - - - - -11 ea- - - - - -a23a- - - - - -98年af65266957,322年ff3eb- - - - - -cb98- - - - - -11 ea- - - - - -8 a94- - - - - -98年af65266957和3 ab8cf00- - - - - -cb98- - - - - -11 ea- - - - - -b433- - - - - -98年af65266957。
集群复制GTID收到的节点设置为一个复制来源:
|
1
2
3
4
5
6
7
8
|
mysql>
显示
奴隶的地位\ G
* * * * * * * * * * * * * * * * * * * * * * * * * * *1。
行
* * * * * * * * * * * * * * * * * * * * * * * * * * *
…
Retrieved_Gtid_Set:24 f602ff- - - - - -cb98- - - - - -11 ea- - - - - -beb2- - - - - -ba09d9a11266:1- - - - - -3,
25394777- - - - - -cb98- - - - - -11 ea- - - - - -a23a- - - - - -98年af65266957:1
Executed_Gtid_Set:24 f602ff- - - - - -cb98- - - - - -11 ea- - - - - -beb2- - - - - -ba09d9a11266:1- - - - - -3,
25394777- - - - - -cb98- - - - - -11 ea- - - - - -a23a- - - - - -98年af65266957:1
…
|
所以默认RSU GTID不产生任何问题。
然而,如果以后你需要执行故障转移和设置复制源节点,其他节点的副本将尝试运用当地GTIDs和失败的错误:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20.
21
22
23
24
25
26
|
mysql>
停止奴隶;
查询好吧,0
行
影响(0,1sec)
mysql>
改变
主
来
master_host=“127.0.0.1”,
master_port
=13004年,
master_user=“根”,MASTER_AUTO_POSITION=1;
查询好吧,0
行
受到影响,1警告(0,02年sec)
mysql>
开始的奴隶;
查询好吧,0
行
影响(0,1sec)
mysql>
显示
奴隶的地位\ G
* * * * * * * * * * * * * * * * * * * * * * * * * * *1。
行
* * * * * * * * * * * * * * * * * * * * * * * * * * *
…
Relay_Master_Log_File:
binlog.000004
Slave_IO_Running:是的
Slave_SQL_Running:
没有
…
Last_Errno:1050年
Last_Error:错误
“表”rsu已经存在的
在
查询。
默认的
数据库:
“测试”。查询:
“创建表rsu (id int)引擎=
…
Last_SQL_Errno: 1050
Last_SQL_Error:错误
表
“rsu”
已经
存在
”查询。默认数据库:测试”。查询:
创建
表
rsu (id
int)
引擎
=
innodb”
…
Retrieved_Gtid_Set:322年ff3eb- - - - - -cb98- - - - - -11 ea- - - - - -8 a94- - - - - -98年af65266957:1
Executed_Gtid_Set:24 f602ff- - - - - -cb98- - - - - -11 ea- - - - - -beb2- - - - - -ba09d9a11266:1- - - - - -3,
25394777- - - - - -cb98- - - - - -11 ea- - - - - -a23a- - - - - -98年af65266957:1
…
|
唯一的解决办法就是注射空交易而不是一个,由RSU操作:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20.
21
22
23
24
25
26
|
mysql
>
集
gtid_next=322年ff3eb - cb98 - 11 - ea - 8 a94 - 98 af65266957:1”
;
查询
好吧
,
0
行
影响
(
0
,
00
证券交易委员会
)
mysql
>
开始
事务
;
查询
好吧
,
0
行
影响
(
0
,
00
证券交易委员会
)
mysql
>
提交
;
查询
好吧
,
0
行
影响
(
0
,
01
证券交易委员会
)
mysql
>
集
gtid_next=“自动”
;
查询
好吧
,
0
行
影响
(
0
,
00
证券交易委员会
)
mysql
>
开始
奴隶
;
查询
好吧
,
0
行
影响
(
0
,
01
证券交易委员会
)
mysql
>
显示
奴隶
状态
\
G
* * * * * * * * * * * * * * * * * * * * * * * * * * *
1。
行
* * * * * * * * * * * * * * * * * * * * * * * * * * *
。
。
。
Slave_IO_Running
:
是的
Slave_SQL_Running
:
是的
。
。
。
Retrieved_Gtid_Set
:
322年ff3eb- - - - - -cb98- - - - - -11 ea- - - - - -8 a94- - - - - -98年af65266957
:
1
Executed_Gtid_Set
:
24 f602ff- - - - - -cb98- - - - - -11 ea- - - - - -beb2- - - - - -ba09d9a11266
:
1- - - - - -3
,
25394777- - - - - -cb98- - - - - -11 ea- - - - - -a23a- - - - - -98年af65266957
:
1
,
322年ff3eb- - - - - -cb98- - - - - -11 ea- - - - - -8 a94- - - - - -98年af65266957
:
1
。
。
。
|
结论
操作在RSU模式创建本地GTIDs UUID,不同于一个集群范围的使用。他们不会导致任何错误,直到您需要执行故障转移和替代当前复制源与另一个节点。
雷竞技下载官网Percona XtraDB集群是一个具有成本效益和可靠的集群解决方案来支持您的业务关键型数据创建的。MySQL的它给你带来的好处和特点以及增加企业的特点Percona MySQL服务器。雷竞技下载官网






