MySQL数据库之读写分离-创新互联

一、概述:

创新互联服务紧随时代发展步伐,进行技术革新和技术进步,经过十年的发展和积累,已经汇集了一批资深网站策划师、设计师、专业的网站实施团队以及高素质售后服务人员,并且完全形成了一套成熟的业务流程,能够完全依照客户要求对网站进行网站设计、网站制作、建设、维护、更新和改版,实现客户网站对外宣传展示的首要目的,并为客户企业品牌互联网化提供全面的解决方案。

    MySQL数据库主从结构配置以后,正常情况下数据库的所有读写操作全部都在主数据库上面,从数据库仅仅作为数据备份使用,显然无法有效的使用服务器资源,那么实现读写分离的需求就不可避免。

二、拓扑图说明:

MySQL数据库之读写分离

    如上图所示,本文要实现的是读MySQL数据库的写入操作(增删改)等在Master服务器(192.168.4.10)上面实现,而对MySQL数据库的读取操作(查询)等在Slave服务器(192.168.4.20)上面完成。

    如果在程序员编程时创建两个数据库连接Connection,在程序中对数据库的读取操作使用一个数据库Connection,而对数据库的写入操作使用另外一个数据库Connection,也可以实现对数据库的读写分离。但是显然这种实现方式不够灵活,因此一般不使用这种方式。

    本文中将使用MaxScale软件来实现MySQL数据库的读写分离。MaxScale是由http://www.skysql.com/开发的一款MySQL数据库中间件,支持高可用,负载均衡,具有良好的可扩展性,高性能的基于事件驱动的同时具有代理和管理功能的中间件。该软件将部署在拓扑图中的MySQL代理服务器(192.168.4.100)上,客户机的访问请求指向MySQL代理服务器,该服务器将把对数据库的写入操作指向到192.168.4.10,对数据库的读取操作指向到192.168.4.20。

三、配置说明:

1、MaxScale配置

 (1)修改配置文件:

     [root@100 ~]# vim /etc/maxscale.cnf

        A、指定数据库服务器
          [server1]
            type=server
            address=192.168.4.10      
            port=3306
            protocol=MySQLBackend
 
          [server2]
            type=server
            address=192.168.4.20
            port=3306
            protocol=MySQLBackend

       B、指定要监控的数据库服务器
          [MySQL Monitor]
           type=monitor
           module=mysqlmon
           servers=server1,server2
           user=scalemon            #代理服务器监控服务连接数据库服务器的用户名(需要在数据库服务器上面授权)
           passwd=123456                #代理服务器监控服务连接数据库服务器的密码

           monitor_interval=10000      //活跃检查时间间隔,10000毫秒=10秒
       C、指定读写分离在哪些主机之间执行
         [Read-Write Service]
            type=service
            router=readwritesplit
            servers=server1,server2
            user=maxscale           #用于检查用户连接数据库时用的授权用户是否合法的用户名(需要对mysql数据库有select权限)
            passwd=123456              #用于检查用户连接数据库时用的授权用户是否合法的用户名       

         max_slave_connections=100%
       D、定义管理服务和方式(不用改)
          [MaxAdmin Service]
            type=service
            router=cli
       E、只读服务器配置选项(不用,全部注释掉)
         [Read-Only Service]
            #type=service
            #router=readconnroute
            #servers=server1
            #user=myuser
            #passwd=mypwd
            #router_options=slave

            #[Read-Only Listener]
            #type=listener
            #service=Read-Only Service
            #protocol=MySQLClient
            #port=4008
       F、读写分离的监听端口配置
         [Read-Write Listener]
            type=listener
            service=Read-Write Service
            protocol=MySQLClient
            port=4006               //客户端读写分离服务访问端口
      G、管理服务的监听端口配置
         [MaxAdmin Listener]
            type=listener
            service=MaxAdmin Service
            protocol=maxscaled
            socket=default
            port=4009               //管理服务使用的端口

2、在主数据库服务器添加授权

  mysql > grant replication slave,replication client on *.* to scalemon@"%" identified by "123456";
  mysql > grant select on mysql.* to maxscale@"%" identified by "123456";

3、在代理服务器上面启动服务并检查数据库服务器状态

 (1)启动服务:

      [root@100 ~]# maxscale --config=/etc/maxscale.cnf

 (2)检查状态

      [root@100 ~]# maxadmin -uadmin -pmariadb -P4009
         MaxScale> list servers
         -------------------+-----------------+-------+-------------+--------------------
         Server            | Address        | Port | Connections | Status             
         -------------------+-----------------+-------+-------------+--------------------
         server1           | 192.168.4.11   | 3306 |          0 | Master, Running
         server2           | 192.168.4.12   | 3306 |          0 | Slave, Running
         -------------------+-----------------+-------+-------------+--------------------

4、验证测试

    在192.168.4.120上使用授权用户连接代理服务器(192.168.4.100:4006),在从数据库服务器(192.168.4.20)上面Insert一些数据,在客户端可以读到,那么说明客户端读数据时是在从数据库(192.168.4.20);在192.168.4.120上使用授权用户连接代理服务器(192.168.4.100:4006),Insert一些数据成功,在主从数据库上面都可以看到,说明客户端写数据时是在主数据库服务器(192.168.4.10)上面。

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网页题目:MySQL数据库之读写分离-创新互联
新闻来源:http://cdiso.cn/article/djppgp.html

其他资讯