我正在使用Bucardo来复制数据库中的数据。我有一个名为mydb的数据库,另一个名为mydb2。它们都包含相同的表,在两种情况下都称为“数据”。按照this website上的步骤,我安装了Bucardo并添加了两个数据库:
bucardo_ctl add database mydb
bucardo_ctl add database mydb2
并添加了表格:
bucardo_ctl add all tables
现在,当我尝试使用以下命令添加同步时:
bucardo_ctl add sync testfc source=mydb targetdb=mydb2 type=pushdelta tables=data
我收到以下错误:
DBD :: Pg :: st执行失败:错误:来自Perl函数的错误“herdcheck”:不能在第17行的同一个herd(1)中的不同数据库中获得山羊在/ usr / bin / bucardo_ctl第3346行。
有人有什么建议吗?任何人都将不胜感激。
答案 0 :(得分:2)
所以,在source选项中你应该放置herd的名字(据我所知,它是表的列表。 然后,而不是:
bucardo_ctl add all tables
使用
bucardo_ctl add all tables --herd=foobar
而不是使用
bucardo_ctl add sync testfc source=mydb targetdb=mydb2 type=pushdelta tables=data
使用
bucardo_ctl add sync testfc source=foobar targetdb=mydb2 type=pushdelta tables=data
问题是源选项不是放置源数据库的地方,而是“牧群”或表。
请记住,pushdelta适用于带有主键的表,而fullcopy适用于无关紧要的表是否有PK。
希望有所帮助。