2
我们可以在MySQL 5.0 Replication中做什么来解决带宽问题?
我正在开发一个在客户端PC(Win)上运行的应用程序,该PC配置有MySQL服务器5.1实例,该实例将充当远程主服务器的只读从属服务器。远程主服务器有几十个模式,但是每个客户端只需要一个模式,因此我在my.ini中提供了copy-do-db设置,以仅复制客户端所需的模式。复制是可行的,但是当我们的客户进入仅通过3G无线访问互联网(按数据用量收费)的地区时,他们很快就会超出数据计划的限制,并遇到了昂贵的问题。 据我了解,MySQL将所有模式的所有事务都写入单个binlog文件中,这意味着每个客户端必须下载在主服务器上的每个模式上执行的所有事务,然后一旦下载,则对每个复制应用数据库过滤器- 客户端的my.ini文件中的do-db设置。 为了最大程度地减少这种低效率,我采用了slave_compressed_protocol = 1设置,该设置似乎将传输的数据减少了50%,但仍然导致我们的客户的数据流量迅速超过了3G账单。 我无法想象我是唯一面对这个问题的人,所以我敢肯定,通过设置x = y,我将获得大量有关如何实现这一目标的答案。但是,我找不到有关这种设置的任何文档,也找不到推荐的方法。 到目前为止,这是我对可能的解决方案的想法,请提供反馈或替代路线: 为每个模式设置“代理”从属(在不同的框上,或在具有不同的MySQL实例/端口的同一框上) 配置代理从属服务器,使其仅复制客户端希望复制的一个数据库。 将客户端的MySQL实例配置为相应代理从属的从属。 这应该导致客户端仅提取其架构的binlog数据。不利的一面(据我所知)是,它极大地增加了我们设置的复杂性,可能使其更加脆弱。 有什么想法吗?这种方法还能行吗? 注意,我们正在RedHat上运行MySQL 5.0服务器,但是如果它可以解决的话,我们可以升级到5.5。