mysql 负载均衡完美解决方案V1.0 1 .环境: mysql 5 ubuntu10.04 x86_64 mdb1 eth0 192.168.5.11 mdb2 eth0 192.168.5.12 sdb1 eth0 192.168.5.21 sdb2 eth0 192.168.5.22 sdb3 eth0 192.168.5.23 sdb4 eth0 192.168.5.24 haproxy eth0 192.168.5.10 (mdb vip write) eth1 192.168.5.20 (sdb vip read) 说明:mdb vip 用于DB 的写,sdb vip 用于DB 读,实现读写分离和负载均衡,带故障检测自动切换 2 .架构图 web1 web2 web3 | | | —————————- | haproxy(lb db write/read) | ———————————- | | mdb1 mdb2 | | ————– —————- | | | | sdb1 sdb2 sdb3 sdb4 说明: 1)mdb1 和mdb1 配置成主-主模式,相互同步,通过haproxy 提供一个 lb 的写ip 2)sdb1 和sdb2 配置为 mdb1 的从,sdb3 和sdb4 配置为 mdb2 的从 3)sdb1,sdb2,sdb3,sdb4 这 4 台从库,通过haproxy 提供一个 lb 的读ip 4) 当 mdb2 停止复制,mdb1 为主库,haproxy 停止发送请求到 mdb2 和sdb3,sdb4 5) 当 mdb1 停止复制,mdb2 为主库,haproxy 停止发送请求到 mdb1 和sdb1,sdb2 6) 当 mdb1 和mdb2 同时停止复制,这时 2 台主库变成readonly 模式,数据库不能写入 7)当 mdb2 offline 时,mdb1 进入 backup mode,停止发送请求到 mdb2,sdb3,sdb4 8)当 mdb1 offline 时,mdb2 进入 backup mode,停止发送请求到 mdb1,sdb1,sdb2 9) 当 mdb1 mdb2 同时 offline,整个 DB 停止工作 3.安装my s ql-s erv er 登录mdb1,mdb2,sdb1,sdb2,sdb3,sdb4,输入以下命令进行安装: apt-get install mysql-server -y 安装时会提示输入mysql root 用户密码,输入gaojinbo.com 修改mysql 配置,监听所有接口 vi /etc/mysql/my.cnf 修改为: bind-address = 0.0.0.0 重启mysql /etc/init.d/mysql restart 4.配置mdb1,mdb2 主-主同步 1)mdb1: vi /etc/mysql/my.cnf server-id = 1 log_bin = mysql-bin log-slave-updates #很重要,从前一台机器上同步过来的数据才能同步到下一台机器 expire_logs_days = 10 max_binlog_size = 100M auto_increment_offset = 1 auto_increment_increment = 2 2)mdb2: vi /etc/mysql/my.cnf server-id = 2 log_bin = mysql-bin log-s...