我正在考虑设置mysql数据库的复制,以便在每个分支机构都有本地从站,同时让主办公室的主服务器能够提高分支机构的应用程序性能。
数据库本身不是那么大(<1GB),但我想知道; 考虑200-300logging更新/分钟顶端:复制速度有多快? (假设,首先是一个5mb的通用dsl连接,如果需要的话可以更快一些 – 尽量降低成本,但是钱多了)
整个表是分批复制吗? 复制是否按需完成,因为表中的每个logging都已更新(来自文档,我认为我看到它是可configuration的)?
笔记:
MySQL复制尽可能接近实时,受磁盘和networkingI / O的限制。 奴隶打开一个sockets的主人,这是保持开放。 当主设备上发生事务时,它将被logging在二进制日志中,并且仅在从设备上重播。 如果主从站之间的套接字中断,则在下一次成功连接时为从站重播二进制日志。
多主复制执行相同的事情,但在两个方向。
一些基本的计算将帮助您更好地确定您的带宽需求。
Average transaction size * number of slaves * updates/minute = bandwidth needed
希望这可以帮助。
从站侧的复制由两个独立的线程处理。
复制等待时间受到IO的限制,首先是从属数据库上的IO应用来自中继日志(可能涉及复杂的SQL查询)的事务,其次是由主设备上的IO读取它的二进制日志,并将其传输给每个从设备。
MySQL复制增加了读取查询容量,但不会增加查询写入性能,这是以速度进行门控IO可以刷新到主站和从站上的二进制日志
MySQL中的复制非常快速地将数据发送到从站(比在主站上运行UPDATE更快,并且切换到另一个窗口以在从站上运行SELECT , 如果 (并且只在)networking连接全部结束,一切运行正常。任何DSL级别的连接都应该适用于常规小型查询的一般情况,但是大型插入/更新查询可能需要一些时间来复制和重新同步复制填充(而不幸的是,MySQL是非常容易发生这种情况的)会花费一些时间(重新从主文件夹复制你的整个数据库)有一些技巧来限制主同步的影响,比如把你的MySQL放在LVM上,这样你就可以做一个非常快速的锁/快照和rsync的快照内容到奴隶,但最终重新同步将吸。