Mysql配置数据读写分离

  • 什么是读写分离

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

  • 为什么要做读写分离

1. 减轻单台数据库服务器的并发访问压力

2. 提高数据库服务器的硬件利用率

3. 读写分离是集群的基础需求

  • 怎样实现数据的读写分离

使用mysql中间件提供的服务实现

常用的中间件:mycat、mysql-proxy、maxscale

中间件的原理:在client和server之间做一个拦截

  • 使用中间件来实现读写分离的缺点

1. 单点故障

2. 当访问量很大时,会造成网络瓶颈

  • 读写分离的结构(主从结构是基础)

  client
     |
               代理服务器
                       |
__________________________________
         write   read
            |                         |

        master                 slave

  • 使用maxscale实现数据的读写分离

在代理服务器上:

下载安装软件包:maxscale

修改配置文件/etc/maxscale.cnf

]# vim /etc/maxscale.cnf

.. ..

9  [maxscale]
10  threads=auto    //服务运行后开启线程的数量

.. ..

# 定义数据库服务器

18  [名称]
19  type=server
20  address=数据库服务器的ip地址
21  port=3306
22  protocol=MySQLBackend

.. ..

# 定义监控的数据库服务器

36  [MySQL Monitor]
37  type=monitor
38  module=mysqlmon
39  servers=数据库服务器列表
40  user=监视数据库服务器时连接的用户名
41  passwd=用户密码
42  monitor_interval=10000

.. ..

# 不定义只读服务

53  #[Read-Only Service]
54  #type=service
55  #router=readconnroute
56  #servers=server1
57  #user=myuser
58  #passwd=mypwd
59  #router_options=slave

.. ..

# 定义读写分离服务

64  [Read-Write Service]
65  type=service
66  router=readwritesplit
67  servers=数据库服务器列表
68  user=用户名    #验证连接代理服务器访问数据库服务器的用户是否存在
69  passwd=密码
70  max_slave_connections=100%

.. ..

# 定义管理服务

76  [MaxAdmin Service]
77  type=service
78  router=cli

.. ..

# 不指定只读服务使用的端口号

86  #[Read-Only Listener]
87  #type=listener
88  #service=Read-Only Service
89  #protocol=MySQLClient
90  #port=4008

.. ..

#定义读写分离服务使用的端口号

92  [Read-Write Listener]
93  type=listener
94  service=Read-Write Service
95  protocol=MySQLClient
96  port=4006    #设置使用的端口

.. ..

#定义管理服务使用的端口

98  [MaxAdmin Listener]
99  type=listener
100  service=MaxAdmin Service
101  protocol=maxscaled
102  socket=default

.. ..

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

mysql>grant replication slave,replication client on *.* to 监控用户名@'%' identified by "123456";
mysql>grant select on mysql.* to 连接用户@'%' identified by "123456";

启动服务

]# maxscale -f /etc/maxscale.cnf

查看服务进程和端口号

]# netstat -antplu | grep maxscale

查看进程

]# ps -C maxscale

测试配置

]# maxadmin -P端口号 -uadmin -p密码

猜你喜欢

转载自blog.csdn.net/baidu_29120075/article/details/80860885