要建立与服务器的连接,您必须创建 的实例
Ndb_cluster_connection
,其构造函数将集群连接字符串作为其参数。如果没有给出连接字符串,localhost
则假定为。
在调用该
Ndb_cluster_connection::connect()
方法之前,集群连接并未真正启动。当不带任何参数调用时,连接尝试将无限期地重试,每秒一次,直到成功。在建立连接之前不进行报告。
默认情况下,API 节点连接到“最近的”
数据节点。这通常是在与最近的同一台机器上运行的数据节点,因为可以使用共享内存传输而不是较慢的 TCP/IP。set_optimized_node_selection()
在某些情况下,这可能会导致负载分配不佳,因此可以通过在调用之前调用方法0
作为其参数
来强制执行循环节点连接方案
connect()
。
connect()
仅启动与 NDB Cluster 管理节点的连接。要启用与数据节点的连接,请
wait_until_ready()
在调用后使用connect()
;
wait_until_ready()
等待给定的秒数以建立与数据节点的连接。
在下面的示例中,初始化和连接在两个函数example_init()
和中处理example_end()
,它们通过包含文件的方式包含在后续示例中
example_connection.h
。
示例 2-1:连接示例。
#include <stdio.h>
#include <stdlib.h>
#include <NdbApi.hpp>
#include <mysql.h>
#include <mgmapi.h>
Ndb_cluster_connection* connect_to_cluster();
void disconnect_from_cluster(Ndb_cluster_connection *c);
Ndb_cluster_connection* connect_to_cluster()
{
Ndb_cluster_connection* c;
if(ndb_init())
exit(EXIT_FAILURE);
c= new Ndb_cluster_connection();
if(c->connect(4, 5, 1))
{
fprintf(stderr, "Unable to connect to cluster within 30 seconds.\n\n");
exit(EXIT_FAILURE);
}
if(c->wait_until_ready(30, 0) < 0)
{
fprintf(stderr, "Cluster was not ready within 30 seconds.\n\n");
exit(EXIT_FAILURE);
}
return c;
}
void disconnect_from_cluster(Ndb_cluster_connection *c)
{
delete c;
ndb_end(2);
}
int main(int argc, char* argv[])
{
Ndb_cluster_connection *ndb_connection= connect_to_cluster();
printf("Connection Established.\n\n");
disconnect_from_cluster(ndb_connection);
return EXIT_SUCCESS;
}