当前位置:首页 > 读写分离的三种方法
RPM -- perl-DBD-MySQL-3.0007-1.fc6 mmm-1.0.tar.bz2 先安裝2个perl的包: -- -- Algorithm-Diff-1.1902.tar.gz Proc-Daemon-0.03.tar.gz perl包的安裝過程都是: perl Makefile.PL make make test make install 安裝mmm: ./install.pl
2、安装node1 node2 agent软件包(使用agent功能) mmm-1.0.tar.bz2 安裝mmm: ./install.pl
三台主机安装以上软件后进行配置过程 三:node1 node2 的agent配置过程 $cd /usr/local/mmm/etc
$cp examples/mmm_agent.conf.examples ../mmm_agent.conf node1配置文件所需要修改的地方如下
cluster_interface eth0 --配置IP所用的网卡 # Define current server id this db1 this db1 mode master
# For masters peer db2 Peer db2
# Cluster hosts addresses and access params host db1 ip 192.168.1.2 port 3306 user rep_agent password RepAgent host db2 ip 192.168.1.3 port 3306 user rep_agent password RepAgent
Node2配置文件所需要修改的地方如下 # Cluster interface
cluster_interface eth0 --配置IP所用的网卡 # Define current server id this db1
this db2 mode master
# For masters peer db2 Peer db1
# Cluster hosts addresses and access params host db1 ip 192.168.1.2 port 3306 user rep_agent password RepAgent host db2 ip 192.168.1.3 port 3306 user rep_agent password RepAgent 设置权限(node1/node2)
GRANT ALL PRIVILEGES on *.* to 'rep_monitor'@'%' identified by 'RepMonitor'; 四、修改mon主机的配置文件 所需要修改的地方如下: 文件位置:/usr/local/mmm/etc/mmm_mon.conf # Cluster interface
cluster_interface eth0 ----配置IP所用的网卡 # Cluster hosts addresses and access params host db1 ip 192.168.1.2 port 3306 user rep_monitor password RepMonitor mode master peer db2 host db2 ip 192.168.1.3 port 3306 user rep_monitor password RepMonitor mode master peer db1 数据库名 node1 ip node1 port node1 用户(供mon监控使用,该用户需要在db上添加) 对应密码 模式 slave指定 意义同上 #后续如有添加需求,请按照上面格式填写
active_master_role writer # Mysql Reader role role reader mode balanced servers db1,db2 ip 192.168.1.7, 192.168.1.8 # Mysql Writer role role writer mode exclusive servers db1,db2 ip 192.168.1.9 写规则 模式为独占 规则负载db1 db2 两台数据库公用一个ip为写,采用HA模式,默认db1使用,db1下线db2接管此ip 五:测试MMM
在db1/db2上启动agent功能
/usr/local/mmm/scripts/init.d/mmm_agent start 在mon上启动mon功能
/usr/local/mmm/scripts/init.d/mmm_mon start 并对mon进行检测
# mmm_control set_online db1 # mmm_control set_online db2 # mmm_control show 查看分配情况 正常情况下:
# mmm_control show Servers status:
db1(192.168.1.2): master/ONLINE. Roles: reader(192.168.1.7;), writer(192.168.1.9;) db2(192.168.1.3): master/ONLINE. Roles: reader(192.168.1.8;) stop 192.168.1.3 # mmm_control show Servers status:
db1(192.168.1.2): master/ONLINE. Roles: reader(192.168.1.7;), writer(192.168.1.9;) db2(192.168.1.3): master/REPLICATION_FAIL. Roles: None 检测出1.3出了故障.
等一会..进行了切换!因为读写是轮循的.这时写切到了3 # mmm_control show Servers status:
db1(192.168.1.2): master/ONLINE. Roles: reader(192.168.1.7;)
db2(192.168.1.3): master/ONLINE. Roles: reader(192.168.1.8;), writer(192.168.1.9;) Telnet 任何一个虚拟IP 3306都是通的 五、mysql_proxy与mysql MMM集成的必要性
模式为均摊 规则覆盖db1 db2(如有更多slave 继续填写,别忘了ip ) 对应ip 虚拟的IP 读规则 1、实现mysql数据库层的负载均衡 2、数据库节点实现HA动态切换 3、读写分离,降低主数据库负载 六、安装mysql proxy 1、下载proxy代码包 从svn上获取最新代码
svn co [url]http://svn.mysql.com/svnpublic/mysql-proxy/trunk[/url] mysql-proxy 2、安装
编译好的版本安装方法如下:
# tar zxf mysql-proxy-0.6.0-linux-rhas4-x86.tar.gz # cd mysql-proxy-0.6.0-linux-rhas4-x86 #可以看到有2个目录 # ls sbin share
# mv sbin/mysql-proxy /usr/local/sbin/ # ls share
mysql-proxy tutorial-constants.lua tutorial-packets.lua tutorial-rewrite.lua tutorial-warnings.lua tutorial-basic.lua tutorial-inject.lua tutorial-query-time.lua tutorial-states.lua
#将lua脚本放到/usr/local/share下,以备他用 # mv share/mysql-proxy /usr/local/share/ #删除符号连接等垃圾代码
# strip /usr/local/sbin/mysql-proxy proxy与MMM集成
连接接管 Proxy 192.168.1.5 读操作 Db1 192.168.1.7:3306 Db2 192.168.1.8:3306 写操作 Db1/db2 192.168.1.9 默认db1先用,db1当机,db2接管 mysql-proxy --proxy-read-only-backend-addresses=192.168.1.7:3306 --proxy-read-only-backend-addresses=192.168.1.8:3306 --proxy-backend-addresses=192.168.1.9:3306
--proxy-lua-script=/usr/local/share/mysql-proxy/rw-splitting.lua & 现在解释一下:
--proxy-backend-addresses=192.168.1.9:3306 指定mysql写主机的端口
--proxy-read-only-backend-addresses=192.168.1.7:3306 指定只读的mysql主机端口 --proxy-read-only-backend-addresses=192.168.1.8:3306 指定另一个只读的mysql主机端口 --proxy-lua-script=/usr/local/share/mysql-proxy/rw-splitting.lua 指定lua脚本,在这里,使用的是rw-splitting脚本,用于读写分离 完整的参数可以运行以下命令查看: mysql-proxy --help-all
运行以下命令启动/停止/重启mysql proxy:
4040
共分享92篇相关文档