0

我正在研究一些我想称之为复制的东西,但它可能还有其他一些技术术语——因为据我所知,“复制”是将结构及其数据完全复制到从站。我只想要结构复制。我的术语可能是错误的,这就是为什么我似乎无法自己找到答案。

当进行更改、添加或删除时,是否可以设置一个将主结构复制到多个本地数据库的 mysql 环境?我正在寻找一种解决方案,其中每个用户都可以使用自己的唯一数据获取自己的数据库实例,但具有相同的表结构。当对主结构进行更新时,每个用户数据库都应复制相同的过程。

例如,正在向master.table1添加一列,该列由user1.table1user2.table1复制。

我的第一个想法是在 PHP 中编写一个更新过程,但感觉这将是数据库中内置的一个非常基本的函数,因为我的结论是,使用更少的数据,索引查找会更快(〜总数据除以用户)并且可能更安全(没有不幸的泄漏,如果有的话)。

4

2 回答 2

1

您可能需要考虑合并数据库“迁移”的使用,这是 Ruby on Rails 框架所普及的东西。 这个 Google 搜索 PHP 数据库迁移可能是您的一个起点。

这个概念是,当您开发应用程序并进行架构更改时,您可以创建 SQL 迁移脚本来前滚或回滚架构更改。这使得轻松“迁移”您的数据库模式以使用特定代码版本变得非常容易(例如,如果您在多个环境中处理分支代码,每个环境都需要不同版本的数据库)。

这不会像您建议的那样自动进行更新,但肯定是朝着正确方向迈出的一步。还有像 Toad for MySQL 和 Navicat 这样的工具,它们在一定程度上支持模式同步。但同样,这些将是手动比较/同步。

于 2013-01-29T23:21:18.637 回答
1

我使用一组简单的 SQL 脚本解决了这个问题,该脚本用于数据库中的每个更改,名为 year-month-day-description.sql,我按字典顺序运行(这就是它以日期开头的原因)。

当然,您不想每次都运行它们。所以要知道我需要执行哪些脚本,每个脚本的末尾都有简单的插入,它将脚本的文件名插入到数据库中的表中。所以更新器 PHP 脚本只是简单地列出脚本,在表中删除这些并运行其余的。

这个解决方案的好处是,您也可以包含数据转换。而且,它可以是全自动的,只要脚本没问题,就不会发生任何不好的事情。

于 2013-01-29T23:49:25.967 回答