一个简单完整的 Mysql 主从复制,读写分离的示意图。
1. 首先搭建 Mysql 主从架构,实现 将 mater 数据自动复制到 slave
MySQL 复制的工作方式很简单,一台服务器作为主机,一台或多台服务器作为从机。主机会把数据库的变化记录到日志。一旦这些变化被记录到日志,就会立刻(或者以设定的时间间隔)被送到从机。
使用MySQL 复制提供扩展大型网站的能力,这些大型网站的数据库主要是读操作(SELECTs)。从机用於复制主机的銷秏是很少的(通常每个从机1%的开销),在大型网站中每个主机部署30 个从机也是常见的。
异步复制与同步复制
异步复制:MySQL本身支持单向的、异步的复制。异步复制意味着在把数据从一台机器拷贝到另一台机器时有一个延时 – 最重要的是这意味着当应用系统的事务提交已经确认时数据并不能在同一时刻拷贝/应用到从机。通常这个延时是由网络带宽、资源可用性和系统负载决定的。然而,使用正确的组件并且调优,复制能做到接近瞬时完成。
同步复制:同步复制可以定义为数据在同一时刻被提交到一台或多台机器,通常这是通过众所周知的“两阶段提交”做到的。虽然这确实给你在多系统中保持一致性,但也由于增加了额外的消息交换而造成性能下降。
使用MyISAM或者InnoDB存储引擎的MySQL本身并不支持同步复制,然而有些技术,例如分布式复制块设备(简称DRBD),可以在下层的文件系统提供同步复制,允许第二个MySQL服务器在主服务器丢失的情况下接管(使用第二服务器的复本)。要了解更多信息,请参见:http://www.drbd.org/
简单的读写分离实现
读写分离可以直接在 客户端 实现, 也可以通过 代理服务器 实现。
代理服务器一般可以选择:
官方的:mysql proxy 地址:http://dev.mysql.com/downloads/mysql-proxy/#downloads
国产开源项目:amoeba
Amoeba开源项目地址: http://www.sourceforge.net/projects/amoeba
amoeba
中文文档下载地址:http://amoeba.meidusa.com/amoeba.pdf
mysql proxy:http://www.infoq.com/cn/news/2007/10/mysqlproxyrwsplitting
http://heylinux.com/archives/1004.html