cetus/doc/cetus-rw-profile.md
2019-05-28 17:09:10 +08:00

192 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 读写分离版配置文件说明
读写分离版配置文件包括用户配置文件users.json、变量处理配置文件variables.json和启动配置文件proxy.conf具体说明如下
## 1.users.json
```
{
"users": [{
"user": "XXXX",
"client_pwd": "XXXXXX",
"server_pwd": "XXXXXX"
}, {
"user": "XXXX",
"client_pwd": "XXXXXX",
"server_pwd": "XXXXXX"
}]
}
```
users.json用来配置用户登陆信息采用键值对的结构其中键是固定的值是用户在MySQL创建的登陆用户名和密码。
其中user的值是用户名client_pwd的值是前端登录Cetus的密码server_pwd的值是Cetus登录后端的密码。
例如:
```
{
"users": [{
"user": "root",
"client_pwd": "123",
"server_pwd": "123456"
}, {
"user": "test",
"client_pwd": "456",
"server_pwd": "123456"
}]
}
```
我们配置了2个用户名root和test。其中root用户前端登录Cetus的密码是123Cetus登录后端的密码是123456test用户前端登录Cetus的密码是456Cetus登录后端的密码是123456。
## 2.variables.json
Cetus支持部分会话级系统变量的设置可以通过在variables.json配置允许发送的值和静默处理的值如下
```
{
"variables": [
{
"name": "XXXXX",
"type": "XXXX",
"allowed_values": ["XXX"]
},
{
"name": "XXXXX",
"type": "XXXX",
"allowed_values": ["XXX"],
"silent_values": ["XX"]
}
]
}
```
variables.json同样采用键值对的结构其中键是固定的值是用用户自定义的。
其中name的值是需要设置的会话级系统变量的名称type的值是变量的类型可以为int,string或string-csv逗号分隔的字符串值allowed_values的值是指定允许设定的变量值可以使用通配符\*表示此变量设任意值都允许silent_values的值是指定静默处理的值可以使用通配符\*,表示此变量设任意值都静默处理。特别提醒,配置文件中配置的所有项,都要用双引号包裹起来,否则不生效。
**注意配置过allowed_values才能走到静默处理流程**
例如:
```
{
"variables": [
{
"name": "sql_mode",
"type": "string-csv",
"allowed_values":
["STRICT_TRANS_TABLES",
"NO_AUTO_CREATE_USER",
"NO_ENGINE_SUBSTITUTION"
]
},
{
"name": "profiling",
"type": "int",
"allowed_values": ["0", "1"],
"silent_values": ["*"]
}
]
}
```
我们配置了sql_mode变量和profiling变量。其中sql_mode变量的类型是string-csv逗号分隔的字符串值指定了允许设定的变量有STRICT_TRANS_TABLES、NO_AUTO_CREATE_USER和NO_ENGINE_SUBSTITUTIONprofiling变量的类型是int整型此变量允许的值是0和1指定静默处理的值为所有即0和1。
## 3.proxy.conf
```
[cetus]
# Loaded Plugins
plugins=XXX,XXX
# Defines the number of worker processes.
worker-processes=XXX
# Proxy Configuration
proxy-address=XXX.XXX.XXX.XXX:XXXX
proxy-backend-addresses=XXX.XXX.XXX.XXX:XXXX
proxy-read-only-backend-addresses=XXX.XXX.XXX.XXX:XXXX
# Admin Configuration
admin-address=XXX.XXX.XXX.XXX:XXXX
admin-username=XXXX
admin-password=XXXXXX
# Backend Configuration
default-db=XXXX
default-username=XXXXX
# File and Log Configuration
log-file=XXXX
log-level=XXXX
```
proxy.conf是读写分离版本的启动配置文件在启动Cetus时需要加载配置文件采用key=value的形式其中key是固定的可参考[Cetus 启动配置选项说明](https://github.com/Lede-Inc/cetus/blob/master/doc/cetus-configuration.md)value是用户自定义的。
例如:
```
[cetus]
# Loaded Plugins
plugins=proxy,admin
# Defines the number of worker processes.
worker-processes=4
# Proxy Configuration
proxy-address=127.0.0.1:1234
proxy-backend-addresses=127.0.0.1:3306
proxy-read-only-backend-addresses=127.0.0.1:3307
# Admin Configuration
admin-address=127.0.0.1:5678
admin-username=admin
admin-password=admin
# Backend Configuration
default-db=test
default-username=test
# File and Log Configuration
log-file=cetus.log
log-level=debug
```
我们配置了读写分离版本的启动选项其中plugins的值是加载插件的名称读写分离版本需加载的插件为proxy和admin
worker-processes为4代表工作进程数量为4建议设置数量小于等于cpu数目
proxy-address的值是Proxy监听的IP和端口我们设置为127.0.0.1:1234proxy-backend-addresses的值是读写后端(主库)的IP和端口我们设置为127.0.0.1:3306只允许一个主库proxy-read-only-backend-addresses的值是只读后端(从库)的IP和端口我们设置为127.0.0.1:3307可多项
admin-address的值是管理模块的IP和端口我们设置为127.0.0.1:5678admin-username的值是管理模块的用户名我们设置为adminadmin-password的值是管理模块的密码明文我们设置为admin
default-db的值是默认数据库当连接未指定db时使用的默认数据库名称我们设置为testdefault-username的值是默认登陆用户名在Proxy启动时自动创建连接使用的用户名我们设置为test
log-file的值是日志文件路径我们设置为当前安装路径下的cetus.loglog-level的值是日志记录级别可选 info | message | warning | error | critical(default)我们设置为debug这些是必备启动选项其他可选的性能配置详见[Cetus 启动配置选项说明](https://github.com/Lede-Inc/cetus/blob/master/doc/cetus-configuration.md)。
**注:**
**以上配置文件中.json文件名称不可变.conf文件可自定义名称并利用命令行加载**
**启动配置文件proxy.conf 常用参数:**
**1default-pool-size=\<num\>设置刚启动的连接数量by a worker process最小只能设置为10如果设置小于10则实际该值为10**
**2max-pool-size=\<num\>设置最大连接数量by a worker process**
**3max-resp-size=\<num\>,设置最大响应大小,一旦超过此大小,则会报错给客户端**
**4enable-client-compress=\[true\|false\],支持客户端压缩**
**5enable-tcp-stream=\[true\|false\]启动tcp stream无需等响应收完就发送给客户端**
**6master-preferred=\[true\|false\],除非注释强制访问从库,否则一律访问主库**
**7reduce-connections=\[true\|false\],自动减少过多的后端连接数量**
**8max-alive-time=\<num\>,设置后端连接最大存活时间**
**9enable-fast-stream=\[true\|false\]启动fast stream快速处理只读响应release版本默认为false开发版本默认为true**