这有点像一个抽象的问题,但希望同时非常简单。我只是不知道除了导出/导入之外最好的解决方法,由于权限问题我无法做到这一点。所以我需要一些替代方案。
在一台服务器上,我们将其称为1.2.3
我有一个包含2个架构的数据库,Rdb
和test
。这些模式分别有27个和3个表。该数据库存储来自我们电话系统的呼叫信息,但我们只有读者访问权限,因此除了选择和加入数据记录和信息之外,我们所做的事情非常有限。
然后我有一个生产数据库服务器,用我的主模式调用它3.2.1
,我想将之前的30个表放入其中一个生产模式中。迁移完成后,我需要创建一个脚本来检查第一个连接上的数据,然后更新生产连接上的新模式,但这是在批量迁移完成之后。
我想知道是否可以使用php脚本进行初始迁移。我正在使用MySQL工作台,并且导出向导对于只读数据库失败,但如果界面中有另一种方式,那么我不知道它。
这是一个相当多的数据,我不一定寻找最快的方式,但最简单,最安全的方法。
答案 0 :(得分:1)
对于一次性数据移动,最简单的方法是使用命令行工具mysql
将表转储到文件,然后使用1.2.3
加载生成的文件。这假设您要么关闭phone system
,要么将3.2.1
重新配置为指向REPLICATION SLAVE
(或者适当更新DNS)。此外,如果您可以通过电话系统停止移动数据,这将更容易。
我们只有读者访问权,所以除了选择和加入数据记录之外,我们所做的事情非常有限
这确实限制了您的选择。
SUPER
权限,您可能需要具有CREATE ROUTINE
权限的用户才能创建复制用户。 LAST_CHANGED
用户才能创建触发器ALTER TABLE
个时间戳,那么“{3}}之类的”提取,转换,加载“解决方案最有效。如果他们不这样做,那么您将需要{{1}}权限。针对不同目标的不同工具。
这应该可以帮助您确定您的情况 - 无论是一次性加载临时数据同步,还是正在进行的复制(实时或延迟)。
编辑: Clover ETL 查看Persona工具包。特别是pt-table-sync和pt-table-checksum。他们会帮助解决这个问题。