我正在开发一个在客户端PC(Win)上运行的应用程序,它配置了一个MySQL服务器5.1实例,它将作为远程主机的只读从属设备.远程主服务器有几十个模式,但我每个客户端只需要一个模式,所以我在my.ini中提供了replication-do-db设置,只复制客户端需要的模式.复制工作正常,但是当我们的客户进入世界上只能通过3G无线接入互联网的地区时,他们会迅速超出数据计划限制并遇到昂贵的问题.
据我了解,MySQL将所有模式的所有事务写入单个binlog文件,这意味着每个客户端必须下载在主服务器上的每个模式上执行的所有事务,然后一旦下载,每次复制应用数据库过滤器 - 客户端的my.ini文件中的do-db设置.
为了最大限度地降低这种低效率,我采用了slave_compressed_protocol = 1设置,这似乎将传输的数据减少了50%,但仍然导致我们的客户端快速超过其数据限制,增加了3G账单.
我无法想象我是唯一一个面对这一点的人,所以我相信我会通过设置x = y来获得大量关于如何实现这一目标的答案.但是,我找不到任何关于这种设置的文档,也没有建议的方法.
到目前为止,我想到了一个可能的解决方案,请提供反馈或备用路线:
这应该导致客户端仅为其架构提取binlog数据.缺点(据我所知),它大大增加了我们设置的复杂性,可能使它更脆弱.
思考?这种方法会起作用吗?
注意,我们在RedHat上运行MySQL 5.0服务器,但是如果它产生解决方案我们可以升级到5.5.