阿里云
发表主题 回复主题
  • 1838阅读
  • 22回复

DRDS常见问题专用贴

发帖
48
云币
84
— 本帖被 不靠谱贝贝 执行置顶操作(2017-05-17) —
每一楼一个问题和回答,大家如果碰到问题可以按照索引查询,不断更新中...

1. 跨分库分布式事务报错

2. DRDS引擎监控的逻辑QPS与物理QPS两项指标的意义

3. DRDS引擎监控的逻辑RT与物理RT两项指标的意义

4. DRDS是否支持数据缩容操作?

5. VPC中的ECS如何访问DRDS?

6. Application was streaming results when the connection failed.  

7. 通过DTS从RDS往DRDS导入数据后,DRDS的Seuqence为何没有更新并导致主键冲突?  

8. DRDS 是表名大小写不敏感吗?可以修改吗?

9. DRDS的拆分键是字符串的时候,值是否大小写敏感?

10. DRDS 下如何使用联合主键

11. DRDS 下是否支持跨逻辑库访问

12.如何查看DRDS上有哪些连接?(如何查看有哪些机器、用户连接了DRDS?)

13.如何在DRDS开启分布式事务(GTS)

14. DRDS 如何处理 GROUP BY 查询

15. DRDS怎么对查询进行KILL?

16. DRDS 通过 DMS 设置 autocommit 不生效?

17. DRDS是否支持LOAD DATA INFILE?

18.处理 Sequence(全局唯一序列)失败,All dataSource faild to get value!

19.DRDS报错:XXX command denied to user `dbName`@ip for table `tbName`

20.DRDS与RDS分别处于经典网络和VPC网络时,对网络的设置说明

21. DDL 执行失败无法使用 if not exist 批量修复的临时处理办法  

22. 通过DTS导入数据后怎么保证后续的insert操作的自增ID不会出现重复?






[ 此帖被drds_rd在2017-06-27 19:00重新编辑 ]
发帖
48
云币
84
只看该作者 沙发  发表于: 04-25
跨分库分布式事务报错
现象: Caused by: java.sql.SQLException: [asdfasdfsdfsd-4][10.10.10.10:3306][db_name]ERR-CODE: [TDDL-4603][ERR_ACCROSS_DB_TRANSACTION] Transaction accross db is not supported in current transaction policy, transaction node is: xxxx_0001_RDS, but this sql execute on: xxxx_0002_RDS. More: [http://middleware.alibaba-inc.com/faq/faqByFaqCode.html?faqCode=TDDL-4603]
  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1086)
  at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4237)  

内容关键字: 分布式事务 跨分库

解答:这个报错是指你的事务中几个操作跨分库了(DRDS连接按照分库创建,就是xxxx_0001_RDS这种在事务中操作涉及等于大于2个),这样跨几个连接的事务属于分布式事务,有同学说我就一个RDS上,即使跨了几个分库应该也支持单机事务啊,这个在这种情况下没错,但是我们实际上不清楚您什么时候会通过扩容将库分布到不同的RDS实例上,所以严格起见跨库即默认报分布式事务错误

解决方案:
1.只要事务中涉及的这些表分库字段带 等值条件( where db_partition_key = ?),且值都一样,确保落到一个分片
2. 开GTS服务,接受read commit级别的分布式事务(包括存在的一些限制)。

[ 此帖被drds_rd在2017-04-27 09:06重新编辑 ]
发帖
48
云币
84
只看该作者 板凳  发表于: 04-26
DRDS引擎监控的逻辑QPS与物理QPS两项指标是什么意思?
问题:
DRDS引擎监控的逻辑QPS与物理QPS两项指标是什么意思?

关键字:
逻辑QPS 、物理QPS

解答:

首先,介绍以下两个概念:
逻辑SQL: 应用发给DRDS的SQL;
物理SQL: DRDS发给RDS的SQL。

逻辑QPS是从逻辑SQL的维度去统计DRDS每秒处理来自用户的SQL数目;

物理QPS是从物理SQL的维计去统计DRDS每秒发给RDS的SQL数目。

DRDS作为一个支持分库分表的分布式关系型数据库服务,应用发给DRDS的一条逻辑SQL之下,就有可能会对应多条的物理SQL。通过观察一个DB的逻辑QPS与物理QPS之间的差异,有助于发现应用的SQL在DRDS进行的执行情况(如是否带了拆分键、是否含有全表扫描等)。
[ 此帖被drds_rd在2017-04-26 00:22重新编辑 ]
发帖
48
云币
84
只看该作者 地板  发表于: 04-26
DRDS的逻辑RT与物理RT是什么意思?
问题:
DRDS引擎监控的逻辑RT与物理RT两项指标是什么意思?

关键字:
逻辑RT 、物理RT

解答:

首先,介绍以下两个概念:
逻辑SQL: 应用发给DRDS的SQL;
物理SQL: DRDS发给RDS的SQL。

