MySQL数据库之读写分离
admin
2023-05-08 03:02:31
0

一、概述:

    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)上面。        

上一篇:PSQL工具使用技巧

下一篇:mysql实用工具

相关内容

热门资讯

“AI+课程”如何变身“微创课... 当前,以大模型、智能算法和数据技术为核心的AI技术正在深刻改变劳动力市场,同时影响制造业、服务业及知...
“点热成电”,挖掘能源金矿 “十五五”规划纲要提出,深入实施能源安全新战略,加快构建清洁低碳安全高效的新型能源体系,建设能源强国...
新能源车企激战大电量时代 “量... 时报财经图库/供图 证券时报记者 叶玲珍 作为车企角逐的主战场,电池容量军备竞赛日趋白热化。中国汽车...
以方透露内塔尼亚胡曾秘访阿联酋... 以色列方面5月13日透露,以总理内塔尼亚胡在以色列对伊朗发动大规模军事行动期间曾秘密访问阿联酋,并称...
英伟达、谷歌、苹果均创市值历史... 【CNMO科技消息】5月14日,CNMO科技注意到,美东时间周三,美股三大指数涨跌不一,纳指和标普5...
商业化探索持续深入 “AI+教... 来源:滚动播报 (来源:经济参考报) 人工智能通识课堂上,教师发出指令几分钟后,学生手绘的卡通人物就...
偷拍男子是否会被清出公务员拟录... 近日,南京审计大学一名在校研究生顾某某因涉嫌偷拍女生隐私,引发关注。顾某某已被国家税务总局江苏省税务...
乌克兰首都基辅传出爆炸声 △乌克兰首都基辅(资料图)当地时间14日,乌克兰首都基辅传出爆炸声,此前基辅拉响防空警报。(总台记者...
移动空调制冷一会就停止了 原因可能是空调正在开启启动模式,移动空调存在逐步启动模式,在空调开启过程中会逐步启动保证空调的正常运...
排水管怎么安装 首先需关闭上水阀,然后将软管用扳手拧下来装上三通,注意需要按一个内部带丝扣的一面,然后在三通上接上原...