用于单个客户端的MySQL备份多客户端数据库

时间:2011-10-06 16:58:56

标签: mysql database-backups mysql-backup

我在工作中必须完成的任务面临问题。 我有一个MySQL数据库,其中包含我公司的几个客户端的信息,我必须创建一个备份/恢复过程来为任何单个客户端备份和恢复此类信息。为了澄清,如果我的客户A丢失了他的数据,我必须能够恢复这些数据,确保我没有修改客户端B,C的数据...... 我不是数据库管理员,因此我不知道是否可以使用标准的mysql工具(例如mysqldump)或任何其他备份工具(例如Percona Xtrabackup)来执行此操作。

为了备份,我的研究(以及我的直觉)使我得出了这个可能的解决方案:

  1. 使用insert-select语法创建恢复插入语句(http://dev.mysql.com/doc/refman/5.1/en/insert-select.html);
  2. 将此插入保存到sql文件中,按正确顺序或允许此脚本临时禁用外键检查以满足外键的约束;
  3. 当然,我每天为所有客户做这件事,每个客户使用一个文件(和白天)。
  4. 然后,在我必须恢复特定客户端的数据的情况下:

    1. 我删除了他剩下的所有数据;
    2. 我使用他在备份期间创建的sql文件恢复了正确的数据。
    3. 这样我相信我可以在不触及客户端B的数据的情况下恢复客户端A的正确数据。我的解决方案是否最终有效?有没有更好的方法来实现相同的结果?或者您是否需要有关我的问题的更多信息?

      请原谅我,如果这个问题不是很好,但我是新来的,这是我的第一个问题,所以我可能会不高兴...无论如何都要感谢你的帮助。

      注意:我们还将使用mysqldump备份整个数据库。

1 个答案:

答案 0 :(得分:0)

您可以使用--where参数,您可以提供类似* client_id = N *的条件。当然,我正在做出一个假设,因为您没有提供有关架构的任何信息。

如果你有一个Star模式,那么你可以编写一个小脚本来备份所有查找表(考虑到它们足够小),使用这个参数--tables并使用 - where 客户数据表的条件。为了获得额外的性能,您可以使用client_id对表进行分区。