mco_HA_attach_master
有关概述,请参阅高可用性应用页面。
此函数读取指定的日志文件,直到指定的标签,并将其内容应用于数据库。
MCO_RET mco_HA_attach_master(
mco_db_h* db,
const char* connection_string,
const mco_HA_replica_params_t* params,
MCO_E_HA_REPLICA_STOP_REASON* reason,
timer_unit timeout
);
该函数由副本应用程序在调用 or 后调用以打开数据库。请注意,这是一个阻塞调用,它在内部执行与 master 的握手,加载 master 的当前状态(数据库),并等待接受来自 master 的事务。当发生以下情况之一时,它将退出:mco_db_open_dev()``mco_db_load()``mco_HA_attach_master()
检测到不可恢复的错误
由 master 请求
来自备用应用程序的本地异步请求通过以下方式发出
mco_HA_replica_stop()
通过以下方式发出取消请求
mco_HA_cancel()
传递给函数的标志是 ;这会导致 attaching 进程(此时为 replica)将数据库与当前 master 同步,然后向当前 master 发送消息,将自身与 master 分离并成为新的 master。此标志通常与 Binary Schema Evolution 相关联。
MCO_HAMODE_FORCE_MASTER``KILL_MASTER
当函数返回时,应用程序可以选择销毁数据库,开始将其用作 master 数据库,或者再次开始将其用作备用数据库。
参数
db
指向数据库连接句柄的指针。如果 *db 为 NULL,则 mco_HA_attach_master() 使用 db_params 中的参数创建一个新的数据库。如果 *db 是对现有数据库的有效连接,则该数据库切换到副本模式并与主数据库同步。
connection_string
对于 TCP/UDP 传输,它应该是“<主节点主机名>:<端口>”,其中主节点主机名是主节点的主机名或 IP 地址,<端口> 是监听端口号(在主节点端由 mco_nw_attach_replica() 的“masterport”参数定义)。例如,“192.168.0.1:10000”。
params
连接参数(请参见mco_HA_replica_params_init)。
reason
mco_HA_attach_master() 被中断的原因,如下所述。
timeout
连接超时时间。如果主设备在此期间内未连接,该函数将返回 MCO_E_NW_TIMEOUT。
返回
MCO_S_OK
主服务器连接成功。
MCO_E_HA_PROTOCOLERR
不兼容的协议。
MCO_E_HA_IOERROR
副本无法向主服务器发送消息或从主服务器接收消息。
MCO_E_NW_TIMEOUT
Master 未在指定的超时时间内连接。
其他 MCO_E_NW_* 代码
网络传输层中的错误。