Как автоматически перемещать определенные таблицы MySQL с одной машины на другую? - PullRequest
0 голосов
/ 29 октября 2010

У меня есть база данных MySQL с таблицами в виде "shard_0", "shard_1 ", "shard_2" и т. Д.

Это виртуальные осколки. Теперь я хочу добавить еще один сервер БД и переместитьосколки с четными номерами ("shard_0", "shard_2", "shard_4", ...) для новой машины.

Каков наилучший способ сделать это? Есть много таблиц, поэтому в идеале я быНе нужно набирать каждое имя таблицы по отдельности, но делать что-то автоматически. Возможно что-то вроде:

# pseudo code    
for i in range(n):
    tablename = "shard_"+str(2*i)
    # Move tablename to new machine

Спасибо

Ответы [ 2 ]

2 голосов
/ 29 октября 2010

Я бы создал один (или, возможно, несколько) вызовов mysqldump, например,

print "mysqldump database",
for i in range(n):
    print "shard_"+str(2*i),

Запустите эту команду в оболочке и переместите файл дампа на новый компьютер, а затем запустите его через mysql. Затем сгенерируйте и запустите операторы «drop table» для таблиц, которые вы переместили.

0 голосов
/ 29 октября 2010

Я не уверен, что вижу проблему, но если я правильно понял, вы можете использовать Python для генерации сценария экспорта SQL и импорта сценария для другой машины.

Это избавит вас от необходимости делать это вручную. Что касается вашего фрагмента кода, я думаю, что лучший способ перенести базу данных с сервера на другую - использовать собственные возможности движка.

...