# 如何运行 编译完成后,可以在build目录(可能是build_debug或build_release)下找到bin/observer,就是我们的服务端程序,bin/obclient是自带的客户端程序。 当前服务端程序启动已经支持了多种模式,可以以TCP、unix socket方式启动,这时需要启动客户端以发起命令。observer还支持直接执行命令的模式,这时不需要启动客户端,直接在命令行输入命令即可。 **以直接执行命令的方式启动服务端程序** ```bash ./bin/observer -f ../etc/observer.ini -P cli ``` 这会以直接执行命令的方式启动服务端程序,可以直接输入命令,不需要客户端。所有的请求都会以单线程的方式运行,配置项中的线程数不再有实际意义。 **以监听TCP端口的方式启动服务端程序** ```bash ./bin/observer -f ../etc/observer.ini -p 6789 ``` 这会以监听6789端口的方式启动服务端程序。 启动客户端程序: ```bash ./bin/obclient -p 6789 ``` 这会连接到服务端的6789端口。 **以监听unix socket的方式启动服务端程序** ```bash ./bin/observer -f ../etc/observer.ini -s miniob.sock ``` 这会以监听unix socket的方式启动服务端程序。 启动客户端程序: ```bash ./bin/obclient -s miniob.sock ``` 这会连接到服务端的miniob.sock文件。 **并发模式** 默认情况下,编译出的程序是不支持并发的。如果需要支持并发,需要在编译时增加选项 `-DCONCURRENCY=ON`: ```bash cmake -DCONCURRENCY=ON .. ``` 或者 ```bash bash build.sh -DCONCURRENCY=ON ``` 然后使用上面的命令启动服务端程序,就可以支持并发了。 **启动参数介绍** | 参数 | 说明 | | ----------- | ----------- | | -h | 帮助说明 | | -f | 配置文件路径。如果不指定,就会使用默认值 ../etc/observer.ini。 | | -p | 服务端监听的端口号。如果不指定,并且没有使用unix socket或cli的方式启动,就会使用配置文件中的值,或者使用默认值。 | | -s | 服务端监听的unix socket文件。如果不指定,并且没有使用TCP或cli的方式启动,就会使用TCP的方式启动服务端。 | | -P | 使用的通讯协议。当前支持文本协议(plain,也是默认值),MySQL协议(mysql),直接交互(cli)。
使用plain协议时,请使用自带的obclient连接服务端。
使用mysql协议时,使用mariadb或mysql客户端连接。
直接交互模式(cli)不需要使用客户端连接,因此无法开启多个连接。 | | -t | 事务模型。没有事务(vacuous,默认值)和MVCC(mvcc)。 使用mvcc时一定要编译支持并发模式的代码。 | | -n | buffer pool 的内存大小,单位字节。 | **更多** observer还提供了一些其它参数,可以通过`./bin/observer -h`查看。 **FAQ** 1. 运行observer出现找不到链接库 A: 由于安装依赖时,默认安装在 `/usr/local/` 目录下,而环境变量中没有将这个目录包含到动态链接库查找路径。可以将下面的命令添加到 HOME 目录的 `.bashrc` 中: ```bash export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH ``` 然后执行 `source ~/.bashrc` 加载环境变量后重新启动程序。 LD_LIBRARY_PATH 是Linux环境中,运行时查找动态链接库的路径,路径之间以冒号':'分隔。 将数据写入 bashrc 或其它文件,可以在下次启动程序时,会自动加载,而不需要再次执行 source 命令加载。 > NOTE: 如果你的终端脚本使用的不是bash,而是zsh,那么就需要修改 .zshrc。