如何将SymmetricDS的sym_%表迁移至其他数据库?遇表不存在报错求助
问题解答
核心结论
完全可以将SymmetricDS的系统表(sym_%)存储到与业务表不同的数据库中,这是SymmetricDS支持的部署方式,但需要正确配置数据源和触发器信息。
错误原因分析
你遇到的Could not find any database tables matching 'syncdb.sync_table'错误,是因为当前配置的JDBC数据源仅指向servicedb,SymmetricDS只能通过该数据源访问指定库内的表,无法跨库访问syncdb中的业务表,同时需要确保连接用户拥有访问syncdb的权限。
解决步骤
1. 修改JDBC连接URL
调整db.url,让数据源能够访问多个数据库(无需指定默认库,确保驱动支持跨库访问):
db.url=jdbc:mysql://127.0.0.1:3306/?useSSL=false&allowMultiQueries=true
配置后SymmetricDS可通过库名.表名的方式访问有权限的任意数据库表。
2. 授予数据库用户跨库权限
确保连接SymmetricDS的MySQL用户拥有syncdb和servicedb的全部操作权限:
GRANT ALL PRIVILEGES ON syncdb.* TO '你的用户名'@'localhost'; GRANT ALL PRIVILEGES ON servicedb.* TO '你的用户名'@'localhost'; FLUSH PRIVILEGES;
3. 验证触发器配置
确认sym_trigger的配置符合MySQL规则:
source_catalog_name填写数据库名syncdb(MySQL中catalog与数据库名对应)source_table_name填写业务表名sync_table- 无需额外设置
source_schema_name(MySQL中schema与catalog等价)
完成以上配置后,重新启动SymmetricDS即可正常识别跨库的业务表。
内容的提问来源于stack exchange,提问作者BionicHamster
相关产品推荐
相关产品推荐

