内容纲要

工作拓扑:

 

MySQL Proxy 有一项强大功能是实现 “读写分离”,基本原理是让主数据库处理写方面事务,让从库处理 SELECT 查询。

Amoeba for MySQL 是一款优秀的中间件软件,同样可以实现读写分离,负载均衡等功能,并且稳定性也高于 MySQL Proxy,有兴趣的可以测试一下。

环境描述:

  • 操作系统:CentOS6.3_x64
  • 主服务器 Master:192.168.0.202
  • 从服务器 Slave:192.168.0.203
  • 调度服务器 MySQL-Proxy:192.168.0.204

一、mysql 主从复制

这里就省略了,请参考 http://blog.jobbole.com/94595/

二、mysql-proxy 实现读写分离

1、安装 mysql-proxy

实现读写分离是有 lua 脚本实现的,现在 mysql-proxy 里面已经集成,无需再安装

下载:http://dev.mysql.com/downloads/mysql-proxy/

1>. 在主服务器创建 proxy 用户用于 mysql-proxy 使用,从服务器也会同步这个操作

[code]
mysql> grant all on *.* to ‘proxy’@’192.168.0.204’ identified by ‘123.com’;

[/code]

2>. 使用客户端连接 mysql-proxy

[code]
mysql -u proxy -h 192.168.0.204 -P 4000 -p123.com
[/code]

创建数据库和表,这时的数据只写入主 mysql,然后再同步从 slave,可以先把 slave 的关了,看能不能写入,这里我就不测试了,下面测试下读的数据!

[code]
mysql> create table user (number INT(10),name VARCHAR(255));
mysql> insert into test values(01,’zhangsan’);
mysql> insert into user values(02,’lisi’);
[/code]

3>. 登陆主从 mysq 查看新写入的数据如下,

[code]
mysql> use test;
Database changed
mysql> select * from user;
+——–+———-+
| number | name |
+——–+———-+
| 1 | zhangsan |
| 2 | lisi |
+——–+———-+
[/code]

4>. 再登陆到 mysql-proxy,查询数据,看出能正常查询

[code]
mysql -u proxy -h 192.168.0.204 -P 4000 -p123.com
mysql> use test;
mysql> select * from user;
+——–+———-+
| number | name |
+——–+———-+
| 1 | zhangsan |
| 2 | lisi |
+——–+———-+
[/code]

5>. 登陆从服务器关闭 mysql 同步进程,这时再登陆 mysql-proxy 肯定会查询不出数据

[code]
slave stop;
[/code]

6>. 登陆 mysql-proxy 查询数据,下面看来,能看到表,查询不出数据

[code]
mysql> use test;
Database changed
mysql> show tables;
+—————-+
| Tables_in_test |
+—————-+
| user |
+—————-+
mysql> select * from user;
ERROR 1146 (42S02): Table ‘test.user’ doesn’t exist
[/code]

配置成功!真正实现了读写分离的效果!

发表评论

电子邮件地址不会被公开。 必填项已用*标注