扩展MySQL 5.6/....../ 编写半同步复制插件

4.4.7写半同步复制插件

本节介绍如何使用中找到的示例插件来编写服务器端半同步复制插件。插件/ semisync.MySQL源发行版的目录。该目录包含命名的源和副本插件的源文件rpl_semi_sync_master.rpl_semi_sync_slave.。这里的信息仅涵盖如何设置插件框架。有关插件如何实现复制功能的详细信息,请参阅源。

要编写半同步复制插件,请在插件源文件中包含以下头文件。根据插件功能和要求,也可能需要其他MySQL或常规标题文件。

#include 

插件定义mysql_replication_plugin.服务器插件类型和声明插件所需的数据结构。

对于来源方面,semisync_master_plugin.cc.包含此名为插件的常规描述符rpl_semi_sync_master.

mysql_declare_plugin(semi_sync_master){MYSQL_REPLICATION_PLUGIN,&semi_sync_master_plugin, “rpl_semi_sync_master”, “赫振兴”, “半同步复制主”,PLUGIN_LICENSE_GPL,semi_sync_master_plugin_init,/ *插件初始化* / semi_sync_master_plugin_deinit,/ *插件DEINIT * / 0100 / * 1.0 * /,semi_sync_master_status_vars,/ *状态变量* / semi_sync_master_system_vars,/ *系统变量* / null,/ * config选项* / 0,/ *标志* /} mysql_declare_plugin_end;

对于复制品,semisync_slave_plugin.cc.包含此名为插件的常规描述符rpl_semi_sync_slave.

mysql_declare_plugin(semi_sync_slave){MYSQL_REPLICATION_PLUGIN,&semi_sync_slave_plugin, “rpl_semi_sync_slave”, “赫振兴”, “半同步复制从属”,PLUGIN_LICENSE_GPL,semi_sync_slave_plugin_init,/ *插件初始化* / semi_sync_slave_plugin_deinit,/ *插件DEINIT * / 0100 / * 1.0 * /,semi_sync_slave_status_vars,/ *状态变量* / semi_sync_slave_system_vars,/ *系统变量* / null,/ * config选项* / 0,/ *标志* /} mysql_declare_plugin_end;

对于源和副本插件,常规描述符具有指向特定于类型的描述符,初始化和除法识功能的指针,以及插件实现的状态和系统变量。有关变量设置的信息,请参阅第4.4.2.2节“服务器插件状态和系统变量”。。以下备注讨论了特定于特定于类型的描述符和源插件的初始化和除通化函数,但类似于副本插件。

semi_sync_master_plugin.源通用描述符的成员指向特定于类型的描述符,该描述符仅包含特定于类型的API版本号:

struct mysql_replication semi_sync_master_plugin = {mysql_replication_interface_version};

初始化和deInitialization函数声明如下所示:

static int semi_sync_master_plugin_init(void * p);static int semi_sync_master_plugin_deinit(void * p);

初始化函数使用指针注册事务和二进制日志记录观察员使用服务器。成功初始化后,服务器会根据适当的时间处理调用观察员。(有关观察者的详细信息,请参阅源文件。)通过放松观察者,Deinitialization函数清除。如果发生错误,则每个函数返回0以进行成功或1。

要编译并安装插件库文件,请使用说明第4.4.3节“编译和安装插件库”。。要使库文件可用,请在插件目录中安装它(由此指定的目录plugin_dir.系统变量)。为了rpl_semi_sync_master.rpl_semi_sync_slave.插件,它们是在从源代码构建MySQL时编译和安装。它们也包含在二进制分布中。构建过程生成带有名称的共享对象库semisync_master.sosemisync_slave.so.(这。所以后缀可能因平台而异。