# 数据库运行 > 本文档主要描述 TuGraph 服务的运行模式、启动、停止和重启的操作,以及 TuGraph 的服务配置参数、配置文件格式和命令行配置参数。 ## 1.前置条件 TuGraph 运行的前置条件为 TuGraph 正确安装,参考[安装流程](1.environment.md)。 TuGraph 运行需要保证库文件 liblgraph.so 的文件位置在环境变量 LD_LIBRARY_PATH。 运行 TuGraph 进程的用户不需要超级权限,但需要对配置文件(一般为lgraph.json)及文件中涉及的文件有读权限,并且对数据文件夹、日志文件夹等有写权限。 ## 2.运行模式 TuGraph 可以作为前台普通进程启动,也可以作为后台守护进程启动。 当作为普通进程运行时,TuGraph 可以直接将日志打印到终端,这在调试服务器配置时非常方便。但是,由于前台进程在终端退出后被终止,因此用户须确保在 TuGraph 服务器处于运行状态时,终端保持打开状态。另一方面,在守护进程模式下,即使启动它的终端退出,TuGraph 服务器也可以继续运行。因此,在长时间运行的服务器下推荐以守护进程模式启动 TuGraph 服务器。 ### 2.1.运行普通进程 `lgraph_server -d run`命令可以将 TuGraph 作为普通进程运行。普通进程依赖命令行终端,因此终端结束时,TuGraph 进程也会自动终止。普通进程模式配合`--log_dir ""`可以将进程日志直接输出到终端,因此更方便调试。注:当不使用`-d run`命令时,将默认运行普通进程。 lgraph_server的默认路径为:/usr/local/bin/lgraph_server 。 lgraph.json的默认路径为:/usr/local/etc/lgraph.json 。 启动命令: ```shell $ ./lgraph_server -d run -c lgraph.json --log_dir "" ``` 或者: ```shell $ ./lgraph_server -c lgraph.json --log_dir "" ``` 普通模式的运行输出示例: ```shell ********************************************************************** * TuGraph Graph Database v4.3.2 * * * * Copyright(C) 2018-2023 Ant Group. All rights reserved. * * * ********************************************************************** Server is configured with the following parameters: Backup log enable: 0 DB directory: /var/lib/lgraph/data HA enable: 0 HTTP port: 7070 HTTP web dir: /usr/local/share/lgraph/browser-resource RPC enable: 1 RPC port: 9090 SSL enable: 0 Whether the token is unlimited: 0 audit log enable: 0 bind host: 0.0.0.0 bolt port: 7687 disable auth: 0 durable: 0 log dir: "" log verbose: 1 number of bolt io threads: 1 optimistic transaction: 0 reset admin password if you forget: 0 subprocess idle limit: 600 thread limit: 0 [20240730 15:34:27.848783 0x00007f81bb3889c0 INFO src/server/lgraph_server.h:78] [StateMachine] Builtin services are disabled according to ServerOptions.has_builtin_services [20240730 15:34:27.849116 0x00007f81bb3889c0 INFO src/server/lgraph_server.cpp:268] Listening for RPC on port 9090 [20240730 15:34:27.868819 0x00007f81bb3889c0 INFO src/restful/server/rest_server.cpp:479] Listening for REST on port 7070 [20240730 15:34:27.869970 0x00006e7d435ff700 INFO src/server/bolt_server.cpp:36] bolt server run [20240730 15:34:27.870040 0x00007f81bb3889c0 INFO src/server/lgraph_server.cpp:302] Server started. ``` 普通进程模式下,用户可以通过按 `CTRL+C` 来提前终止 TuGraph 进程。 ### 2.2.运行进程守护模式 启动命令: ```shell $ ./lgraph_server -d start -c lgraph.json ``` 守护模式的运行输出示例: ```shell Starting lgraph... The service process is started at pid 12109. ``` 此命令启动的 TuGraph 服务器进程为守护进程,它将从文件`lgraph.json`加载相关配置。服务器启动后,它将开始在日志文件中打印日志,之后可用该日志文件确定服务器的状态。 ## 3.服务操作 ### 3.1.启动服务 TuGraph 需要通过 `lgraph_server -d start` 命令行启动,启动命令示例如下: ```bash $ ./lgraph_server -d start -c lgraph.json Starting lgraph... The service process is started at pid 12109. ``` 此命令启动的 TuGraph 服务器进程为守护进程,它将从文件`lgraph.json`加载相关配置。服务器启动后,它将开始在日志文件中打印日志,之后可用该日志文件确定服务器的状态。 ### 3.2.停止服务 用户可以使用`kill`命令以及`lgraph_server -d stop`命令停止 TuGraph 守护进程。由于可能在同一台计算机上运行多个 TuGraph 服务器进程,因此我们使用`.pid`文件区分不同的服务器进程,该文件写入启动该进程的工作目录。因此,需要在相同工作目录中运行`lgraph_server-d stop`命令,以停止正确的服务器进程。 ```shell user@host:~/tugraph$ ./lgraph_server -d start -c lgraph.json 20200508122306.378: Starting lgraph... 20200508122306.379: The service process is started at pid 93. user@host:~/tugraph$ cat ./lgraph.pid 93 user@host:~/tugraph$ ./lgraph_server -d stop -c lgraph.json 20200508122334.857: Stopping lgraph... 20200508122334.857: Process stopped. ``` ### 3.3.重启服务 用户也可以通过`lgraph_server -d restart`来重启 TuGraph 服务: ```bash $ ./lgraph_server -d restart Stopping lgraph... Process stopped. Starting lgraph... The service process is started at pid 20899. ``` ### 3.4.新旧前端切换 进入容器,可以通过修改配置文件"/usr/local/etc/lgraph.json"中的"web"参数来选择使用老版本或新版本的前端。对于老版本,可以将"web"的值设为"/usr/local/share/lgraph/resource";对于新版本,可以将"web"的值设为"/usr/local/share/lgraph/browser-resource"。完成配置文件的修改后,请执行命令 `docker restart tugraph` 以使更改生效。需要注意的是,新版本是默认选项。 ## 4.服务配置 TuGraph 服务器在启动时从配置文件和命令行选项加载配置,如果在配置文件和命令行中同一选项指定了不同的值,将优先使用命令行中指定的值。 ### 4.1.配置参数 具体参数及其类型描述如下: | **参数名** | **参数类型** | **参数说明** | |------------------------------|-----------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 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。 | | bolt_port | 整型 | Bolt 客户端端口。默认端口为 7687。 | | 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/browser-resource 目录下。而对于之前的老版本,该目录则位于 /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。 | | ha_first_snapshot_start_time | 字符串 | 第一次打快照的时间,格式为"HH:MM:SS",表示为在下一个HH:MM:SS时间点第一次打snapshot,以后每ha_snapshot_interval_s秒打一次。默认值为"",表示在0-ha_snapshot_interval_s内的任一时刻随机打第一次snapshot,以后每ha_snapshot_interval_s秒打一次snapshot | | 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。 | | browser.credential_timeout | 整形 | 浏览器缓存的用户名和密码过期时间。 | | browser.retain_connection_credentials | 布尔值 | 浏览器是否缓存用户名和密码。 | ### 4.2.服务器配置文件 TuGraph 的配置文件以 JSON 格式存储。建议将大多数配置存储在配置文件中,并且仅在需要时使用命令行选项临时修改某些配置参数。 一个典型的配置文件如下: ```json { "directory" : "/var/lib/lgraph/data", "host" : "0.0.0.0", "port" : 7070, "rpc_port" : 9090, "enable_rpc" : true, "bolt_port": 7687, "enable_ha" : false, "verbose" : 1, "log_dir" : "/var/log/lgraph_log", "disable_auth" : false, "ssl_auth" : false, "server_key" : "/usr/local/etc/lgraph/server-key.pem", "server_cert" : "/usr/local/etc/lgraph/server-cert.pem", "web" : "/usr/local/share/lgraph/browser-resource" } ```