簡體   English   中英

間歇性CKAN數據庫備份錯誤

[英]Intermittent CKAN database backup error

我已經計划了使用cron駐留在遠程UNIX盒上的CKAN數據庫的備份。 我使用以下代碼運行一個簡單的腳本:

. /usr/lib/ckan/default/bin/activate
cd /usr/lib/ckan/default/src/ckan

paster db dump --config=/etc/ckan/default/production.ini /home/gisadmin/CKAN_backup_tmp.pg

當我手動運行腳本時,該腳本總是成功的。 但是,cron作業有時會成功運行,有時會失敗,並顯示以下錯誤消息。 為了對此進行測試,我將作業安排為每小時運行一次,並且成功完成了大約一半的時間,而且我看不到任何實際模式。

Traceback (most recent call last):
  File "/usr/lib/ckan/default/bin/paster", line 9, in <module>
    load_entry_point('PasteScript==1.7.5', 'console_scripts', 'paster')()
  File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/paste/script/command.py", line 104, in run
    invoke(command, command_name, options, args[1:])
  File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/paste/script/command.py", line 143, in invoke
    exit_code = runner.run(args)
  File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/paste/script/command.py", line 238, in run
    result = self.command()
  File "/usr/lib/ckan/default/src/ckan/ckan/lib/cli.py", line 141, in command
    self._load_config()
  File "/usr/lib/ckan/default/src/ckan/ckan/lib/cli.py", line 96, in _load_config
    load_environment(conf.global_conf, conf.local_conf)
  File "/usr/lib/ckan/default/src/ckan/ckan/config/environment.py", line 232, in load_environment
    p.load_all(config)
  File "/usr/lib/ckan/default/src/ckan/ckan/plugins/core.py", line 134, in load_all
    load(*plugins)
  File "/usr/lib/ckan/default/src/ckan/ckan/plugins/core.py", line 167, in load
    plugins_update()
  File "/usr/lib/ckan/default/src/ckan/ckan/plugins/core.py", line 116, in plugins_update
    environment.update_config()
  File "/usr/lib/ckan/default/src/ckan/ckan/config/environment.py", line 357, in update_config
    plugin.configure(config)
  File "/usr/lib/ckan/default/src/ckan/ckanext/datastore/plugin.py", line 77, in configure
    self._check_urls_and_permissions()
  File "/usr/lib/ckan/default/src/ckan/ckanext/datastore/plugin.py", line 121, in _check_urls_and_permissions
    if not self._read_connection_has_correct_privileges():
  File "/usr/lib/ckan/default/src/ckan/ckanext/datastore/plugin.py", line 164, in _read_connection_has_correct_privileges
    write_connection.execute(u'CREATE TABLE _foo ()')
  File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1449, in execute
    params)
  File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1628, in _execute_text
    statement, parameters
  File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1698, in _execute_context
    context)
  File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1691, in _execute_context
    context)
  File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/sqlalchemy/engine/default.py", line 331, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.IntegrityError: (IntegrityError) duplicate key value violates unique constraint "pg_type_typname_nsp_index"
DETAIL:  Key (typname, typnamespace)=(_foo, 2200) already exists.
 'CREATE TABLE _foo ()' {}

任何幫助是極大的贊賞。

謝謝。

我認為這是數據存儲區代碼中的錯誤。 如果在運行備份之前禁用了數據存儲插件,則不會發生這種情況。 例如,您可以為您的production.ini文件創建一個完全相同的副本,但刪除了數據存儲插件,然后將其用於paster db dump命令。

另外,您可以直接使用PostgreSQL的pg_dump命令。

請注意,備份CKAN站點時,需要備份一些內容:

  1. CKAN的默認“目錄”數據庫, paster db dump命令或pg_dump將獲得此數據庫。
  2. 在DataStore數據庫中,我不認為paster db dump可以做到這一點,但是pg_dump應該可以實現。
  3. FileStore的存儲目錄的內容(如果正在使用)。 rsync將是一種簡單的備份方法。
  4. 您的配置文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM