发布于2021-05-30 11:36 阅读(1053) 评论(0) 点赞(9) 收藏(2)
鉴于数据量增多,单机的数据库支撑业务有压力的情况下,进行了读写分离的初步部署;
目前读写分离的中间件比较多,比如有美团的DBProxy、360的Altas、OneProxy、MyCat、阿里的DRDS/TDD等,就简单的进行读写分离,考虑到更新维护情况和暂不进行数据库分库分表操作的情况,本次选择了mysql兼容更好的mysqlrouter;
本次部署采用mysql官方的中间件mysqlrouter-8.0.21,(部署数据库版本为mysql8.0.21);
MySQL Router是一个介于应用层和DB层之间的开源的轻量级中间件,它能够将前端应用的请求分析转发给后端DB服务器处理,从而实现DB的负载均衡。
[root@c7108:/opt/src]# tar -xf mysql-router-8.0.21-el7-x86_64.tar.gz -C /data/tools/
[root@c7108:/opt/src]# cd /data/tools/
[root@c7108:/data/tools]# mv mysql-router-8.0.21-el7-x86_64 mysql-router
[root@c7108:/data/tools]# cat >> /etc/profile << EOF
export MYSQL_ROUTER_HOME=/data/tools/mysql-router
export PATH=$MYSQL_ROUTER_HOME/bin:$PATH
EOF
[root@c7108:/data/tools]# source /etc/profile
[root@c7108:/data/tools]# mysqlrouter --version
MySQL Router Ver 8.0.21 for Linux on x86_64 (MySQL Community - GPL)
配置文件
[root@c7108:/data/tools]# vim /etc/mysqlrouter.conf
[DEFAULT]
logging_folder = /data/tools/logs
config_folder = /etc/
runtime_folder = /data/tools/mysql-router/run
data_folder = /data/tools/mysql-router/data
[logger]
level = INFO
[routing:secondary]
# To be more transparent, use MySQL Server port 3306
bind_address=0.0.0.0
bind_port = 7001
routing_strategy = round-robin
destinations = 192.168.13.105:3306,192.168.13.106:3306,192.168.13.107:3306
[routing:primary]
bind_address=0.0.0.0
bind_port = 7002
routing_strategy = first-available
destinations = 192.168.13.102:3306
[keepalive]
interval = 60
创建system unit文件
cat > /usr/lib/systemd/system/mysqlrouter.service << EOF
[Unit]
Description=mysqlrouter
Documentation=https://dev.mysql.com/doc/
After=network.target
[Service]
Type=simple
User=root
ExecStart=/data/tools/mysql-router/bin/mysqlrouter -c /etc/mysqlrouter.conf
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
启动
systemctl daemon-reload
systemctl enable mysqlrouter.service
systemctl start mysqlrouter.service
systemctl status mysqlrouter.service
[root@mysql-delay:/root]# mysql -uroot -p'Test%150' -h192.168.7.108 -P7001 --protocol=TCP -e "select @@hostname"
mysql: [Warning] Using a password on the command line interface can be insecure.
+------------+
| @@hostname |
+------------+
| mysql-s02 |
+------------+
[root@mysql-delay:/root]# mysql -uroot -p'Test%150' -h192.168.7.108 -P7001 --protocol=TCP -e "select @@hostname"
mysql: [Warning] Using a password on the command line interface can be insecure.
+------------+
| @@hostname |
+------------+
| mysql-s03 |
+------------+
[root@mysql-delay:/root]# mysql -uroot -p'Test%150' -h192.168.7.108 -P7001 --protocol=TCP -e "select @@hostname"
mysql: [Warning] Using a password on the command line interface can be insecure.
+------------+
| @@hostname |
+------------+
| mysql-s01 |
+------------+
其中s01为从1 s02为从2 s03为从3
[root@mysql-delay:/root]# mysql -uroot -p'Test%150' -h192.168.7.108 -P7002 --protocol=TCP -e "select @@hostname"
mysql: [Warning] Using a password on the command line interface can be insecure.
+------------+
| @@hostname |
+------------+
| mysql |
+------------+
[root@mysql-delay:/root]# mysql -uroot -p'Test%150' -h192.168.7.108 -P7002 --protocol=TCP -e "select @@hostname"
mysql: [Warning] Using a password on the command line interface can be insecure.
+------------+
| @@hostname |
+------------+
| mysql |
+------------+
其中mysql为主
由上可见,发送到MySQLrouter(192.168.7.108):7001端口的请求,被循环转发至三个从服务器,而发送至MySQLrouter(192.168.7.108):7002端口的请求,被转发至主服务器。
其中mysql为主
**由上可见,发送到MySQLrouter(192.168.7.108):7001端口的请求,被循环转发至三个从服务器,而发送至MySQLrouter(192.168.7.108):7002端口的请求,被转发至主服务器。**
原文链接:https://blog.csdn.net/weixin_43667733/article/details/117333595
作者:Hggh
链接:http://www.qianduanheidong.com/blog/article/115940/8f81723effc220314fe8/
来源:前端黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 前端黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-3
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!