我正在尝试安装skytools以便将数据库迁移到Amazon RDS,但我收到错误

时间:2016-08-01 13:31:35

标签: python postgresql amazon-web-services

设置详情: 使用Postgres 9.3运行Ubuntu 14.04的1x EC2, 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   

     

import pgq.consumer文件“/usr/local/lib/python2.7/dist-packages/pgq/consumer.py”,第6行,   在       来自pgq.baseconsumer导入BaseConsumer,BaseBatchWalker文件“/usr/local/lib/python2.7/dist-packages/pgq/baseconsumer.py”,第75行,

     

在       class BaseConsumer(skytools.DBScript):文件“/usr/local/lib/python2.7/dist-packages/skytools/apipkg.py”,第114行,

     __makeattr中的

      result = importobj(modpath,attrname)File“/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,

     

在       default_skylog = skytools.installer_config.skylog

     

AttributeError:'module'对象没有属性'skylog'

我错过了依赖吗? (Skylog似乎是skytools的一部分,所以我得出结论并非如此。)有没有其他人遇到过这个问题? (此错误似乎没有任何谷歌搜索结果。)谢谢!

1 个答案:

答案 0 :(得分:1)

TL; DR:

确保您正在运行本地pgqadm.py安装目录中的skytools-2.x.y,例如:./python/pgqadm.py ticker.ini install

如果您之前安装了Skytools 3.x,这可能会出现问题,这可能会在PATH中首先出现。

背景

我刚遇到同样的问题。我有相同的用例(迁移pg-> rds),并遵循AWS documentation的相同建议。

我最初安装Skytools 3.x之前注意到它需要超级用户权限才能成为副本。 which pgqadm.py返回/usr/bin/pgqadm.py,这是我放弃的Skytools 3.x安装的工件。

当我去Skytools源存储库寻找skylog的实例时,我开始怀疑版本冲突。第一个结果在这里: 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

在这种情况下,完全限定pgqadm.py的路径可以解决此问题。