1.主从复制
实现读写分离的基础是先行搭建MySQL主从复制关系,这里注意MySQL5.1~5.5的复制功能是异步的。主从复制的具体过程不再做描述,具体在实践过程中出现最多的问题就是:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
这两项必须都为
yes,如果
Slave_IO_Running为
no,解决的方法市县区看mysqld.log这个日志文件,检查问题出在网络还是二进制文件,如果网络没问题,则重置master之后重新授权,之后刷新权限(尤其注意
Master_Log_File: mysql-bin.000022这个属性之必须和主库中一致
)。
图1.主库
图2.从库
2.读写分离
mysql读写分离的意义就在于利用它可以主从复制的性质,在操作数据库的时候,从库只负责读数据,主库负责写入,更新数据,这样的分离操作在读写不平衡的场景下意义重大。在高并发访问量极大的情况下,如果大多数操作都是查询操作,那么服务器的压力就在只负责查询的
slaves上,而具体的调度规则可以按照实际情况分配。
Amoeba代理的好用之处在于配置简单而且提供了负载均衡的策略。Amoeba与数据库交互的过程如下:
Amoeba for Mysql中快速配置库:
amoeba.xml
dbServers.xml
基本配置都在以上两个文件中,配置方法也根据官网文件都很详细。
Amoeba在
Master/Slave 结构之下的读 写分离 :
最后测试阶段在java代码中只需要和以前一样加入mysql的驱动包,把端口改成8066或者自己设置的代理端口即可。