逻辑RT是指执行逻辑SQL的响应时间(ResponseTime), 即从应用给DRDS发送SQL,到DRDS返回查询结果所用的时间,单位是ms;

物理RT是指执行物理SQL的响应时间(ResponseTime), 即从DRDS向RDS发送SQL,到RDS给DRDS返回查询结果所用的时间,单位是ms。

通过对比DRDS的逻辑RT与物理RT,可以分析一下慢SQL到底是慢在DRDS层还是慢在RDS层。

[ 此帖被drds_rd在2017-05-04 10:38重新编辑 ]
发帖
48
云币
84
只看该作者 4楼 发表于: 05-04
DRDS目前是否支持数据的缩容?
问题:
DRDS目前是否支持数据的缩容?

关键字:
缩容

解答:
不支持,目前DRDS控制台不支持用户的数据缩容操作,也不支持工单处理。
[ 此帖被drds_rd在2017-05-04 10:40重新编辑 ]
发帖
48
云币
84
只看该作者 5楼 发表于: 05-04
VPC中的ECS如何访问DRDS?
问题:VPC中的ECS如何访问DRDS?


关键字: VPC


解答:
ECS与DRDS需在同样的网络下,才能访问。因此VPC中的ECS只能访问同一个VPC中的DRDS。因此,您需要将您的DRDS切换到相应的VPC网络下,才能供VPC中的ECS访问。DRDS切换到VPC网络可以在DRDS控制台上自助完成,参考:https://help.aliyun.com/knowledge_detail/52162.html
注意:VPC下的DRDS实例不支持白名单,如果设置了白名单,会导致无法登陆。所以切换前请清空白名单。如果已经切换了VPC,请切回经典网络清空白名单后再切换到VPC。



[ 此帖被drds_rd在2017-05-04 14:44重新编辑 ]
发帖
48
云币
84
只看该作者 6楼 发表于: 05-04
Application was streaming results when the connection failed.

问题:在做大结果集查询或者大数据量的INSERT...SELECT操作时,DRDS报错,Application was streaming results when the connection failed. Consider raising value of 'net_write_timeout' on the server.


关键字: 数据导入 连接断开


解答:请将您的RDS实例的访问模式从高安全模式切换到普通模式。切换方法如图所示:






[ 此帖被drds_rd在2017-05-04 21:01重新编辑 ]
发帖
48
云币
84
只看该作者 7楼 发表于: 05-10
通过DTS从RDS往DRDS导入数据后,DRDS的Seuqence为何没有更新并导致主键冲突?
问题:
通过DTS从RDS往DRDS导入数据后,DRDS的Seuqence为何没有更新?导致应用不填主键自增列会导致主键冲突?

关键字:
数据导入  Seuqence  主键冲突

解答:
用户从RDS 往DRDS导入数据时,通常所有的 insert的SQL因为都是显式指定了主键自增的值, 所以即使数据导入后,也不会触发DRDS自动更新Sequence的取值。所以,当用户的应用尝试insert并且不填写自增列的值时,DRDS这里还是使用老的sequence值,这种情况下,应用需要通过DRDS的sequence的DDL, 手工调整一下DRDS的sequence的值。

解决方案:
用户参考 https://help.aliyun.com/document_detail/51752.html?spm=5176.doc50067.6.600.MjJaTL,使用Sequence 的DDL, 自主调整一下Sequence的最大值。

[ 此帖被drds_rd在2017-05-10 15:28重新编辑 ]
发帖
48
云币
84
只看该作者 8楼 发表于: 05-15
DRDS 是表名大小写不敏感吗?可以修改吗?
问题:DRDS 是表名大小写不敏感吗?可以修改吗?


关键字:表名、大小写敏感


解答:DRDS的表名大小写不敏感,也不可以进行修改。
[ 此帖被drds_rd在2017-05-15 15:40重新编辑 ]
发帖
48
云币
84
只看该作者 9楼 发表于: 05-16
DRDS的拆分键是字符串的时候,值是否大小写敏感?
问题:DRDS的拆分键是字符串的时候,值是否区大小写敏感?

关键字:拆分键、大小写敏感

解答:DRDS的拆分键,在进行路由的哈希计算的时候,是大小写敏感的,但进行数据匹配的时候,取决于字段的定义。

例如:
1.对于同一个拆分键name的不同值"a"与"A",可能路由到不同的分片;
2.假如"a"与"A"恰好哈希值相同,路由到了同一个分片,那么能否根据name="a"匹配到name="A",取决于name字段的collate属性,如果collate大小写不敏感,则能匹配到,如果敏感,则匹配不到。

从这点上我们能得到的一个实践原则是,对于拆分键,数据怎么写入的,需要用同样的值去查,例如写入的是name="a",那么查询的时候也用name="a"去查,而不要用name="A"。




[ 此帖被drds_rd在2017-05-16 16:38重新编辑 ]
发帖
48
云币
84
只看该作者 10楼 发表于: 05-16
DRDS 下如何使用联合主键?
问题:DRDS 下如何使用联合主键?

关键字:拆分键、联合主键

