好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

DBLE读写分离

单纯使用读写分离功能

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://HdhCmsTestgnu.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、读写分离功能限制

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

DBLE读写分离

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

查看更多关于DBLE读写分离的详细内容...

  阅读:27次