【问题标题】:MySQL Conditional Replication based on RecordsMySQL 基于 Records 的条件复制
【发布时间】:2010-10-18 04:38:13
【问题描述】:

我们的组织有一个非常大的数据库,可以复制到不同的全球服务器。

在我们的数据库中,一些表包含特定区域专有的数据,因此为这些区域内的用户提供专有信息的特权。

例子

transactions_australia, transactions_dubai

)

与区域表相反,我们有全球表,其中包含来自世界所有地区的信息。

示例

person, address, contacts

)

我们面临的问题是,在授予用户访问这些信息的权限时,我们会面临我们正在努力克服的安全风险。

首席程序员建议我们通过查询复制驻留在全局表中的数据,这些查询只能将特定区域的数据提取到单独的数据库中,并在每次我们需要运行报告或提取数据时执行此复制。

我不完全同意这种方法,因为复制 11 多个表(包含数十万条记录)的记录需要很长时间,而且还有数据完整性问题同步是有风险的。

我正在寻找这种复制方法的替代方法。

有没有办法为某些服务器设置条件复制?

例如。

如果更新了人员记录并且 人属于澳大利亚地区 然后记录将更新 主服务器和复制 只会发生在 对应的服务器。

或者有其他替代方法吗?

我曾简要研究过使用 views,但我认为它们不会提供我们所追求的主要数据集的那种水平的推断。

【问题讨论】:

    标签: mysql mysqli mysql-management


    【解决方案1】:

    MySQL 提供选择性复制,但最小的选择级别是。这是因为,在大多数情况下,从纯数据库的角度来看,一个表几乎总是可以独立存在的。试图限制特定行的复制会严重损害数据完整性,并成为数据库管理的噩梦:MySQL 需要的有关表使用的信息超出了它的设计处理能力。

    在文档中关于复制的章节中,系统设置被描述为控制选择性表或数据库的复制。

    【讨论】:

    • 我们在复制中使用了选择性表,但是我们仍然需要提供从全局表中提取区域数据的附加层。这就是为什么首席程序员建议我们有一个脚本来从与某个区域相关的所有表中获取所有记录。然而,这既费力又费时,不是一个可行的选择。
    • 是否可以重新构建全局表以使这样的脚本更容易?您可以在其上放置触发器以更新特定于区域的表吗?像你的首席程序员建议的那样复制数据的脚本并不是一个糟糕的主意,但它很容易实现得很糟糕。不要害怕在寻找其他可行解决方案的过程中尝试一个疯狂的想法。
    猜你喜欢
    • 2021-02-22
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 2012-12-25
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 2013-04-20
    相关资源
    最近更新 更多