设置详细信息:
运行Ubuntu 14.04和Postgres 9.3的1xec2,
1x RDS运行Postgres 9.3
我正在尝试将一个在EC2上的postgres数据库移到RDS上。我正在使用Londiste,它是recommended by AWS用于以最少的停机时间迁移数据库。具体来说,我使用的是Londiste/Skytools 2.1.13,因为Londiste3在两个系统上都需要超级用户权限。
我试过通过他们网站的zip和apt-get(都是2.1.13)安装Skytools。我已经安装了我认为所有的依赖项:postgres、libpq dev、postgresql-server-dev-9.3、pip和psycopg2。
无论如何,每当我尝试使用任何skytools命令时,都会出现以下错误:
回溯(最近一次呼叫时间):
文件“/usr/local/bin/pgqadm.py”,第9行,in
从pgq.ticker导入SmartTicker文件“/usr/local/lib/python2.7/dist packages/pgq/init.py”,第6行,in
导入pgq.consumer文件“/usr/local/lib/python2.7/dist packages/pgq/consumer.py”,第6行,
在
来自pgq.baseconsumer import baseconsumer,BaseBatchWalker文件“/usr/local/lib/python2.7/dist packages/pgq/baseconsumer.py”,第75行,
在
BaseConsumer类(skytools.DBScript):文件“/usr/local/lib/python2.7/dist packages/skytools/apipkg.py”,第114行,
在makeattr
result=importobj(modpath,attrname)文件“/usr/local/lib/python2.7/dist packages/skytools/apipkg.py”,第37行,
重要的是
module=import(modpath,None,None,['doc'])文件“/usr/local/lib/python2.7/dist packages/skytools/scripting.py”,行
23岁,
在
默认_skylog=skytools.installer_config.skylog
AttributeError:“module”对象没有“skylog”属性
我是不是失去了依赖?(Skylog似乎是skytools的一部分,所以我的结论不是这样的。)有没有其他人碰到过这个问题?(似乎没有任何带有此错误的google结果。)谢谢!
最佳答案
tl;博士:
确保正在运行本地安装目录中的pgqadm.py
,例如:skytools-2.x.y
如果您以前安装过Skytools 3.x,这可能是一个问题,它可能会在您的./python/pgqadm.py ticker.ini install
中首先出现。
背景
我刚碰到同样的问题。我有相同的用例(迁移pg->rds),并遵循了AWS documentation中的相同建议。
我最初安装了Skytools 3.x,后来发现它需要超级用户对潜在副本的权限。PATH
返回which pgqadm.py
,这是我废弃的Skytools 3.x安装的产物。
当我去Skytools源代码库查找/usr/bin/pgqadm.py
的实例时,我开始怀疑版本冲突。第一个结果是:
https://github.com/pgq/skytools-legacy/blob/11afc5210a92d4a2ccf701e4f92138488c31a3cb/python/skytools/installer_config.py.in
但是,我意识到这个存储库现在正在跟踪最新的3.x版本。我切换到了明显的2.1.x分支,却没有找到skylog
,正如预期的那样:
https://github.com/pgq/skytools-legacy/blob/skytools_2_1_stable/python/skytools/installer_config.py.in
完全限定skylog
的路径可以解决这个问题。