解答:DRDS 中只有包含拆分键的唯一索引能够生效。DRDS 上使用联合主键,如果联合主键中没有包含拆分键,则只能在分表内检查唯一性。

例如:
1. 假设逻辑表表 tb_a 有两张物理分表 tb_a_0 和 tb_a_1
2. 如果联合主键中包含拆分键 sk,则能够维持联合主键的语义(此时等效于直接使用 sk 作为主键)
3. 如果联合主键中没有包含拆分键 sk,则联合主键只能在 tb_a_0 和 tb_a_1 内部保持语义,tb_a_0 和 tb_a_1 之间的数据任然可能重复
4. 以上现象同样适用于唯一键和唯一主键


[ 此帖被drds_rd在2017-05-16 17:18重新编辑 ]
发帖
48
云币
84
只看该作者 11楼 发表于: 05-17
DRDS是否支持跨逻辑库访问?
问题:DRDS是否支持跨逻辑库访问?比如默认连接的是 db1,但执行的 SQL是 SELECT * FROM db2.tab1; 或 SELECT * FROM db1.tab1 JOIN db2.tab2 ON db1.tab1.fk = db2.tab2.id

关键字:跨逻辑库

解答:DRDS 不支持跨逻辑库访问,连接哪个逻辑库就只能访问该逻辑库下的表。

[ 此帖被drds_rd在2017-05-17 16:21重新编辑 ]
发帖
48
云币
84
只看该作者 12楼 发表于: 05-18
如何查看DRDS上有哪些连接?(如何查看有哪些机器、用户连接了DRDS?)
问题:我想查看目前DRDS上有哪些机器、用户连接了上来,应该怎么做?

关键字:查看连接

解答:在DRDS上执行SHOW CONNECTION指令,即可查看目前DRDS上有哪些连接过来。

注意:目前VPC网络内的DRDS暂时无法获取客户端的正确IP,经典网络内的DRDS可以正确的获取客户端的IP。



[ 此帖被drds_rd在2017-06-06 10:33重新编辑 ]
发帖
48
云币
84
只看该作者 13楼 发表于: 05-22
DRDS怎么开启分布式事务(GTS)
关键字:GTS
DRDS开启分布式事务,GTS,参见一下文章
https://help.aliyun.com/document_detail/48751.html?spm=5176.doc48726.6.556.v53YmX
发帖
48
云币
84
只看该作者 14楼 发表于: 05-31
DRDS怎么对查询进行KILL?
问题 :DRDS怎么对查询进行KILL?

关键字 :KILL, 慢查询

解答 : https://help.aliyun.com/document_detail/52158.html?spm=5176.product29657.6.620.UEmnSP
通过该方法定位到具体的慢查询之后,需要KILL。

示例操作:

通过mysql -h -u -P 连入到DRDS中,执行下面操作
  1. mysql> SHOW PROCESSLIST WHERE COMMAND != 'Sleep';
  2. +---------------+-----------+---------------------+---------+------+-----------+------------------------------------------------------------------------------------------------------+-----------+
  3. | ID            | USER      | DB                  | COMMAND | TIME | STATE     | INFO                                                                                                 | ROWS_SENT |
  4. +---------------+-----------+---------------------+---------+------+-----------+------------------------------------------------------------------------------------------------------+-----------+
  5. | 0-0-738373815 | zabgwj0 | tddl8_app_wnbt_0000 | Query   |    0 | executing | /*DRDS //b37f7cb69/ */SHOW SESSION VARIABLE |      NULL |  
  6. | 0-0-738761157 | zabgwj0 | tddl8_app_wnbt_0000 | Query   |    0 | init      | /*DRDS /10.51.23.34/b37f7cb6fc/ */SHOW SESSION VARIABLE |      NULL |    
  7. | 0-0-738834613 | hagegt0 | hello_olrm_0000     | Query   |    0 | init      | show processlist                                                                                     |      NULL |      
  8. | 0-0-739001281 | zabgwj0 | tddl8_app_wnbt_0000 | Query   |    0 | executing |SHOW SESSION VARIABLE |      NULL |          
  9. | 0-0-755420702 | zabgwj0 | tddl8_app_wnbt_0000 | Query   |    0 | executing | /*DRDS /10.51.44.2/b37f7cb698/ */SHOW SESSION VARIABLE |      NULL |  
  10. +---------------+-----------+---------------------+---------+------+-----------+------------------------------------------------------------------------------------------------------+-----------+
  11. 5 rows in set (0.06 sec)
  12. mysql> kill '0-0-738373815';


注意: kill 的规则为 kill '0-2-1057893459' 必须加上单引号,否则会kill 失败, 格式为kill 'ID' 。ID为连接标识

























[ 此帖被drds_rd在2017-06-06 15:35重新编辑 ]
发表主题 回复主题
« 返回列表
«12»
共2页
上一主题下一主题

限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
验证问题: 阿里云官网域名是什么? 正确答案:www.aliyun.com
上一个 下一个