Инструменты пользователя

Инструменты сайта


skript_dlja_rezervirovanija_bazy_dannyx_na_python



Скрипт для резервирования базы данных на Python

import subprocess
from datetime import datetime
 
# 2008-03-30
# A little script to backup firebird databases
# Author: Alisson Sales 
 
# path to gbak (firebird backup utility)
FB_GBAK       = ‘gbak’
 
# parameters for gbak (list)
FB_PARAMS     = [FB_GBAK, ‘-t’, ‘-user, ‘SYSDBA’, ‘-pas’, ‘masterkey’]
 
# full path to database’s directory
FB_DB_DIR     = ‘/var/lib/firebird/2.0/data/’
 
# a tuple of databases to backup
FB_DATABASES  = (
    ‘DATABASE1.GDB,
    ‘DATABASE2.GDB)
 
# full path to backup directory
FB_BACKUP_DIR = ‘/home/alisson/backup/firebird/’;
 
# path to data compressor (bzip2, zip, rar, gzip)
COMPRESSOR = ‘bzip2′
 
# just a shortcut
timestamp = lambda: datetime.now().strftime(’%Y-%m-%d %H:%M:%S’)
 
for db in FB_DATABASES:
 
    # sufix to backup filename
    sufix = ‘.’ + datetime.now().strftime(’%Y%m%d_%H%M%S’) + ‘.fbk’
 
    print[%s] Starting backup of file %s” % (timestamp(), db)
 
    backup = []
    backup.extend(FB_PARAMS)
    backup.append(FB_DB_DIR + db)
    backup.append(FB_BACKUP_DIR + db + sufix)
    p = subprocess.Popen(backup, stderr=subprocess.PIPE)
    p.wait()
    error = p.communicate()[1]
 
    if not error:
        print[%s] Backup is done.” % timestamp()
    else:
        print[%s] Error:\n%s” % (timestamp(), error)
 
    print[%s] Starting compression of backup file %s” % (timestamp(), db + sufix)
 
    compress = []
    compress.append(COMPRESSOR)
    compress.append(FB_BACKUP_DIR + db + sufix)
    p = subprocess.Popen(compress, stderr=subprocess.PIPE)
    # preventing too much use of CPU, compressing 1 file per time
    p.wait()
    error = p.communicate()[1]
 
    if not error:
        print[%s] Compression is done.\n” % timestamp()
    else:
        print[%s] Error:\n%s” % (timestamp(), error)

Источник

Обсуждение

miwa, 2011/10/16 13:46

Следует иметь в виду, что питоновский subprocess на дефолтных установках примерно в два раза тормозит локальный бекап и на порядок бекап с удаленной машины (http://www.sql.ru/forum/actualthread.aspx?tid=887990). Так что приведенный выше скрипт без доработок следует использовать только для резервирования небольших (условно - меньше пары гигабайт) локальных баз данных.

miwa, 2011/10/16 13:47

Следует иметь в виду, что питоновский subprocess на дефолтных установках примерно в два раза тормозит локальный бекап и на порядок бекап с удаленной машины (http://www.sql.ru/forum/actualthread.aspx?tid=887990). Так что приведенный выше скрипт без доработок следует использовать только для резервирования небольших (условно - меньше пары гигабайт) локальных баз данных.

GoaCDtTd, 2023/07/09 19:11

1

Ваш комментарий. Вики-синтаксис разрешён:
O S V E P
 
skript_dlja_rezervirovanija_bazy_dannyx_na_python.txt · Последнее изменение: 2009/04/15 09:50 (внешнее изменение)