数据库MySQL相关

11 MySQL 读写分离

2019-02-12  本文已影响32人  Kokoronashi

MySQL 数据读写分离

[TOC]

读写分离概述

什么是读写分离

把客户端访问数据库服务时的查询请求和写数据的请求给不同的数据库服务器处理.

分类 命令
seelct
insert update delete

方法

  1. 人肉分离

    代码层面通过程序分离读写,需要修改代码.繁琐复杂

  2. 代理分离

    通过添加中间件代理层软件,自动实现区分读写操作.不需要修改代码.

读写分离的原理

多台 MySQL 服务器

由MySQL代理面向客户端

MySQL 读写分离架构部署

1549908190387

配置主从同步

把192.168.1.103配置为192.168.1.102的从库

部署代理

MySQL中间件

和mysql搭配使用实现某种目的的统称为中间件

常用 mysql 中间件

  1. MaxScale
  2. ProxySQL
  3. Mycat
  4. Mysql-Proxy

安装代理软件包

maxscale RPM包下载

yum install maxscale-2.3.3-1.centos.7.x86_64.rpm

修改配置文件

并根据配置文件的设置在数据库服务器上添加对应的授权用户.

vim /etc/maxscale.cnf

[maxscale]
threads=auto

#主机配
[server1]
type=server
address=192.168.1.102
port=3306
protocol=MariaDBBackend

[server2]
type=server
address=192.168.1.103
port=3306
protocol=MariaDBBackend

[MariaDB-Monitor]
type=monitor
module=mariadbmon
#监控主机列表
servers=server1, server2
#监控用用户
user=scalemon   
password=123123
monitor_interval=2000

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

[Read-Write-Service]
type=service
router=readwritesplit
servers=server1, server2
#路由用户
user=maxscale   
password=123123

[MaxAdmin-Service]
type=service
router=cli

#[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     #默认4008管理端口
port=4009   #管理服务的监听端口

创建监控用户 scalemon

mysql> grant replication slave,replication client on *.* to scalemon@'%' identified by '123123';

创建路由用户 maxscale

mysql> grant select on mysql.* to maxscale@'%' identified by '123123';

代理上测试 scalemon 和 maxscale 用户能否脸上102,103

启动代理服务

systemctl start maxscale
maxscale --cofnig=/etc/maxscale.cnf

查看服务信息

ps -ef|grep maxscale
maxscale  5501     1  0 23:01 ?        00:00:00 /usr/bin/maxscale

[root@test1 ~]# netstat -nltpu|grep maxscale
tcp   0  0 127.0.0.1:8989   0.0.0.0:*    LISTEN      5501/maxscale       
tcp6  0  0 :::4009          :::*         LISTEN      5501/maxscale       
tcp6  0  0 :::4006          :::*         LISTEN      5501/maxscale

测试配置

  1. 代理服务器上连接管理服务查看监控信息

scalemon 监控用户,连接后端 MySQL 监视信息.

maxadmin -uadmin -pmariadb -P4009
MaxScale> list servers
Servers.
-------------------+-----------------+-------+-------------+--------------------
Server             | Address         | Port  | Connections | Status              
-------------------+-----------------+-------+-------------+--------------------
server1            | 192.168.1.102   |  3306 |           0 | Master, Running
server2            | 192.168.1.103   |  3306 |           0 | Slave, Running
-------------------+-----------------+-------+-------------+--------------------

  1. 在客户端连接100主机,访问数据时能否实现数据读写分离.
mysql -h192.168.1.101 -ujim -p123qqq... -P4006  #客户端连接maxscale
mysql> select @@hostname;   #查询的时候 显示在从库
+------------+
| @@hostname |
+------------+
| test3      |
+------------+

插入数据再去主库从库验证数据是否都存在,都有的话即写入时进入主库.完成读写分离.
上一篇下一篇

猜你喜欢

热点阅读