php - Mysql,数据库/服务器之间的数据迁移(现在迁移,稍后定期更新)

标签 php mysql database

这是一个有点抽象的问题,但希望同时也很简单。除了导出/导入之外,我只是不知道解决此问题的最佳方法,并且由于许可问题我无法这样做。所以我需要一些替代方案。

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

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

不过,我想知道 php 脚本是否是进行初始迁移的方法。我正在使用 MySQL Workbench,导出向导对于只读数据库失败,但如果界面中有其他方法,那么我不知道。

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

最佳答案

对于一次性数据移动,最简单的方法是使用命令行工具 mysqldump 将表转储到文件,然后使用 mysql 加载结果文件。这假设您要关闭 1.2.3,或者重新配置您的电话系统以指向 3.2.1(或适当更新 DNS) )。此外,如果您可以让电话系统停机来移动数据,这会容易得多。

we have reader access only so we're very limited in what we can do beyond selecting and joining for data records

这确实限制了您的选择。

  • 主/从复制需要 REPLICATION SLAVE 权限,您可能需要具有 SUPER 权限的用户来创建复制用户。
  • 基于触发器的复制解决方案,例如 SymetricDS将需要用户使用CREATE ROUTINE才能创建触发器
  • “提取、转换、加载”解决方案,如 Clover ETL如果表具有 LAST_CHANGED 时间戳,效果最佳。如果他们不这样做,那么您将需要 ALTER TABLE 权限。

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

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

这应该可以帮助您确定您的实际情况 - 是否是临时数据同步的一次性加载,或者是否是持续复制(实时或延迟)。

编辑: https://www.percona.com/doc/percona-toolkit/LATEST/index.html 查看角色工具包。特别是 pt-table-sync 和 pt-table-checksum。他们会为此提供帮助。

关于php - Mysql,数据库/服务器之间的数据迁移(现在迁移,稍后定期更新),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46220599/

相关文章:

javascript - 从所选值中获取elementbyId

c# - 使用c#在mysql表的单列中插入逗号分隔值

php - 如何避免在mysql数据库中出现负值

php - 如何先按新日期排序然后按过去日期排序?

php - Xampp Phpmyadmin 停止工作

database - 我应该如何在数据库中表示唯一的 super 管理员权限?

php - Apache + PHP 同时运行多个脚本

php - 如何根据元素中的整数值对元素进行排序?

java - 如何在 keycloak docker 容器中进行数据库备份

php - 将当前日期与数据库中的日期进行比较