Mysql,数据库/服务器之间的数据迁移(现在通过定期更新进行迁移)

时间:2017-09-14 13:34:22

标签: php mysql database

这有点像一个抽象的问题,但希望同时非常简单。我只是不知道除了导出/导入之外最好的解决方法,由于权限问题我无法做到这一点。所以我需要一些替代方案。

在一台服务器上,我们将其称为1.2.3我有一个包含2个架构的数据库,Rdbtest。这些模式分别有27个和3个表。该数据库存储来自我们电话系统的呼叫信息,但我们只有读者访问权限,因此除了选择和加入数据记录和信息之外,我们所做的事情非常有限。

然后我有一个生产数据库服务器,用我的主模式调用它3.2.1,我想将之前的30个表放入其中一个生产模式中。迁移完成后,我需要创建一个脚本来检查第一个连接上的数据,然后更新生产连接上的新模式,但这是在批量迁移完成之后。

我想知道是否可以使用php脚本进行初始迁移。我正在使用MySQL工作台,并且导出向导对于只读数据库失败,但如果界面中有另一种方式,那么我不知道它。

这是一个相当多的数据,我不一定寻找最快的方式,但最简单,最安全的方法。

1 个答案:

答案 0 :(得分:1)

对于一次性数据移动,最简单的方法是使用命令行工具mysql将表转储到文件,然后使用1.2.3加载生成的文件。这假设您要么关闭phone system,要么将3.2.1重新配置为指向REPLICATION SLAVE(或者适当更新DNS)。此外,如果您可以通过电话系统停止移动数据,这将更容易。

  

我们只有读者访问权,所以除了选择和加入数据记录之外,我们所做的事情非常有限

这确实限制了您的选择。

  • 主/从复制需要SUPER权限,您可能需要具有CREATE ROUTINE权限的用户才能创建复制用户。
  • 基于触发器的复制解决方案(如SymetricDS)需要LAST_CHANGED用户才能创建触发器
  • 如果表格有ALTER TABLE个时间戳,那么“{3}}之类的”提取,转换,加载“解决方案最有效。如果他们不这样做,那么您将需要{{1}}权限。

针对不同目标的不同工具。

  • 主/从复制通常用于灾难恢复,可用性或读取扩展
  • Hetergenous Replication以连续但异步的方式在不同环境(可能是不同的RDBMS或不同的副本集)之间复制一些(或所有)表。
  • ETL用于批量,每小时/每日/定期数据移动,能够选择列的子集,聚合,转换时间戳格式,与多个源合并,并且通常可以修复数据所需的任何内容。

这应该可以帮助您确定您的情况 - 无论是一次性加载临时数据同步,还是正在进行的复制(实时或延迟)。

编辑: Clover ETL 查看Persona工具包。特别是pt-table-sync和pt-table-checksum。他们会帮助解决这个问题。