我们可以在MySQL 5.0复制中做什么来解决带宽问题?

我正在开发一个应用程序在客户端PC(Win)上运行,该客户端PC配置了一个MySQL服务器5.1实例,该实例将充当远程主服务器的只读从服务器。 远程主服务器有几十个模式,但每个客户端只需要一个模式,因此我在my.ini中提供replication-do-db设置以仅复制客户端所需的模式。 复制工作,但是当我们的客户进入世界上只能通过3G无线访问互联网的地区时,他们很快就超出了他们的数据规划限制并且遇到了昂贵的问题。

据我了解,MySQL将所有模式的所有事务写入单个二进制日志文件,这意味着每个客户端都必须下载在主服务器上的每个模式上执行的所有事务,然后一旦下载,每个复制应用数据库过滤器 -客户端的my.ini文件中的do-db设置。

为了最大限度地降低这种低效率,我采用了slave_compressed_protocol = 1设置,似乎将传输的数据减少了50%,但仍然导致我们的客户迅速超过3G账单的数据限制。

我无法想象我是唯一一个面临这个问题的人,所以我相信我会通过设置x = y得到大量的答案。 但是,我找不到任何这样的设置文件,也没有建议采取的方法。

到目前为止,我认为这是一个可能的解决方案,请提供反馈或替代路线:


  • 为每个模式设置一个“代理”从服务器(在不同的盒子上,或者具有不同MySQL实例/端口的同一盒子)
  • 将代理从服务器配置为仅复制客户机希望复制的一个数据库。
  • 将客户端的MySQL实例配置为适当的代理从服务器的从服务器。
  • 应该导致客户端仅为他们的模式拉取binlog数据。 不足之处(据我所知)是它大大增加了我们设置的复杂性,可能使它更脆弱。

    思考? 这种方法甚至会起作用吗?

    请注意,我们在RedHat上运行MySQL 5.0服务器,但如果它生成解决方案,我们可以升级到5.5。


    我已经在DBA Stack Exchange中解决了这个问题:https://dba.stackexchange.com/questions/3106/what-c​​an-we-do-in-mysql-5-0-replication-to-address-bandwidth-concerns / 3107#3107

    我不想在Stack Exchange中双倍下注。 版主,请关闭此!!!


    两点建议

    1)尝试使用--replicate-do-table选项并只指定你想要的表

    2.)尝试使用--replicate-wild-do-table = name ..你应该能够以这种方式过滤所有的表,如果你的表有一个唯一的名字

    表格复制的MySQL文档

    链接地址: http://www.djcxy.com/p/83259.html

    上一篇: What can we do in MySQL 5.0 replication to address bandwidth concerns?

    下一篇: setSize() method