Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

master-slave ddl issue #589

Closed
nobody2014100 opened this issue Jan 30, 2018 · 15 comments
Closed

master-slave ddl issue #589

nobody2014100 opened this issue Jan 30, 2018 · 15 comments

Comments

@nobody2014100
Copy link

Please answer these questions before submitting your issue. Thanks!
开源不易,我们希望将精力放在完成新功能和解决有价值的问题上,为了让大家的配合更具有效率,请填写以下列出的全部问题

Which version of Sharding-Jdbc do you using?(您使用的Sharding-Jdbc版本为?)

2.0.2

Expected behavior (您预期的结果是)

ddl 语句只在master数据源上执行

Actual behavior (实际运行的结果是)

ddl语句在master and slave都有执行

Steps to reproduce the behavior (可重现问题的操作步骤)

在 sharding-jdbc-spring-boot-data-mybatis-example 中执行SpringBootDataMybatisMain

1.初始化数据库
image

2.执行 init 方法

3.检查数据库tables
image

4.执行alterTableOrder
image
image

5.执行demo
image

**结论

create,alter,drop等ddl语句均在master和slave中执行了**

Please provide the reproduce example codes (such as github link),otherwise we will label the issue as Invalid and close it.(为了节省复现问题的时间,请务必提供可重现的代码,否则我们会将issue直接标记为invalid并关闭)

https://github.com/klaus20141002/sharding-jdbc-example.git

Code should based on https://github.com/shardingjdbc/sharding-jdbc-example
(代码请基于 https://github.com/shardingjdbc/sharding-jdbc-example)

@terrymanu
Copy link
Member

我们再最后复现一次吧

@terrymanu
Copy link
Member

terrymanu commented Jan 30, 2018

执行sharding-jdbc-spring-boot-data-mybatis-example不会自动创建schema,这个schema是你根据example中提供的创建的?这个schema里面是包含从库的建表schema的。
请确定下这个从库是如何创建出来的,是不是通过复制schema创建的?

@terrymanu
Copy link
Member

请提供mysql读写分离配置

@terrymanu
Copy link
Member

请问这次没有出现order_no已经存在的exception么?
之前的exception是如何出现的?

@haocao
Copy link
Member

haocao commented Jan 30, 2018

image
我们已根据提供的例子搭建好了环境,但在执行alterTableOrder并未发现任何报错信息,也并未在slave数据源上执行任何ddl语句。建议重新初始化环境再试一下。

@nobody2014100
Copy link
Author

你好,并非报错,是逻辑问题,ddl语句不应该在slave数据源执行

@nobody2014100
Copy link
Author

执行完init后呢,master,slave都有创建tables

@nobody2014100
Copy link
Author

同样的执行 alterTableOrder 也同时更新了salve库里面的table,理论上,slave应该只有dql语句才会执行

@terrymanu
Copy link
Member

你好,我们已经将example完整的运行了一遍,代码也过了一遍,花费了大量的时间与精力,但并无这种情况发生,这是您自身环境的问题。
请不要就此问题再反复提交issue了,谢谢你的配合与理解。

@nobody2014100
Copy link
Author

@terrymanu 我也无话可说了,这里确实是有问题的,并非我反复提交给你们找事儿,大家的时间都是宝贵的,我也真心希望这个软件可以做到更好~

@terrymanu
Copy link
Member

抱歉,我们实在无法重现,如果您觉得有问题,欢迎提供pr

@nobody2014100
Copy link
Author

@haocao 有没有执行DDL语句,看一下数据有没有建立tables就知道了呀,控制台是不会报错的

@terrymanu
Copy link
Member

我们尽量将使用者提出的issue重现并修改bug,但也请你换位思考一下,如果真如你所说,用了example就能重现,我们之前改的issue,以及我们连续试了这么多次,都是在做什么呢?
我认为要不就是有什么关键信息你和我们并未发现,要不就是你的数据库环境或sharding jdbc的版本有问题。
我们都是程序员,不会因为一件简单的很明显的事情来回扯皮。因此,我们未重现,是真的没有重现。sharding jdbc是大家的,没必要为了隐藏bug而做事情

@haocao
Copy link
Member

haocao commented Jan 31, 2018

抱歉,这个问题是由于我没有完全理解您的上下文引起的,我这边的环境一开始是仅读写分离配置,测试验证没有问题,后来又把环境变为真实读写分离环境,测试验证也没有问题,后来根据您提供的代码,在真实读写分离环境中测试读写分离+分库分表,没有报错。但还原回非真实读写分离环境,测试读写分离+分库分表确实存在slave数据源中执行ddl语句,我这边会新建一个issue,描述清楚具体的场景。

@terrymanu
Copy link
Member

duplicate with #522

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants