mysql-router

1. 安装

rpm -ivh mysql-router-2.0.4-1.el6.x86_64.rpm

2. 配置文件

2.1 配置文件语法

2.1.1 注释

支持 # 和 ; 作为注释

不支持行尾的注释

2.1.2 section

[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。

2.2 配置文件位置

2.2.1 读取顺序

依次读取:

  • /etc/mysqlrouter/mysqlrouter.ini
  • $HOME/.mysqlrouter.ini

另外,还可以使用两个参数指定

-c : 当指定这个参数,就不扫描默认位置了。

-a: 指定额外胚子文件。当读取了默认位置的配置文件(或用-c 指定的配置文件),紧接着读取这个位置的配置文件。

如下所示:

shell> mysqlrouter -c /custom/path/to/router.ini -a /another/config.ini

3. 配置

3.1 general

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.

3.2 Logging

[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 留空或者没设置,将输出到命令行。

3.3 配置文件demo

[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 轮训。

4. Router的应用

4.1 用户选项

  • -v 显示更多
  • -h 帮助
  • -c 指定配置文件
  • -a 指定额外配置文件

4.2 启动Router

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;

5. Plugins

5.1 Connection Routing 插件

[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
# 注意事项
  • mysql-router可以同时实现高可用和负载均衡,通过模式和端口来区分
    read-write:用于高可用,用于可读可写
    read-only:用于负载均衡,只读
  • mysql-router 应该和应用部署在一台服务器上。
  • mysql-router也会出现单点问题,需要心跳检测
  • mysql-router对数据库有大约1%的性能影响

该文章为很久前的笔记,参考链接已丢失,如有雷同麻烦联系本住持删除

你可能感兴趣的:(mysql-router)