在2021年最后一个季度,AWS极光发布版本3。这个新版本将极光最新MySQL 8版本,移植的许多优点MySQL 8有超过以前的版本。
虽然这带来很多新的极光有趣的特性,我们这里要讲的是如何ddl的行为当使用在线的选择。快速与发生在MySQL 8与集团标准和复制。
测试
所有测试都是运行在一个极光r6g实例。大二次可用性区域。测试是由:
四个连接
-
- # 1执行DDL
- # 2执行插入数据表中我改变
- # 3在一个不同的表执行插入数据
- # 4检查其他节点操作
在极光实例,sysbench模式创建表和五百万行,只是为了得到一些流量。而测试表5毫升行是:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
创建
表
“windmills_test”(
“id”
长整型数字
非空
AUTO_INCREMENT,
”uuid”
字符(36)
字符集
use utf8
核对
utf8_bin
非空,
“millid”
短整型
非空,
“kwatts_s”
int
非空,
”日期”
日期
非空,
“位置”
varchar(50)
字符集
use utf8
核对
utf8_bin
非空,
“活跃”
非常小的整数
非空
默认的
' 1 ',
”时间”
时间戳
非空
默认的
CURRENT_TIMESTAMP
在更新
CURRENT_TIMESTAMP,
“strrecordtype”
字符(3)
字符集
use utf8
核对
utf8_bin
非空,
主键
(“id”),
关键
“IDX_millid”(“millid”、“活跃的”),
关键
“IDX_active”(“id”、“活跃的”),
关键
“kuuid_x”('uuid”),
关键
“millid_x”(“millid”),
关键
“active_x”(“活跃的”),
关键
“idx_1”('uuid”、“活跃的”)
)
引擎
=
InnoDB
AUTO_INCREMENT
=0
默认的
字符集
=utf8mb3
核对
=utf8_bin
ROW_FORMAT
=
动态
|
执行命令:
|
1
2
3
4
5
6
7
8
9
10
11
12
|
连接
1
:
改变
表
windmills_test
添加
指数
idx_1
(
”
uuid
”
,
”
活跃的
”
)
,
算法
=
原地
,
锁
=
没有一个
;
改变
表
windmills_test
下降
指数
idx_1
,
算法
=
原地
;
连接
2
:
而
(
1
=
1
]
;
做
达
=
美元
(
日期
+
“% s % 3 n”
)
;
mysql
- - -
违约
- - - - - -
文件
=
。
/
我的
.cnf
- - - - - -
D
windmills_large
- - - - - -
e
“插入windmills_test选择零、uuid millid, kwatts_s,日期,地点,活跃,时间,从windmills4 strrecordtype限制1;”
- - - - - -
e
“select count(*)从windmills_large.windmills_test;“
>
/
dev
/
零
;
db
=
美元
(
日期
+
“% s % 3 n”
)
;
回声
“$(回声”
(
$ db
- - - - - -
美元哒
)
“| bc)”
;
睡眠
1
;
完成
连接
3
:
而
(
1
=
1
]
;
做
达
=
美元
(
日期
+
“% s % 3 n”
)
;
mysql
- - -
违约
- - - - - -
文件
=
。
/
我的
.cnf
- - - - - -
D
windmills_large
- - - - - -
e
“插入windmills3选择零、uuid millid, kwatts_s,日期,地点,活跃,时间,从windmills4 strrecordtype限制1;”
- - - - - -
e
“select count(*)从windmills_large.windmills_test;“
>
/
dev
/
零
;
db
=
美元
(
日期
+
“% s % 3 n”
)
;
回声
“$(回声”
(
$ db
- - - - - -
美元哒
)
“| bc)”
;
睡眠
1
;
完成
连接
4
:
而
(
1
=
1
]
;
做
回声
“$(日期+ % t . % 3 n)”
;
mysql
- - -
违约
- - - - - -
文件
=
。
/
我的
.cnf
- - - - - -
h
<
二次
极光
实例
>
- - - - - -
D
windmills_large
- - - - - -
e
“显示全部processlist;”
|
egrep
- - - - - -
我
- - - - - -
e
”(windmills_test | windmills_large)”
|
grep
- - - - - -
我
- - - - - -
v
本地主机
;
睡眠
1
;
完成
|
操作:
1)开始插入连接
2)启动命令连接4 - 5在其他节点上
3)执行:DC1-1 ((电子邮件保护))[windmills_large] > ALTER TABLE windmills_test添加索引idx_1 (uuid,活跃的),算法=原地,锁=没有;
,我想捕获操作影响的共同行动,创建索引。我期望的期望是在操作时没有影响宣布“在线”,比如创建一个索引,以及节点之间的数据的一致性。
让我们看看发生了什么…
结果
在运行同一个表的插入,执行改变:
|
1
2
3
|
mysql>
改变
表
windmills_test
添加
指数
idx_1('uuid”、“活跃的”),
算法
=原地,
锁
=
没有一个;
查询好吧,0
行
影响(16.51sec)
记录:0副本:0
警告:0
|
不停止运行在同一个表或任何其他表在极光实例。
我们只能确定一个最低性能影响:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
(
根
@
知识产权
- - - - - -
10
- - - - - -
0
- - - - - -
0
- - - - - -
11
tmp
]
#虽然[1 = 1];做da = $(日期+ ' % s % 3 n '); - d windmills_large mysql——defaults-file =。/ my . cnf中所做- e”插入windmills_test选择零,uuid、millid kwatts_s,日期,地点,活跃,时间,从windmills4 strrecordtype限制1;”- - - - - -e“select count(*)从windmills_large.windmills_test;“>/dev/零;db=美元(日期 +'%s.%3N'); echo "$(echo "($db - $da)"|bc)";sleep 1;done
。
347年
。
283年
。
278年
。
297年
。
291年
。
317年
。
686年
←
开始
<
剪断
>
。
512年
←
结束
。
278年
。
284年
。
279年
|
二级节点不受影响,这是因为极光在存储管理数据复制。没有所谓的应用从Relaylog,正如我们在标准MySQL异步或数据复制和复制。
结果是在极光3中,我们可以零影响指数(或任何其他在线/即时)操作,这个我包括数据复制其他实例的高可用性。
如果我们比较这组复制(见博客):
|
1
2
3
|
GR
极光
3
时间
在
持有
为
插入
为
改变
表
~
0.217
证券交易委员会
~
0
证券交易委员会
时间
在
持有
为
插入
为
另一个
表
~
0.211
证券交易委员会
~
0
证券交易委员会
|
然而,请记住,MySQL和组复制仍然需要应用辅助上的数据。这意味着,如果你的改变在10小时建立索引,二级节点将偏差来源大约10个小时。
极光3或雷竞技下载官网Percona XtraDB集群(PXC)变化时将源已完成操作。
PXC呢?嗯,我们有不同的场景:
|
1
2
3
|
PXC
(
NBO
)
极光
3
时间
在
持有
为
插入
为
改变
表
~
120年
证券交易委员会
~
0
证券交易委员会
时间
在
持有
为
插入
为
另一个
表
~
25
证券交易委员会
~
0
证券交易委员会
|
我们将有一个更高的影响而做Alter操作,但是数据将在所有节点同时集群中保持高度的一致性。
结论
极光并非对所有的使用,而不是为所有预算。然而,有一些非常好的方面就像我们刚刚见过。标准MySQL和极光的区别不在于控股/锁定的时间(即操作影响)但在HA方面。如果我有我的数据/结构在所有二级同时作为源,我会感觉更舒服不必等待额外的时间。
这就是为什么PXC在这种情况下是一个更好的选择,如果你能负担得起的锁定时间。如果不是,极光3是你的解决方案,只是做你的数学实例资源和保守。






你能解释PXC时报吗?这些120和25秒是什么?他们与时间完成创建索引在本地节点/集群?
你可以在这里找到一个完整的解释https://www.雷竞技下载官网percona.com/blog/percona-xtradb-cluster-non-blocking-operation-for-online-schema-upgrade/
谢谢你阅读这篇文章