码迷,mamicode.com
首页 > 数据库 > 详细

DBLE读写分离

时间:2021-05-24 06:12:25      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:默认   status   star   disabled   sql   协议   tar   commit   druid   

单纯使用读写分离功能

  • 3.20.10.0版本开始dble?持单纯的读写分离,可以和分库分表功能分开单独使?。
  • 若想启?dble的读写分离,仅需在 user.xml ?件中配置 rwSplitUser并指定对应的dbGroup即可。

1、修改user.xml配置文件

<dble:user xmlns:dble="http://dble.cloud/" version="4.0">
    <managerUser name="man1" password="654321" maxCon="100"/>
<!--    <shardingUser name="root" password="123456" schemas="testdb" readOnly="false" maxCon="20"/>-->
    <rwSplitUser name="rwsu1" password="123456" dbGroup="dbGroup1" maxCon="20"/>
</dble:user>
  • 这?需要注意的是三种??配置的顺序是固定的。
  • 当在user.xml中注释shardingUser用户时,dble不会加载sharding.xml配置文件,即dble不具备分库分表的功能。

2、修改db.xml配置文件

<?xml version="1.0"?>
<!--
  ~ Copyright (C) 2016-2020 ActionTech.
  ~ License: http://www.gnu.org/licenses/gpl.html GPL version 2 or higher.
  -->

<dble:db xmlns:dble="http://dble.cloud/" version="4.0">
    <dbGroup name="dbGroup1" rwSplitMode="3" delayThreshold="100">
        <heartbeat>show slave status</heartbeat>
        <dbInstance name="instanceM1" url="10.186.65.68:3308" user="test" password="test" maxCon="1000" minCon="10"
                    primary="true" readWeight="2" id="xx1">
            <property name="testOnCreate">true</property>
        </dbInstance>
        <dbInstance name="instanceS1" url="10.186.65.71:3308" user="test" password="test" maxCon="1000" minCon="10"  readWeight="2" disabled="false">
            <property name="testOnCreate">false</property>
        </dbInstance>
        <dbInstance name="instanceS2" url="10.186.65.72:3308" user="test" password="test" maxCon="1000" minCon="10"  readWeight="2" disabled="false">
            <property name="testOnCreate">false</property>
        </dbInstance>
    </dbGroup>
</dble:db>
  • dble通过配置多个dbInstance为读操作提供负载均衡

技术图片

3、重启DBLE

[root@study01 dble]# ./bin/dble restart
Stopping dble-server...
Stopped dble-server.
Starting dble-server...

4、测试读写分离

[root@study01 ~]# mysql -urwsu1 -p -h127.0.0.1 -P8066
Enter password: 


#测试读:
MySQL [(none)]> select @@server_id;select @@server_id;select @@server_id;select @@server_id;select @@server_id;select @@server_id;


#测试写:
MySQL [(none)]> begin;
MySQL [(none)]> select @@server_id;select @@server_id;select @@server_id;select @@server_id;select @@server_id;select @@server_id;
MySQL [(none)]> commit;

5、读写分离功能限制

  1. druid 解析器限制 - 不?持set语句中存在特殊字符;
  2. druid 解析器限制 - set session transaction read write, isolation level repeatable read中,逗号后的语句不?效;
  3. 只读事务的?持;
  4. 不?持set transaction read write;
  5. select 语句现在的逻辑是都进?负载,还没有进?细节的区分,?如有些语句需要强制发主,如系统函数,系统表,系统变量;
  6. select ... into 或者 load data中存在??变量,通过dble再次查询该变量,变量值不对;
  7. 预编译语句和当前连接存在关联,使?会有问题;
  8. client连接dble时,若指定不存在的schema默认库,dble不会报错;
  9. 在会话中,删除正在使?的库,mysql会将当前库置为null,dble依然保留;
  10. prepared statament协议未测试,谨慎使?;
  11. set 语句?前只?持会话级别系统变量和??变量的设置,若需要设置密码等可以使?hint的?式设置或去后端节点去设置;
  12. 读写分离会打破原先的隔离级别;
  13. 创建临时表后,之后所有的语句都发往主,因为临时表不?持主从复制。直到你删除了所有临时表后,原先的负载均衡策略恢复;
  14. 部分客?端,?如 在设置了 allowMultiQueries=true (默认为 false) 的 jdbc,此时客?端可以?次性发送 multi-queries , dble 对此情况不做拆分,全部发往主。MySQL Command-Line client 会在客?端拆分语句,?次只发送?条语句,故不会有该条限制 ;

因为有悔,所以披星戴月;因为有梦,所以奋不顾身! 个人博客首发:easydb.net 微信公众号:easydb 关注我,不走丢!

技术图片

DBLE读写分离

标签:默认   status   star   disabled   sql   协议   tar   commit   druid   

原文地址:https://www.cnblogs.com/easydb/p/14757958.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!