数据库.读写分离

MySQL:数据库

读写分离时基于主从同步,所以要实现读写分离,先需搭建主从同步环境,主从同步的搭建,请参考 数据库.主从同步

原理
1 多台 MySQL 服务器
分别提供读、写服务,均衡流量,通过主从复制保持数据一致性
2 MySQL 代理面向客户端
收到 SQL 写请求时,交给服务器 A 处理
收到 SQL 读请求时,交给服务器 B 处理
具体区分策略由服务设置

基本构建思路
1. 已搭建好 MySQL 主从复制
– 其中 Slave 为只读
2. 添加一台 MySQL 代理服务器
– 部署 / 启用 maxscale
3. 客户端通过代理主机访问 MySQL 数据库
– 访问代理服务器

部署 MySQL 代理
安装 maxscale
下载地址 https://downloads.mariadb.com/files/MaxScale
主配置文件 /etc/maxscale.cnf
rpm -ivh maxscale-2.1.2-1.rhel.7.x86_64.rpm

修改配置文文件
[server1] // 定义数据库服务器主机名
type=server
address=192.168.4.10 //master 主机 ip 地址
port=3306
protocol=MySQLBackend
[server2] // 定义数据库服务器
type=server
address=192.168.4.20 //slave 主机 ip 地址
port=3306
protocol=MySQLBackend

[MySQL Monitor] // 定义要监视的数据库服务器
type=monitor
module=mysqlmon
servers=server1,server2 // 定义的主、从数据库服务器主机名
user=scalemon // 用户名
passwd=111111 // 密码
monitor_interval=10000
[Read-Write Service] // 定义实现读写分离的数据库服务器
type=service
router=readwritesplit
servers=server1,server2 // 定义的主、从数据库服务器主机名
user=maxscale // 用户名
passwd=111111 // 密码
max_slave_connections=100%

在主、从数据库服务器创建授权用户
mysql> grant replication slave, replication client on *.* toscalemon@'%' identified by “111111”; // 创建监控用户
mysql> grant select on mysql.* to maxscale@'%' identified by “111111”; // 创建路由用户
mysql> grant all on *.* to student@'%' identified by    “111111”; // 创建访问数据用户

启动 maxscale 
主要命令:
– 启动服务
– 查看端口
– 停止服务
maxscale --config=/etc/maxscale.cnf
netstat -utnalp | grep maxscale
kill -9 19081(以实际为准)


客户端访问测试
连接 MySQL 代理服务器
– mysql -h 代理的 IP 地址 -P 端口 -u 用户名 -p密码
• 在代理本机连接管理端口
– maxadmin -uadmin -pmariadb -p 端口
• 测试 SQL 查询、更新操作
– 可成功查询表记录
– 可成功写入数据

[root@bogon ~]# mysql -h192.168.4.100 -P4006 -ustudent p111111
MySQL [(none)]> select @@hostname; // 查看当前访问的主机名

猜你喜欢

转载自blog.csdn.net/liao__ran/article/details/81701597