MySQL Router安装和读写分离实现

打印 上一主题 下一主题

主题 1578|帖子 1578|积分 4734

 
MySQL Router 安装
  1. 解压缩,修改路径名字
  2. root@ubuntu06:/usr/local/mysql_install_package# tar xvf mysql-router-8.3.0-linux-glibc2.28-x86_64.tar.xz
  3. root@ubuntu06:/usr/local/mysql_install_package# mv mysql-router-8.3.0-linux-glibc2.28-x86_64 mysql-router8.3
  4. root@ubuntu06:/usr/local/mysql_install_package# cd mysql-router8.3
  5. 创建一个router服务的数据路径router
  6. root@ubuntu06:/usr/local/mysql-router8.3# mkdir router
  7. root@ubuntu06:/usr/local/mysql-router8.3# cd router
  8. 在router路径下创建data log config run
  9. root@ubuntu06:/usr/local/mysql-router8.3/router# mkdir data log config run
复制代码
用解压包中的设置文件模板,依据当前的主从复制,编辑router的设置文件
  1. [DEFAULT]
  2. logging_folder = /usr/local/mysql-router8.3/router/log
  3. plugin_folder = /usr/local/mysql-router8.3/lib/mysqlrouter
  4. config_folder = /usr/local/mysql-router8.3/router/config
  5. runtime_folder = /usr/local/mysql-router8.3/router/run
  6. data_folder = /usr/local/mysql-router8.3/router/data
  7. #keyring_path = /var/lib/keyring-data
  8. #master_key_path = /var/lib/keyring-key
  9. [logger]
  10. level = INFO
  11. filename = mysqlrouter.log
  12. timestamp_precision = second
  13. [routing:basic_failover]
  14. # To be more transparent, use MySQL Server port 3306
  15. bind_address = 0.0.0.0
  16. bind_port = 7001
  17. routing_strategy = first-available
  18. mode = read-write
  19. destinations = 192.168.152.112:8000,192.168.152.113:8000
  20. [routing:load_balance]
  21. bind_address = 0.0.0.0
  22. bind_port = 7002
  23. #routing_strategy = first-available
  24. mode = read-only
  25. destinations = 192.168.152.113:8000,192.168.152.112:8000
  26. # If no plugin is configured which starts a service, keepalive
  27. # will make sure MySQL Router will not immediately exit. It is
  28. # safe to remove once Router is configured.
  29. [keepalive]
  30. interval = 60
复制代码
 
MySQL Router systemd服务脚本

MySQL Router systemd服务脚本如下
  1. [Unit]
  2. Description=Percona MySQL Router
  3. After=network.target
  4. After=syslog.target
  5. [Service]
  6. Type=notify
  7. User=mysql
  8. Group=mysql
  9. # Start main service
  10. ExecStart=/usr/local/mysql-router8.3/bin/mysqlrouter -c /usr/local/mysql-router8.3/router/config/mysqlrouter.conf
  11. # Sets open_files_limit
  12. LimitNOFILE = 100000
  13. Restart=on-failure
  14. PrivateTmp=true
  15. [Install]
  16. WantedBy=multi-user.target
复制代码
 编辑好MySQL systemd设置文件后,reload
  1. 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的一部分,而不是数据库端。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

农民

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表