背景
在上一篇推文中,我们介绍了 MySQL Group Replication 8.0.16 支持信息碎片化功能来增强大型事务处理能力。
如果您想在组复制中使用该功能,则任何组成员的版本都不能低于 8.0.16!
简单地说就是由于低版本协议上不支持。MySQL 8.0.16 的组通讯开始支持新协议,简称“分段协议”,之前的版本中只有一种“压缩协议”。
如果多个成员想加入复制组,那么在协议匹配上遵循以下原则:
现有复制组成员和新加入成员版本相同,加入成功。
低版本成员想加入高版本的组会被驱逐,加入失败。
高版本的成员想加入低版本的组,单独加入成功,多个加入失败。
例如:
一个 MySQL Server 8.0.16 实例可以成功加入使用通信协议版本 5.7.24 的组。
一个 MySQL Server 5.7.24 实例无法成功加入使用通信协议版本 8.0.16 的组。
两个 MySQL Server 8.0.16 实例无法同时加入使用通信协议版本 5.7.24 的组。
两个 MySQL Server 8.0.16 实例可以同时加入使用通信协议版本 8.0.16 的组。
新增 UDF
为了能让高版本的复制组更便于加入低版本的成员,MySQL 8.0.16 新增两个 UDF。
您可以使用两个新的 UDF 命令去管理组通信协议:
1. group_replication_set_communication_protocol(new_protocol)
设置组复制通讯协议版本
SELECT group_replication_set_communication_protocol("8.0.15")
填入一个所有成员都支持的版本号,即:new_protocol ≤ 所有成员的 MySQL版本。
new_protocol 格式:major.minor.patch (主版本号.次版本号.发布版本号)例如:8.0.15。
2. group_replication_get_communication_protocol()
获取复制中最旧成员的 MySQL 版本号
SELECT group_replication_get_communication_protocol() +------------------------------------------------+ | group_replication_get_communication_protocol() | +------------------------------------------------+ | 5.7.14 | +------------------------------------------------+
获取的版本号可能与设置的值不一致,但不一致的版本之间组复制协议是一样的。
返回结果格式:major.minor.patch (主版本号.次版本号.发布版本号)例如:8.0.15。
以上两个 UDF 对全部组成员有效,主机或从机上均可执行。
结论
若想使用信息碎片功能。建议将组复制成员全部升级为 8.0.16。
若组内成员版本仅有部分为 8.0.16,可以用两个新的函数来让高版本的成员保持与其它成员组协议一致。
请点击输入图片描述
langouster_udf.dll 专用网马(php) 一、功能:利用MYSQL的Create Function语句,将MYSQL账号转化为系统system权限。 二、适用场合:1.目标系统是Windows(Win2000,XP,Win2003);2.你已经拥有MYSQL的某个用户账号,此账号必须有对mysql的insert和delete权限以创建和抛弃函数(MYSQL文档原语)。 三、使用帮助: 第一步:将本文件上传到目标机上,填入你的MYSQL账号经行连接。 第二步:连接成功后,导出DLL文件,导出时请勿必注意导出路径(一般情况下对任何目录可写,无需考虑权限问题),对于MYSQL5.0以上版本,你必须将DLL导出到目标机器的系统目录(win 或 system32),否则在下一步 *** 作中你会看到"No paths allowed for shared library"错误。 第三步:使用SQL语句创建功能函数。语法:Create Function 函数名(函数名只能为下面列表中的其中之一) returns string soname '导出的DLL路径';对于MYSQL5.0以上版本,语句中的DLL不允许带全路径,如果你在第二步中已将DLL导出到系统目录,那么你就可以省略路径而使命令正常执行,否则你将会看到"Can't open shared library"错误,这时你必须将DLL重新导出到系统目录。 第四步:正确创建功能函数后,你就可以用SQL语句来使用这些功能了。语法:select 创建的函数名('参数列表'); 每个函数有不同的参数,你可以使用select 创建的函数名('help');来获得指定函数的参数列表信息。 第五步:使用完成后你可能需要删除在第二步中导出的DLL,但在删除DLL前请先删除你在第三步中创建的函数,否则删除 *** 作将失败,删除第三步中创建的函数的SQL语句为:drop function 创建的函数名; 四、功能函数说明: cmdshell 执行cmddownloader 下载者,到网上下载指定文件并保存到指定目录open3389 通用开3389终端服务,可指定端口(不改端口无需重启)backshell 反dShellProcessView 枚举系统进程KillProcess 终止指定进程regread 读注册表regwrite 写注册表shut 关机,注销,重启about 说明与帮助函数但err中没有记录任何错误,只有重启的信息。原来该语句正常执行过,而现在每次执行必定会重现崩溃的情况,使用navicat也有同样问题。语句中使用了mysqludf_preg函数。附innodb_status如下:
=====================================
2014-08-26 22:07:49 7fa7c74ba700 INNODB MONITOR OUTPUT
=====================================
Per second averages calculated from the last 20 seconds
-----------------
BACKGROUND THREAD
-----------------
srv_master_thread loops: 0 srv_active, 0 srv_shutdown, 139 srv_idle
srv_master_thread log flush and writes: 139
----------
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)