我有一个 mysql 数据库,其中包含一些带有私人信息的表和一些带有公共信息的表。
我只想将包含公共信息的表从一个数据库复制到另一个数据库,确保没有机密信息存储在从属数据库上。
我知道我可以使用replicate-do-table来指定只复制一些表,但我的理解是整个 bin 日志传输到从属。
有没有办法确保只有公共信息被传输到奴隶?
我非常犹豫是否将数据库的另一个副本添加到现有服务器 - 我只是认为现有服务器没有可用容量,无论是 RAM 还是 CPU。
在一台数据库服务器上进行过滤的唯一方法是在一台数据库服务器上运行多个 MySQL 实例。
端口 3306将是您的应用程序的普通数据库实例
端口 3307将成为端口 3306 的从属端口
对于在 DB1 上运行的 MySQL 实例,您需要执行一些操作
作为一个选项,将 DB1 3307 中的所有表转换为BLACKHOLE 存储引擎。
这样,DB1 3307 就只有包含信息的二进制日志。没有实际数据。
设置 MySQL 实例并使其成为 DB1 的 3307 实例的从属实例。为什么这样好呢?
因为DB1 3307实例中的binlog应该只包含公共信息。因此,DB1 3307 中的所有从站只能看到公共信息。
请参阅我的其他帖子,了解如何在复制中使用 BLACKHOLE 表
Apr 18, 2013:单从-多主MySQL复制Feb 03, 2012:一从多主MySqlJun 01, 2011:我们可以在 MySQL 5.0 复制中做些什么来解决带宽问题?May 16, 2011: mySQL DB 可以实现多主单从吗?Mar 11, 2011:MySQL星型拓扑