2. mysql读写分离

1. 整体架构

在这里插入图片描述

2. 原理和构建思路

 - 原理
	多台MySQL服务器通过主从复制保持数据一致
	由maxscale代理服务器面向客户端
	收到SQL写请求时,交给主服务器处理
	收到SQL读请求时,交给从服务器处理
- 构建思路
	构建主从同步
	部署maxscale代理服务器
	客户端访问代理服务器测试

3. 主从服务器配置监控和验证用户(主库配置,从库会自动同步)

mysql> grant replication slave,replication client on *.* to myuser@"%" identified by "123456";
mysql> grant select on mysql.* to maxuser@"%" identified by "123456";
mysql> grant all on *.* to test@"%" identified by "123456";

分别是授权监控用户、授权验证用户、授权访问用户。

4. 部署maxscale代理服务器

主从同步参考Mysql主从同步配置这里直接部署代理服务器。

maxscale由MariaDB公司开发

下载地址

  1. 安装
rpm  -ivh maxscale-2.1.2-1.rhel.7.x86_64.rpm
#缺少依赖可以用yum或apt-get安装
yum install -y maxscale-2.1.2-1.rhel.7.x86_64.rpm
#离线安装可以用yum下载所有依赖到可以连接互联网的服务,然后scp或上传到离线服务器安装
yum install maxscale-2.1.2-1.rhel.7.x86_64.rpm --downloadonly --downloaddir=/root/
  1. 修改配置文件 /etc/maxscale.cnf
# MaxScale documentation:
# https://mariadb.com/kb/en/mariadb-enterprise/mariadb-maxscale-23/

# Global parameters
#
# Complete list of configuration options:
# https://mariadb.com/kb/en/mariadb-maxscale-23-mariadb-maxscale-configuration-usage-scenarios/

[maxscale]
threads=auto

# Server definitions
#
# Set the address of the server to the network
# address of a MariaDB server.
#

[server1]            #定义数据库服务器名
type=server
address=192.168.0.101     #主服务器IP地址
port=3306
protocol=MySQLBackend

[server2]             #定义数据库服务器名
type=server
address=192.168.0.102      #从服务器IP地址
port=3306
protocol=MySQLBackend

# Monitor for the servers
#
# This will keep MaxScale aware of the state of the servers.
# MariaDB Monitor documentation:
# https://mariadb.com/kb/en/mariadb-maxscale-23-mariadb-monitor/

[MariaDB-Monitor]          #定义要监控的数据库节点
type=monitor
module=mysqlmon            #
servers=server1,server2    #定义的数据库服务器名
user=myuser                #定义监控服务用户名
password=Admin@123!!       #定义监控服务密码
monitor_interval=10000

# Service definitions
#
# Service Definition for a read-only service and
# a read/write splitting service.
# ReadConnRoute documentation:
# https://mariadb.com/kb/en/mariadb-maxscale-23-readconnroute/

[Read-Only-Service]
type=service
router=readconnroute
servers=server1
user=myuser
password=mypwd
router_options=slave

# ReadWriteSplit documentation:
# https://mariadb.com/kb/en/mariadb-maxscale-23-readwritesplit/

[Read-Write-Service]              #定义读写分离的数据库节点
type=service
router=readwritesplit
servers=server1,server2           #定义的数据库服务器名
user=maxuser                      #定义连接数据库服务器的验证用户
password=Admin@123!!			#密码

# This service enables the use of the MaxAdmin interface
# MaxScale administration guide:
# https://mariadb.com/kb/en/mariadb-maxscale-23-maxadmin-admin-interface/

[MaxAdmin-Service]
type=service
router=cli

# Listener definitions for the services
#
# These listeners represent the ports the
# services will listen on.
#

#[Read-Only-Listener]
#type=listener
#service=Read-Only-Service
#protocol=MariaDBClient
#port=4008

[Read-Write-Listener]
type=listener
service=Read-Write-Service
protocol=MariaDBClient
port=4006

[MaxAdmin-Listener]
type=listener
service=MaxAdmin-Service
protocol=maxscaled
#socket=default
port=4016

上述配置中验证用户、监控用户的用户名和密码需要和第三步数据库中配置的完全一样。

  1. 启动maxscale
    [root@localhost~]# maxscale -f /etc/maxscale.cnf

注:maxscale最新版本不能这样启动,提示root用户不允许启动该服务。最好写一个启动文件,在启动文件中指定用户启动改程序

vi /etc/systemd/system/maxscale.server
[Unit]
Description=MaxScale Database Proxy
After=network.target

[Service]
User=maxscale
Group=maxscale
ExecStart=/usr/bin/maxscale -e /var/log/maxscale/maxscale.log -c /etc/maxscale.cnf
Restart=on-failure

[Install]
WantedBy=multi-user.target
  1. 查看服务连接管理端口
[root@localhost ~]# ss -nptul | grep maxscale
tcp    LISTEN     0      128    127.0.0.1:8989                  *:*                   users:(("maxscale",pid=45225,fd=35))
tcp    LISTEN     0      128    [::]:4006               [::]:*                   users:(("maxscale",pid=45225,fd=31))
tcp    LISTEN     0      128    [::]:4016               [::]:*                   users:(("maxscale",pid=45225,fd=34))

5. 客户端连接代理服务器验证

[root@clent ~]# mysql -h192.168.0.103 -utest -p123456 -P4006

写入数据、在主库查看数据、在从库验证读取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

此处无夏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值