Ежедневное резервное копирование MySQL из одной таблицы в другую

Если у меня есть 2 таблицы с одинаковым определением, как я буду делать резервные копии данных из них ежедневно? Могу ли я использовать администратора mySQL для выполнения чего-то подобного

  • Каждый день в 00:00 копируйте все строки из main_table в backup_table.
  • Будет предпочтительнее, если это инкрементная резервная копия, так как в записи в backup_table будут внесены некоторые изменения, и я не хочу, чтобы новая резервная копия стирала эти изменения.

Спасибо


person Girish Dusane    schedule 19.12.2010    source источник


Ответы (2)


Начнем с этого: Копирование данных из одной таблицы в другую на том же сервере НЕ ЯВЛЯЕТСЯ резервным копированием.

Теперь, если у вас MySQL 5.1.6 или новее, вы можете использовать планировщик событий для планирования таких действий.

http://dev.mysql.com/doc/refman/5.1/en/events.html

Это должно быть так же просто, как запустить такой запрос

INSERT INTO 
  secondarydatabase.tableName
SELECT pr.* FROM
  primarydatabase.tableName AS pr
LEFT JOIN
  secondarydatabase.tableName AS sec
USING(primaryKeyColumn)
WHERE sec.primaryKeyColumn IS NULL

(при этом будут скопированы любые новые строки, изменения в уже существующих строках не будут скопированы)

Что касается реальных резервных копий, пожалуйста, прочитайте это:

http://dev.mysql.com/doc/refman/5.1/en/backup-methods.html

person Mchl    schedule 19.12.2010

Да, вы определенно можете это сделать. Взгляните на эту страницу: http://dev.mysql.com/doc/refman/5.0/en/batch-mode.html

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

Однако всегда рекомендуется делать резервную копию текущей таблицы перед вставкой. Вы можете очистить резервные таблицы, если импорт прошел успешно.

person rkg    schedule 19.12.2010