подпроцесс python и mysqldump

Я знаю, что части этого вопроса задавались ранее, но у меня есть несколько связанных вопросов.

Я пытаюсь казнить

mysqldump -u uname -ppassword --add-drop-database --databases databaseName | gzip > fileName

Я потенциально сбрасываю очень большой (200 ГБ?) ДБ. Само по себе это глупо? Затем я хочу отправить заархивированный файл по сети для хранения, удалить локальный дамп и очистить несколько таблиц.

Во всяком случае, я использовал подобный подпроцесс, потому что, кажется, нет способа выполнить весь исходный вызов без подпроцесса, учитывая | быть именем таблицы.

from subprocess import Popen, PIPE

f = open(FILENAME, 'wb')
args = ['mysqldump', '-u', 'UNAME', '-pPASSWORD', '--add-drop-database', '--databases', 'DB']

p1 = Popen(args, stdout=PIPE)
P2 = Popen('gzip', stdin=p1.stdout, stdout=f)
p2.communicate()

но потом я читаю, что общение кеширует данные в памяти, что мне не подойдет. Это правда?

То, что я в итоге сделал сейчас:

import gzip
subprocess.call(args, stdout=f)
f.close()

f = open(filename, 'rb')
zipFilename = filename + '.gz'
f2 = gzip.open(zipFilename, 'wb')
f2.writelines(f)
f2.close()
f.close()

Конечно, это занимает миллион лет, и я ненавижу это.

Мои вопросы: 1. Могу ли я использовать свой первый подход на очень большой БД? 2. Могу ли я направить вывод mysqldump в сокет и запустить его через сеть и сохранить его, когда он прибудет, вместо того, чтобы отправлять заархивированный файл?

Спасибо!

Ответы на вопрос(4)

Ваш ответ на вопрос