mysql的负载均衡

mysql的负载均衡
一般用两种方法

1.直接在PHP的mysql类做判断,最简单,不用额外加软件 比如discuz论坛

2:用集群中间件
比如官方的mysql_proxy
还有国产的中间件  amoeba
mariadb(mysql的衍生版)的maxscale(兼容mysql)

我这里用官方的mysql_proxy
windows: http://ftp.ntu.edu.tw/pub/MySQL/Downloads/MySQL-Proxy/mysql-proxy-0.8.5-windows-x86-32bit.zip
linux: http://ftp.ntu.edu.tw/pub/MySQL/Downloads/MySQL-Proxy/mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz

解压后,该目录包含已经编译好的二进制文件
wget http://ftp.ntu.edu.tw/pub/MySQL/Downloads/MySQL-Proxy/mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz
tar zxf mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz

1:利用mysql_proxy作为中间件(就是使用数据必须经过我这一层)我用的默认端口4040
./mysql-proxy-path/bin/mysql-proxy --proxy-backend-addresses=192.168.1.72:3306 --proxy-backend-addresses=192.168.1.74:3306 --daemon

2.用mysql连接上mysql_proxy 不就是了吗 注意账号问题 (我们的mysql_proxy已经连上我们的mysql服务器了)
mysql -h 192.168.1.70 -P4040 -uroot -p

3.在连接上之后,做sql查询,却总是往某1台mysql server来发送------负载均衡没体现出来?
不是没有体现出来,而是均衡不是体现在sql语句,一会请求mysqlA服,一会请求mysqlB服.均衡是体现"连接"的均衡上。
mysql_proxy会把连接mysql服务器的tcp/IP连接缓存进连接池,以提高性能.在缓存池里, 缓存的连接大致是平均分配在每台mysql服务器上.
但具体的每一个连接,始终连某台服务器

总结:我是根据我以前的主主复制的基础做的
主主复制的文章:http://blog.csdn.net/qq_36030288/article/details/54862616
大概效果就是这样的啊
创建一张表 在表里填数据
CREATE TABLE `m` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `age` tinyint(4) DEFAULT NULL,
  PRIMARY KEY (`id`)
);
多启动几个mysql_proxy窗口进程测试 分别在不同的窗口填入数据 你会发现(如下面的图片所示)
insert into m values(null,1);

mysql的负载均衡_第1张图片

你可能感兴趣的:(mysql)