Skip to content

Commit

Permalink
Add rw (actiontech#155)
Browse files Browse the repository at this point in the history
* perf: Support alter table comment (actiontech#139)

* add manager command document: client_found_rows (actiontech#134)

* add manager command(client_found_rows)

* adjust the document

* add rw

Co-authored-by: LUA <[email protected]>
Co-authored-by: wenyh <[email protected]>
  • Loading branch information
3 people authored and yanhuqing666 committed Dec 3, 2020
1 parent b61dca6 commit 67a1636
Showing 1 changed file with 32 additions and 1 deletion.
33 changes: 32 additions & 1 deletion 2.Function/2.03_RW_Split.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,36 @@
## 2.3 读写分离
### 2.3.1 读写分离条件
3.20.10.0版本dble支持单纯的读写分离,可以和分库分表功能分开单独使用。原先的版本分库分表也支持读写分离,不影响该功能的使用。

### 2.3.1 读写分离配置

若想启用dble的读写分离,仅需在 user.xml 文件中配置 rwSplitUser并指定对应的dbGroup即可。dbGroup的配置参考db.xml的章节配置。这里需要注意的是三种用户配置的顺序是固定的。user.xml的详细配置请参考配置一章。
```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="rwGroup" maxCon="20"/>
</dble:user>
```

#### 2.3.1.1 配置注意事项
1. 当在user.xml中仅配置rwSplitUser时,dble不会加载sharding.xml的相关内容,即dble不具备分库分表的功能。
2. 当同时开启dble读写分离和分库分表的功能,分库分表引用的dbGroup和读写分离引用的dbGroup必须相互独立。rwSplitUser引用的dbGroup,仅需在db.xml中定义即可。shardingUser引用的dbGroup,需要被配置的schemas对应的sharding.xml中的shardingNode所引用。
3. 多个rwSplitUser可以引用同一个dbGroup。
4. 被读写分离或者分库分表使用的dbGroup内的instance才会有心跳和连接池;未被有效使用的dbGroup内的instance只有心跳,不会初始化连接池。

#### 2.3.1.2 功能限制
1. druid 解析器限制 - 不支持set语句中存在特殊字符;
2. druid 解析器限制 - set session transaction read write, isolation level repeatable read中,逗号后的语句不生效;
2. 只读事务的支持;
3. 不支持set transaction read write;
4. select 语句现在的逻辑是都进行负载,还没有进行细节的区分,比如有些语句需要强制发主,如系统函数,系统表,系统变量;
5. select ... into或者load data中存在用户变量,通过dble再次查询该变量,变量值不对;
6. 临时表,预编译语句和当前连接存在关联,使用会有问题;
7. client连接dble时,若指定不存在的schema默认库,dble不会报错;
8. 在会话中,删除正在使用的库,mysql会将当前库置为null,dble依然保留;


### 2.3.2 读写分离条件

要实现读写分离必须满足如下条件:

Expand Down

0 comments on commit 67a1636

Please sign in to comment.