mySQL daily backup from one table to another

♀尐吖头ヾ 提交于 2019-12-04 05:57:06

问题


If I have 2 tables with the same definition, how would I backup data from it daily? Can I use mySQL Administrator to perform something like this

  • At 12:00am everyday, copy all the rows from main_table to backup_table
  • It will be preferable if it is incremental backup as some changes will be made to the reccords in backup_table and I don't want a new backup to wipe out those changes.

Thanks


回答1:


Let's start with this: Copying data from one table to another on the same server IS NOT a backup.

Now, if you have MySQL 5.1.6 or newer, you can use event scheduler, to schedule such actions.

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

It should be as simple as running a query like this

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

(this will copy any new rows, changes in already existing rows will not be copied over)

As far as actual backups go, please read this:

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




回答2:


Yes, you can definitely do that. Have a look at this page: http://dev.mysql.com/doc/refman/5.0/en/batch-mode.html

If you write your script carefully, so that you are not dropping the table and just inserting the new rows you need not worry about losing the data. If you are having a timestamp stored for each row in the table, that makes things a lot easier. You can use the timestamp to load/update the new rows which have been changed or added since the last batch run.

However, its always a best practice to make a backup of the current table before you do the insertion. You can cleanup the backup tables, if the import is successful.



来源:https://stackoverflow.com/questions/4485506/mysql-daily-backup-from-one-table-to-another

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!