基于Mysql-Proxy实现Mysql的主从复制以及读写分离(上)

基于Mysql-Proxy实现Mysql的主从复制以及读写分离(上)mysql

  上周BOSS给分配任务让实现一下Mysql数据库的主从复制以及读写分离,而后花了一盏茶的功夫进行了调研,发现主从复制数据库进行一番配置直接能够实现,而读写分离则须要一些软件的支持,基本上读写分离的实现有两种:sql

  • Amoeba(变形虫):是由前阿里员工实现的一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy。可是因为没人维护了,并且听说做者也再也不回答开发者的问题,因此不予考虑。
  • Mysql-Proxy:是一个处于你的client端和MySQL server端之间的简单程序,它能够监测、分析或改变它们的通讯。它使用灵活,没有限制,常见的用途包括:负载平衡,故障、查询分析,查询过滤和修改等等。简单的说,MySQL Proxy就是一个链接池,负责将前台应用的链接请求转发给后台的数据库,而且经过使用lua脚本,能够实现复杂的链接控制和过滤,从而实现读写分离负载平衡。而且还有各类资料以及维护,虽然须要了解一些lua语言的东西,可是语言么,上手仍是很简单的。

  在基于稳定性、后期遇到问题解决难易性、与现有平台整合的难易性、实现的难易性以及种种状况考虑以后,最终决定使用mysql-proxy来实现数据库的读写分离。啰嗦那么多,接下来开始说说具体的实现方法。数据库

环境与配置vim

  系统:CentOS6.5服务器

  Master:172.16.19.2架构

  Slave:172.16.19.24ide

  mysql-proxy:172.16.19.14测试

  安装就不说了,基本都是yum install进行安装的。下图是基本的架构图(忘了从哪里扒拉出来的了,感谢做者)。
lua

主从复制的实现spa

  主从复制的实现极其简单,只须要改一下vim /etc/my.cnf。

  Master的配置:

vim /etc/my.cnf
log-bin=mysql-bin   #新增
server-id=1              #新增

  配置完以后,重启mysql,而后执行以下指令:

master:mysql> grant replication slave on *.* to 'root'@'%' identified by '123456';而后执行show master status
Mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000005 | 261 | | |
+------------------+----------+--------------+------------------+

  用脑壳或者纸笔记录一下File以及Positin,在这里是mysql-bin.000005以及261。

  Slave的配置:

1 vim /etc/my.cnf
2 log-bin=mysql-bin   #新增
3 server-id=2             #新增  server-id不能同样

  一样的,配置完成以后须要重启mysql服务,而后执行以下指令:

mysql> change master to master_host='172.16.19.2',master_user='root',master_password='123456',master_log_file='mysql-bin.000005',master_log_pos=261;
mysql> start slave;

  接下来,查看slave的状态,查看是否配置成功:

 1 show slave status\G
 2 ==============================================
 3 **************** 1. row *******************
 4 Slave_IO_State:
 5 Master_Host: 172.16.19.2
 6 Master_User: rep1
 7 Master_Port: 3306
 8 Connect_Retry: 60
 9 Master_Log_File: mysql-bin.000005
10 Read_Master_Log_Pos: 261
11 Relay_Log_File: localhost-relay-bin.000008
12 Relay_Log_Pos: 561
13 Relay_Master_Log_File: mysql-bin.000005
14 Slave_IO_Running: YES
15 Slave_SQL_Running: YES
16 Replicate_Do_DB:
17 ……………省略若干……………
18 Master_Server_Id: 1
19 1 row in set (0.01 sec)
20 ==============================================

  其中Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,才代表状态正常。

主从复制的测试

  先查看主服务器Master:

  

  而后建立一个数据库,y:

  接着去从服务器slave查看,会发现从服务器也有了y数据库。至此数据库的主从复制就实现了。有点晚了,至于说读写分离就下次再说吧。

 

PS:本博客欢迎转发,但请注明博客地址及做者,因本人水平有限,如有不对之处,欢迎指出,谢谢~

  博客地址:http://www.cnblogs.com/voidy/

  博客新址:http://voidy.net

  <。)#)))≦

相关文章
相关标签/搜索