mysql-router 快来打我* 2022-04-12 13:56 132阅读 0赞 # 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%的性能影响 > 该文章为很久前的笔记,参考链接已丢失,如有雷同麻烦联系本住持删除
相关 mysqlroute配置和使用之一 MySQL Router是MySQL官方推出的一个轻量级MySQL中间件是处于应用client和dbserver之间的轻量级代理程序,它能检测,分析和转发查询到后端数据库实例, ╰半夏微凉°/ 2022年07月12日 15:51/ 0 赞/ 179 阅读
还没有评论,来说两句吧...