单纯使用读写分离功能
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
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did117195