mySQL每日备份从一个表到另一个表

时间:2010-12-19 22:34:15

标签: mysql database-backups backup-strategies

如果我有2个具有相同定义的表,我将如何每天从中备份数据?我可以使用mySQL Administrator执行类似这样的操作吗

  • 每天凌晨12:00,将所有行从main_table复制到backup_table
  • 最好是增量备份,因为对backup_table中的记录会进行一些更改,我不希望新备份消除这些更改。

由于

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

是的,你绝对可以做到。请查看此页面:http://dev.mysql.com/doc/refman/5.0/en/batch-mode.html

如果您仔细编写脚本,以便不丢弃表并只插入新行,则无需担心丢失数据。如果您为表中的每一行存储了时间戳,那么事情就会变得容易多了。您可以使用时间戳来加载/更新自上次批处理运行以来已更改或添加的新行。

但是,在进行插入之前,最好先备份当前表。如果导入成功,您可以清理备份表。