diff --git a/docs/en-US/source/5.developer-manual/2.running/2.tugraph-running.md b/docs/en-US/source/5.developer-manual/2.running/2.tugraph-running.md index f2cd245af6..b852e20570 100644 --- a/docs/en-US/source/5.developer-manual/2.running/2.tugraph-running.md +++ b/docs/en-US/source/5.developer-manual/2.running/2.tugraph-running.md @@ -138,9 +138,9 @@ The parameters and their types are described as follows: |---------------------------|-----------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | directory | string | Directory where data files are stored. If the directory does not exist, it is automatically created. The default directory is /var/lib/lgraph/data. | | durable | boolean | Whether to enable real-time persistence. Turning off persistence can reduce the disk IO overhead when writing, but data may be lost in extreme cases such as machine power failure. The default value is `true`. | -| host | string | The IP address on which the REST server listens. The default address is 0.0.0.0. Note: In HA mode, the host needs to be set to the IP address of the corresponding server and cannot be set to 0.0.0.0. | +| host | string | The IP address on which the REST server listens. The default address is 0.0.0.0. Note: In HA mode, the host needs to be set to the IP address of the corresponding server and cannot be set to 0.0.0.0. | | port | int | The Port on which the REST server listens. The default port is 7070. | -| enable_rpc | boolean | Whether to use RPC services. The default value is false. | +| enable_rpc | boolean | Whether to use RPC services. The default value is false. | | rpc_port | int | Port used by RPC and HA services. The default port number is 9090. | | enable_ha | boolean | Whether to enable the HA mode. The default value is false. | | ha_log_dir | string | HA log directory. The HA mode needs to be enabled. The default value is null. | @@ -153,29 +153,29 @@ The parameters and their types are described as follows: | enable_audit_log | boolean | Whether to enable audit logs. The default value is false. | | audit_log_expire | int | When audit logs are enabled, the validity period (hours) of audit logs is automatically cleared upon timeout. If the value is 0, the logs are not cleared. The default value is 0. | | audit_log_dir | string | Specifies the directory for storing log files when audit logs are enabled. The default directory is $directory/_audit_log_. | -| load_plugins | boolean | Import all stored procedures when starting the service. The default value is true. | -| optimistic_txn | boolean | Enable optimistic multithreaded write transactions for Cypher. The default is false. | -| disable_auth | boolean | Disable REST authentication. The default is false. | -| ha_snapshot_interval_s | int | Snapshot interval (in seconds) The default value is 86400. | +| load_plugins | boolean | Import all stored procedures when starting the service. The default value is true. | +| optimistic_txn | boolean | Enable optimistic multithreaded write transactions for Cypher. The default is false. | +| disable_auth | boolean | Disable REST authentication. The default is false. | +| ha_snapshot_interval_s | int | Snapshot interval (in seconds). The default value is 604800. -1 means not to automatically generate snapshots. | | ha_heartbeat_interval_ms | int | Heartbeat interval in milliseconds. The default value is 1000. | | ha_node_offline_ms | int | The heartbeat times out and the interval (in milliseconds) between nodes going offline. The default value is 60000. | | ha_node_remove_ms | int | The interval (in milliseconds) at which a node is considered completely dead and removed from the list. The default value is 120000. | -| enable_ip_check | boolean | Allow IP address whitelists. The default value is false。 | +| enable_ip_check | boolean | Allow IP address whitelists. The default value is false。 | | idle_seconds | int | The maximum number of seconds a child process can be idle. The default value is 600. | -| enable_backup_log | boolean | Whether to enable backup logging. The default value is false. | +| enable_backup_log | boolean | Whether to enable backup logging. The default value is false. | | backup_log_dir | string | The directory where backup files are stored. The default value is null. | | snapshot_dir | string | Directory where snapshot files are stored. The default value is null. | | thread_limit | int | The maximum number of threads that can be used simultaneously. The default value is 0, which means that no restriction is imposed. The license file prevails. | -| unlimited_token | boolean | Whether to set the link token to be infinite. The default value is false and the validity period is 24 hours. | -| reset_admin_password | boolean | Whether to reset the password. The default value is false. When the value is true, the password will be reset to "73@TuGraph"。 | -| enable_fulltext_index | boolean | Whether to enable the full-text index function, the default value is false. | +| unlimited_token | boolean | Whether to set the link token to be infinite. The default value is false and the validity period is 24 hours. | +| reset_admin_password | boolean | Whether to reset the password. The default value is false. When the value is true, the password will be reset to "73@TuGraph"。 | +| enable_fulltext_index | boolean | Whether to enable the full-text index function, the default value is false. | | fulltext_analyzer | string | Full-text index tokenizer type. Can be set to `StandardAnalyzer` or `SmartChineseAnalyzer`. Default is `StandardAnalyzer` | | fulltext_commit_interval | int | Full-text index data submission period, for write operations, in seconds. The default is 0, which commits immediately. | | fulltext_refresh_interval | int | Full-text index data refresh cycle, for read operations, in seconds. The default is 0, and the latest written data can be read immediately. | -| ha_conf | string | Initialize the HA cluster according to host1:port1,host2:port2,host3:port3, the default value is empty. | +| ha_conf | string | Initialize the HA cluster according to host1:port1,host2:port2,host3:port3, the default value is empty. | | ha_node_join_group_s | int | The waiting time for a node to try to join the high availability cluster, in seconds, the default is 10. | | ha_bootstrap_role | int | Whether to use bootstrap to start, and the server role to start using this method, 0 means not to use bootstrap to start, 1 means to use bootstrap to start and this node is a leader, 2 means to use bootstrap to start and this node is a follower, only these 3 options. The default value is 0. | -| help | boolean | Print the help message. The default value is false. | +| help | boolean | Print the help message. The default value is false. | ### 4.2.Server configuration file diff --git a/docs/en-US/source/5.developer-manual/3.server-tools/5.ha-cluster-management.md b/docs/en-US/source/5.developer-manual/3.server-tools/5.ha-cluster-management.md index e4e5b0dd4a..d830586b92 100644 --- a/docs/en-US/source/5.developer-manual/3.server-tools/5.ha-cluster-management.md +++ b/docs/en-US/source/5.developer-manual/3.server-tools/5.ha-cluster-management.md @@ -35,7 +35,8 @@ in: ## 4. Generate snapshot -When you need to tell a node generate a snapshot, you can use the `snapshot` command of `lgraph_peer`. An example command is as follows: +For reasons such as setting ha_snapshot_interval_s to -1 when the node starts so that snapshots are not taken by default or other reasons, +when you need to tell a node generate a snapshot, you can use the `snapshot` command of `lgraph_peer`. An example command is as follows: ```shell $ lgraph_peer --command snapshot --peer {peer_id} diff --git a/docs/zh-CN/source/5.developer-manual/2.running/2.tugraph-running.md b/docs/zh-CN/source/5.developer-manual/2.running/2.tugraph-running.md index 7f49b17a74..77b1432a34 100644 --- a/docs/zh-CN/source/5.developer-manual/2.running/2.tugraph-running.md +++ b/docs/zh-CN/source/5.developer-manual/2.running/2.tugraph-running.md @@ -134,48 +134,48 @@ TuGraph 服务器在启动时从配置文件和命令行选项加载配置,如 具体参数及其类型描述如下: -| **参数名** | **参数类型** | **参数说明** | -|-------------------------------|-----------------------|--------------------------------------------------------------------------------------------------------------------------------------| -| directory | 字符串 | 数据文件所在目录。如果目录不存在 ,则自动创建。默认目录为 /var/lib/lgraph/data。 | -| durable | 布尔值 | 是否开启实时持久化。关闭持久化可以减少写入时的磁盘 IO 开销,但是在机器断电等极端情况下可能丢失数据。默认值为 `true`。 | -| host | 字符串 | REST 服务器监听时使用的地址,一般为服务器的 IP 地址。默认地址为 0.0.0.0。注:在HA模式下,host需要设置为对应服务器的IP地址,不能设置为0.0.0.0。 | -| port | 整型 | REST 服务器监听时使用的端口。默认端口为 7070。 | -| enable_rpc | 布尔值 | 是否使用 RPC 服务。默认值为 false。 | -| rpc_port | 整型 | RPC 及 HA 服务所用端口。默认端口为 9090。 | -| enable_ha | 布尔值 | 是否启动高可用模式。默认值为 false。 | -| ha_log_dir | 字符串 | HA 日志所在目录,需要启动 HA 模式。默认值为空。 | -| verbose | 整型 | 日志输出信息的详细程度。可设为 0,1,2,值越大则输出信息越详细。默认值为 1。 | -| log_dir | 字符串 | 日志文件所在的目录。默认目录为 /var/log/lgraph/。 | -| ssl_auth | 布尔值 | 是否使用 SSL 安全认证。当开启时,REST 服务器只开启 HTTPS 服务。默认值为 false。 | -| web | 字符串 | web 文件(包含可视化部分)所在目录。默认目录为 /usr/local/share/lgraph/resource。 | -| server_cert | 字符串 | 在 SSL 认证开启时,服务器所使用的 certificate 文件路径。默认路径为 /usr/local/etc/lgraph/server-cert.pem。 | -| server_key | 字符串 | 在 SSL 认证开启时,服务器所使用的公钥文件。默认目录为 /usr/local/etc/lgraph/server-key.pem。 | -| enable_audit_log | 布尔值 | 是否启用审计日志,默认值为 false。 | -| audit_log_expire | 整型 | 启用审计日志时,日志的有效时间(小时),超时自动清理,值为 0 时表示不清理。默认值为 0。 | -| audit_log_dir | 字符串 | 启用审计日志时,日志文件的存放目录。默认目录为 $directory/_audit_log_。 | -| load_plugins | 布尔值 | 启动服务时导入所有存储过程。默认值为 true。 | -| optimistic_txn | 布尔值 | 为 Cypher 开启乐观多线程写入事务。默认为 false。 | -| disable_auth | 布尔值 | 关闭 REST 验证。默认为 false。 | -| ha_snapshot_interval_s | 整型 | 快照间隔(以秒为单位)。 默认值为 86400。 | -| ha_heartbeat_interval_ms | 整型 | 心跳间隔(以毫秒为单位)。 默认值为 1000。 | -| ha_node_offline_ms | 整型 | 心跳超时且节点下线间隔(以毫秒为单位)。默认为 60000。 | +| **参数名** | **参数类型** | **参数说明** | +|---------------------------|-----------------------|--------------------------------------------------------------------------------------------------------------------------------------| +| directory | 字符串 | 数据文件所在目录。如果目录不存在 ,则自动创建。默认目录为 /var/lib/lgraph/data。 | +| durable | 布尔值 | 是否开启实时持久化。关闭持久化可以减少写入时的磁盘 IO 开销,但是在机器断电等极端情况下可能丢失数据。默认值为 `true`。 | +| host | 字符串 | REST 服务器监听时使用的地址,一般为服务器的 IP 地址。默认地址为 0.0.0.0。注:在HA模式下,host需要设置为对应服务器的IP地址,不能设置为0.0.0.0。 | +| port | 整型 | REST 服务器监听时使用的端口。默认端口为 7070。 | +| enable_rpc | 布尔值 | 是否使用 RPC 服务。默认值为 false。 | +| rpc_port | 整型 | RPC 及 HA 服务所用端口。默认端口为 9090。 | +| enable_ha | 布尔值 | 是否启动高可用模式。默认值为 false。 | +| ha_log_dir | 字符串 | HA 日志所在目录,需要启动 HA 模式。默认值为空。 | +| verbose | 整型 | 日志输出信息的详细程度。可设为 0,1,2,值越大则输出信息越详细。默认值为 1。 | +| log_dir | 字符串 | 日志文件所在的目录。默认目录为 /var/log/lgraph/。 | +| ssl_auth | 布尔值 | 是否使用 SSL 安全认证。当开启时,REST 服务器只开启 HTTPS 服务。默认值为 false。 | +| web | 字符串 | web 文件(包含可视化部分)所在目录。默认目录为 /usr/local/share/lgraph/resource。 | +| server_cert | 字符串 | 在 SSL 认证开启时,服务器所使用的 certificate 文件路径。默认路径为 /usr/local/etc/lgraph/server-cert.pem。 | +| server_key | 字符串 | 在 SSL 认证开启时,服务器所使用的公钥文件。默认目录为 /usr/local/etc/lgraph/server-key.pem。 | +| enable_audit_log | 布尔值 | 是否启用审计日志,默认值为 false。 | +| audit_log_expire | 整型 | 启用审计日志时,日志的有效时间(小时),超时自动清理,值为 0 时表示不清理。默认值为 0。 | +| audit_log_dir | 字符串 | 启用审计日志时,日志文件的存放目录。默认目录为 $directory/_audit_log_。 | +| load_plugins | 布尔值 | 启动服务时导入所有存储过程。默认值为 true。 | +| optimistic_txn | 布尔值 | 为 Cypher 开启乐观多线程写入事务。默认为 false。 | +| disable_auth | 布尔值 | 关闭 REST 验证。默认为 false。 | +| ha_snapshot_interval_s | 整型 | 快照间隔(以秒为单位),默认值为 604800。-1表示不自动生成快照。 | +| ha_heartbeat_interval_ms | 整型 | 心跳间隔(以毫秒为单位)。 默认值为 1000。 | +| ha_node_offline_ms | 整型 | 心跳超时且节点下线间隔(以毫秒为单位)。默认为 60000。 | | ha_node_remove_ms | 整型 | 节点被视为完全死亡并从列表中删除的间隔(以毫秒为单位)。默认值为 120000。 | -| enable_ip_check | 布尔值 | 允许 IP 白名单,默认值为 false。 | -| idle_seconds | 整型 | 子进程可以处于空闲状态的最大秒数。 默认值为 600。 | -| enable_backup_log | 布尔值 | 是否启用备份日志记录。 默认值为 false。 | -| backup_log_dir | 字符串 | 存储备份文件的目录。 默认值为空。 | -| snapshot_dir | 字符串 | 存储快照文件的目录。 默认值为空。 | -| thread_limit | 整型 | 同时使用的最大线程数。 默认值为 0,即不做限制,以 license 为准。 | -| unlimited_token | 布尔值 | 是否将链接token设置为无期限。 默认值为 false,有效期为24小时。 | -| reset_admin_password | 布尔值 | 是否重置管理者密码。 默认值为 false。 为 true 时,密码重置为`73@TuGraph`。 | -| enable_fulltext_index | 布尔值 | 是否启用全文索引功能,默认值为 false。 | -| fulltext_analyzer | 字符串 | 全文索引分词器类型。可设为`StandardAnalyzer`或者`SmartChineseAnalyzer`。默认是`StandardAnalyzer` | -| fulltext_commit_interval | 整形 | 全文索引数据提交周期,针对写操作,单位秒。默认是 0,立即提交。 | -| fulltext_refresh_interval | 整形 | 全文索引数据刷新周期,针对读操作,单位秒。默认是 0,立即可以读到最新写入的数据。 | -| ha_conf | 字符串 | 根据 host1:port1,host2:port2,host3:port3 初始化HA集群,默认值为空。 | -| ha_node_join_group_s | 整形 | 节点尝试加入高可用集群的等待时长,单位秒,默认是 10。 | -| ha_bootstrap_role | 整形 | 是否使用bootstrap方式启动,以及使用该方式启动的服务器角色,0代表不使用bootstrap方式启动,1代表使用bootstrap方式启动且本节点为leader,2代表使用bootstrap方式启动且本节点为follower,只有这3种选项。 默认值为 0。 | -| help | 布尔值 | 打印此帮助消息。 默认值为 false。 | +| enable_ip_check | 布尔值 | 允许 IP 白名单,默认值为 false。 | +| idle_seconds | 整型 | 子进程可以处于空闲状态的最大秒数。 默认值为 600。 | +| enable_backup_log | 布尔值 | 是否启用备份日志记录。 默认值为 false。 | +| backup_log_dir | 字符串 | 存储备份文件的目录。 默认值为空。 | +| snapshot_dir | 字符串 | 存储快照文件的目录。 默认值为空。 | +| thread_limit | 整型 | 同时使用的最大线程数。 默认值为 0,即不做限制,以 license 为准。 | +| unlimited_token | 布尔值 | 是否将链接token设置为无期限。 默认值为 false,有效期为24小时。 | +| reset_admin_password | 布尔值 | 是否重置管理者密码。 默认值为 false。 为 true 时,密码重置为`73@TuGraph`。 | +| enable_fulltext_index | 布尔值 | 是否启用全文索引功能,默认值为 false。 | +| fulltext_analyzer | 字符串 | 全文索引分词器类型。可设为`StandardAnalyzer`或者`SmartChineseAnalyzer`。默认是`StandardAnalyzer` | +| fulltext_commit_interval | 整形 | 全文索引数据提交周期,针对写操作,单位秒。默认是 0,立即提交。 | +| fulltext_refresh_interval | 整形 | 全文索引数据刷新周期,针对读操作,单位秒。默认是 0,立即可以读到最新写入的数据。 | +| ha_conf | 字符串 | 根据 host1:port1,host2:port2,host3:port3 初始化HA集群,默认值为空。 | +| ha_node_join_group_s | 整形 | 节点尝试加入高可用集群的等待时长,单位秒,默认是 10。 | +| ha_bootstrap_role | 整形 | 是否使用bootstrap方式启动,以及使用该方式启动的服务器角色,0代表不使用bootstrap方式启动,1代表使用bootstrap方式启动且本节点为leader,2代表使用bootstrap方式启动且本节点为follower,只有这3种选项。 默认值为 0。 | +| help | 布尔值 | 打印此帮助消息。 默认值为 false。 | ### 4.2.服务器配置文件 diff --git a/docs/zh-CN/source/5.developer-manual/3.server-tools/5.ha-cluster-management.md b/docs/zh-CN/source/5.developer-manual/3.server-tools/5.ha-cluster-management.md index adddec93e7..0a113bfa78 100644 --- a/docs/zh-CN/source/5.developer-manual/3.server-tools/5.ha-cluster-management.md +++ b/docs/zh-CN/source/5.developer-manual/3.server-tools/5.ha-cluster-management.md @@ -35,7 +35,8 @@ $ lgraph_peer --command transfer_leader --peer {peer_id} --conf {group_conf} ## 4. 生成snapshot -当需要让某个节点生成snapshot时,可以使用`lgraph_peer`的`snapshot`命令。命令示例如下所示: +出于节点启动时设置ha_snapshot_interval_s为-1以默认不打snapshot或其他原因, +当需要让某个节点手动生成snapshot时,可以使用`lgraph_peer`的`snapshot`命令。命令示例如下所示: ```shell $ lgraph_peer --command snapshot --peer {peer_id} diff --git a/src/core/global_config.cpp b/src/core/global_config.cpp index a3aec9e988..4d82fe3b83 100644 --- a/src/core/global_config.cpp +++ b/src/core/global_config.cpp @@ -201,7 +201,7 @@ fma_common::Configuration lgraph::GlobalConfig::InitConfig ha_bootstrap_role = 0; ha_log_dir = ""; ha_election_timeout_ms = 500; - ha_snapshot_interval_s = 3600 * 24; + ha_snapshot_interval_s = 3600 * 24 * 7; ha_heartbeat_interval_ms = 1000; ha_node_offline_ms = 600 * 1000; ha_node_remove_ms = 1200 * 1000; diff --git a/test/test_ha_witness.cpp b/test/test_ha_witness.cpp index 71a7a15aae..cdb2edb636 100644 --- a/test/test_ha_witness.cpp +++ b/test/test_ha_witness.cpp @@ -11,17 +11,17 @@ const char ha_mkdir[] = "mkdir {} && cp -r ../../src/server/lgraph_ha.json " #ifndef __SANITIZE_ADDRESS__ const char server_cmd_f[] = "cd {} && ./lgraph_server --host {} --port {} --enable_rpc " - "true --enable_ha true --ha_node_offline_ms 5000 " - "--ha_node_remove_ms 10000 --ha_snapshot_interval_s -1 " + "true --enable_ha true --ha_snapshot_interval_s -1 " "--rpc_port {} --directory ./db --log_dir " - "./log --ha_conf {} --verbose 1 -c lgraph_ha.json -d start"; + "./log --ha_conf {} --verbose 1 --ha_node_join_group_s 20 " + "-c lgraph_ha.json -d start"; const char witness_cmd_f[] = "cd {} && ./lgraph_server --host {} --port {} --enable_rpc " - "true --enable_ha true --ha_node_offline_ms 5000 --ha_is_witness 1 " - "--ha_node_remove_ms 10000 --ha_snapshot_interval_s -1 " + "true --enable_ha true --ha_is_witness 1 " + "--ha_snapshot_interval_s -1 " "--rpc_port {} --directory ./db --log_dir " - "./log --ha_conf {} --verbose 1 -c lgraph_ha.json " - "--ha_enable_witness_to_leader {} -d start"; + "./log --ha_conf {} --verbose 1 --ha_node_join_group_s 20 " + "-c lgraph_ha.json --ha_enable_witness_to_leader {} -d start"; #else const char server_cmd_f[] = "cd {} && ./lgraph_server --host {} --port {} --enable_rpc " @@ -273,28 +273,19 @@ TEST_F(TestHAWitness, HAWitnessDisableLeader) { fma_common::SleepS(15); // start follower, witness which has newer log will be leader temporary - try { - client = std::make_unique( - this->host + ":29094", "admin", "73@TuGraph"); - } catch (std::exception &e) { - cmd = FMA_FMT(witness_cmd_f, "ha3", host, "27074", "29094", - host + ":29092," + host + ":29093," + host + ":29094", true); - UT_EXPECT_EQ(system(cmd.c_str()), 0); - fma_common::SleepS(5); - } boost::split(output, follower_rpc, boost::is_any_of(":")); std::string ha_dir = "ha" + std::to_string(stoi(output[1]) - 29091); cmd = FMA_FMT(server_cmd_f, ha_dir, host, stoi(output[1]) - 2020, output[1], host + ":29092," + host + ":29093," + host + ":29094"); ret = system(cmd.c_str()); UT_EXPECT_EQ(ret, 0); - fma_common::SleepS(15); + fma_common::SleepS(20); master_rpc.clear(); int times = 0; do { try { client = std::make_unique( - this->host + ":29093", "admin", "73@TuGraph"); + follower_rpc, "admin", "73@TuGraph"); client->CallCypher(result, "CALL dbms.ha.clusterInfo()"); cluster_info = nlohmann::json::parse(result.c_str()); if (cluster_info == nullptr || cluster_info[0]["cluster_info"] == nullptr) @@ -317,7 +308,6 @@ TEST_F(TestHAWitness, HAWitnessDisableLeader) { continue; } } while (++times < 20); - fma_common::SleepS(5); ret = client->CallCypherToLeader(result, "MATCH (n) RETURN COUNT(n)"); UT_EXPECT_TRUE(ret); nlohmann::json res = nlohmann::json::parse(result);