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的负载均衡
最新推荐文章于 2024-07-08 23:44:29 发布