rpm -ivh mysql-router-2.0.4-1.el6.x86_64.rpm
支持 # 和 ; 作为注释
不支持行尾的注释
[section name:optional section key]
option = value
option = value
option = value
[section name]
option = value
option = value
option = value
每个section 包含一个name和一个可选的key,[ ]内不能有空格。但是键值对可以含有空格,服务器会自动忽略。且键值对大小写不敏感。
可以使用{ }引用变量。当{ }内的变量名没有定义,就使用字面意思。
[DEFAULT]
prefix = /usr/
[sample]
bin = {prefix}bin/{name}
lib = {prefix}lib/{name}
name = magic
directory = C:\foo\bar\{3a339172-6898-11e6-8540-9f7b235afb23}
所以,这里 directory = C:\foo\bar\3a339172-6898-11e6-8540-9f7b235afb23。
依次读取:
另外,还可以使用两个参数指定
-c : 当指定这个参数,就不扫描默认位置了。
-a: 指定额外胚子文件。当读取了默认位置的配置文件(或用-c 指定的配置文件),紧接着读取这个位置的配置文件。
如下所示:
shell> mysqlrouter -c /custom/path/to/router.ini -a /another/config.ini
bind_address 和 bind_port
将router绑定到哪个网络接口NIC,
可以写成
[routing:example_1]
bind_address =127.0.0.1
bind_port = 7001
或者
[routing:example_1]
bind_address =127.0.0.1:7001
Connect Timeout
connect_timeout = 1
允许范围1-65536 ,read-write模式可以设置大一些,read-only模式要设置低一点。
Destinations
destinations= a.example.com,b.example.com,c.example.com
提供一个逗号分隔的用于建立连接使用的地址池。默认端口3306。
Modes
[routing:example_strategy]
bind_port = 7001
destinations = master1.example.com,master2.example.com,master3.example.com
mode = read-write
必须参数。
read-write:
主要用于路由到 mysql master。
In read-write mode, all traffic is directed to the initial address on the list. If that fails,then MySQL Router will try the next entry on the list, and will continue trying each MySQL server on the list. If no more MySQL servers are available on the list, then routing is aborted. This method is also known as ”first-available“。
第一个成功连接的服务器保存在内存中,以用于未来的连接请求,但这是一个临时状态,重启就失去记忆了。
read-only:
主要用于路由到 slave 上。
使用一种简单的 round-robin 方式来扫描服务器,第一个连接发送到第一个地址,第二个连接发送到第二个地址,以此类推,往返重复。如果其中一个地址不可达,直接跳过。不可达的地址将被隔离。当它恢复后,将被重新添加到可用队列中。
Max Connections
max_connections = 512
类似于Mysql的max_connections,一种可用的应用是抵御DDOS,范围从1-65536,默认512。
max_connect_errors
默认= 100 , 类似于 mysql 的 max_connect_errors 参数。
client_connect_timeout
默认 = 9 , 类似于 mysql 的 connect_timeout ,合法的范围是 2-31536000.
[logger]
level = DEBUG
可选的有 INFO (default) 和 DEBUG,不区别大小写。
INFO = all informational messages, warnings, and error messages
DEBUG= additional diagnostic information from the Router code, including successful routes.
默认是 INFO级别。这个需要在 [default]里先设置 logging_folder,如果 logging_folder 留空或者没设置,将输出到命令行。
[DEFAULT]
logging_folder = /var/log/mysqlrouter #后面不指定具体的文件名
[logger]
level = DEBUG
[routing:failover] # failover可选,方便理解
bind_port = 7001
mode = read-write
destinations = a.example.com,b.example.com,c.example.com
上面案例,read-write 模式,所有请求将转发至 a.example.com ,当它挂了,转发到 b.example.com,以此类推。但如果 read-only 模式,将使用round-robin 轮训。
shell> mysqlrouter --config=/path/to/file/my_router.ini
2015-10-22 10:51:34 INFO [7f5f66768700] routing:basic_redirect started: listening on localhost:7001; read-write
2015-10-22 10:51:34 INFO [7f5f65f67700] routing:read_only_redirect started: listening on localhost:7002;
[DEFAULT]
logging_folder = /var/log/mysql/router
config_folder = /usr/local/etc/mysqlrouter
plugin_folder = /usr/local/lib/mysqlrouter
runtime_folder = /usr/local/
[logger]
level = INFO
[routing]
bind_address = 127.0.0.1:7002
destinations = slave1.example.com,slave2.example.com,slave3.example.com
mode = read-only
# 注意事项
该文章为很久前的笔记,参考链接已丢失,如有雷同麻烦联系本住持删除