MySQL Router安装和读写分离实现

 

MySQL Router 安装

解压缩,修改路径名字
root@ubuntu06:/usr/local/mysql_install_package# tar xvf mysql-router-8.3.0-linux-glibc2.28-x86_64.tar.xz
root@ubuntu06:/usr/local/mysql_install_package# mv mysql-router-8.3.0-linux-glibc2.28-x86_64 mysql-router8.3
root@ubuntu06:/usr/local/mysql_install_package# cd mysql-router8.3
创建一个router服务的数据路径router
root@ubuntu06:/usr/local/mysql-router8.3# mkdir router
root@ubuntu06:/usr/local/mysql-router8.3# cd router
在router路径下创建data log config run
root@ubuntu06:/usr/local/mysql-router8.3/router# mkdir data log config run

用解压包中的配置文件模板,依据当前的主从复制,编辑router的配置文件

[DEFAULT]
logging_folder = /usr/local/mysql-router8.3/router/log
plugin_folder = /usr/local/mysql-router8.3/lib/mysqlrouter
config_folder = /usr/local/mysql-router8.3/router/config
runtime_folder = /usr/local/mysql-router8.3/router/run
data_folder = /usr/local/mysql-router8.3/router/data
#keyring_path = /var/lib/keyring-data
#master_key_path = /var/lib/keyring-key
[logger]
level = INFO
filename = mysqlrouter.log
timestamp_precision = second
[routing:basic_failover]
# To be more transparent, use MySQL Server port 3306
bind_address = 0.0.0.0
bind_port = 7001
routing_strategy = first-available
mode = read-write
destinations = 192.168.152.112:8000,192.168.152.113:8000
[routing:load_balance]
bind_address = 0.0.0.0
bind_port = 7002
#routing_strategy = first-available
mode = read-only
destinations = 192.168.152.113:8000,192.168.152.112:8000
# If no plugin is configured which starts a service, keepalive
# will make sure MySQL Router will not immediately exit. It is
# safe to remove once Router is configured.
[keepalive]
interval = 60

 

MySQL Router systemd服务脚本

MySQL Router systemd服务脚本如下

[Unit]
Description=Percona MySQL Router
After=network.target
After=syslog.target
[Service]
Type=notify
User=mysql
Group=mysql
# Start main service
ExecStart=/usr/local/mysql-router8.3/bin/mysqlrouter -c /usr/local/mysql-router8.3/router/config/mysqlrouter.conf
# Sets open_files_limit
LimitNOFILE = 100000
Restart=on-failure
PrivateTmp=true
[Install]
WantedBy=multi-user.target

 编辑好MySQL systemd配置文件后,reload

systemctl daemon-reload

一开始通过systemctl start mysqlrouter报错,查看系统日志如下,提示相关路径没有权限

重新授权 MySQL router的数据文件路径chown mysql:mysql -R mysql-router8.3,再次启动,可以正常启动

 

MySQL Router 读写分离

通过绑定的读&写节点端口号70001端口,可以在正常连接至节点

通过绑定的只读节点的7002端口,请求可以在主从两个节点之间轮训,请注意MySQL是在连接的时候轮训配置的读节点的,数据库连接之后指向的节点就不变了,所以这个验证要新建连接的方式

自动故障转移

 

MySQL Router安装位置

MySQL Router自身不存储数据,足够的轻量和简单,进做一个数据库连接的转发工作,算做事无状态服务。正如官网上给出的示例图,MySQL Router更应该安装在Application端,作为Application的一部分,而不是数据库端。

作者:MSSQL123原文地址:https://www.cnblogs.com/wy123/p/18846467

%s 个评论

要回复文章请先登录注册