基础搭建mysql-3M架构mysql-mmm-2.2.1.tar.gz
下载地址:
http://mysql-mmm.org/downloadscpan:会在网上将提供perl模块的这些地址down到本地配置cpan使用163作为我们的Perl的模块的安装源(国内最快)就是在perl界面中一直回车,最后会提示选择安装源地区,依次选择到163的(壮哉我大163)步骤:
perl -MCPAN -e shello conf init //开始配置,第一个我们选no,然后一路回车下去,直到mirror by这部分,然后选择Asia,China,163的源o conf commit //保存配置,防止下次启动还需要配置
在命令行中:
install YAMLinstall Algorithm::Diffinstall Class::Singletoninstall DBIinstall DBD::mysql注意:在安装这个模块之前,假如是编译安装的mysql,那么需要再开一个窗口:cd /etc/ld.so.conf.d echo "/usr/local/mysql/lib">>/etc/ld.so.conf.d/qt-x86_64.conf //将编译安装的mysql的lib目录路径添加进去ldconfig //重新导入/etc/ld.so.conf.d里的配置文件,将配置文件中的动态库都加载一下install File::Tempinstall Log::Dispatchinstall Log::Log4perlinstall Mail::Sendinstall Net::ARPforce install Net::Ping//加个force,只安装,不测试(测试会ping国外的服务器)install Proc::Daemoninstall Thread::Queueinstall Time::HiRes
将mysql-mmm-2.2.1.tar.gz 解压,直接make install(别的什么都不用做)
然后去配置 /etc/mysql-mmm/mmm_common.conf上面步骤三台机器都要做
配置mmm_common.conf
vim mmm_common.conf
active_master_role writer //主的配置是写<host default>cluster_interface eth0 //在每个节点之上都要指定3M之间互相通信的网卡pid_path /var/run/mmm_agentd.pidbin_path /usr/lib/mysql-mmm/replication_user root //此处是指定账号密码,注意是主从的账号密码replication_password dongsc agent_user mmmagentagent_password mmmagent</host><host db1>//指定M1ip 172.16.60.90mode masterpeer M2 //对端名字,填写M2的主机名</host><host db2>//指定M2ip 172.16.60.33mode masterpeer M1 //M1主机名</host><host db3>//指定Slaveip 172.16.60.32mode S1</host><role writer>hosts M1, M2 //表示允许写的主机名ips 172.16.60.91//virtual IP,谁是写角色,此IP在谁上飘着,也就是连到此IP上进行写mode exclusive //该模式表示在同一时间只允许一个数据库写</role><role reader>hosts M2, S1 //表示将哪几个机器用于读ips 172.16.60.34,172.16.60.31//此处写两个,假如有个坏掉了,那么两个IP地址会飘在一起mode balanced</role>
通过虚拟IP这种方式,能够保证IP不用更改,依旧可用注意:将这个文件cp到所有服务器上,都能用(但是需要注意服务器使用哪个端口通信)
更改每个mmm_agent.conf
vim mmm_agent.conf //将里面的this 改为自己的主机名字[root@Teach-Mysql mysql-mmm]# cat mmm_agent.conf include mmm_common.confthisTeach-Mysql
前提是在每个服务器上,将三个名字的解析都要写上
[root@Teach-Mysql mysql-mmm]# cat /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6172.16.60.90 M1172.16.60.33 M2172.16.60.32 S1
然后在monitor机器上配置mmm_mon.conf
[root@S1 mysql-mmm]# cat mmm_mon.conf include mmm_common.conf<monitor>ip 127.0.0.1pid_path /var/run/mmm_mond.pidbin_path /usr/lib/mysql-mmm/status_path /var/lib/misc/mmm_mond.statusping_ips 172.16.60.90,172.16.60.33,172.16.60.32//这里写上M1,M2,Slave的真实IP</monitor><host default>monitor_user mmm_monitormonitor_password RepMonitor</host>debug 0
每个服务器都启动agent,monitor启动monitor
启动方法:每一个服务器启动agent
/etc/init.d/mysql-mmm-agent start
monitor服务器启动monitor
/etc/init.d/mysql-mmm-monitor start
假如启动报错,提示少pm文件,那么看前面的名字,就是前面的模块少装了那么当配置完成之后,所有的数据库需要自己启动起来
状态
mysql-mmm有6种状态
1.online2.admin_offline3.hard_offline4.awaiting_recovery5.replication_delay6.replication_fail各种状态的转换如下:1.online状态是正常的状态,可以充当各种角色.2.admin_offline是手动下线的状态3.复制延迟会导致replication_delay状态4.复制中断(sql_thread,io_thread)会导致replication_fail状态5.从replication_delay或者replication_fail状态可以直接恢复到online状态,除非主机被设置为抖动.6.ping不通并且(或者)mysql连接中断,会导致hard_offline状态.7.如果能ping通,并且mysql连接状态正常,则会变成为awaiting_recovery状态.8.两种情况可以从awaiting_recovery状态转变为online状态:a.故障时间少于60秒并且没有重启过.b.设置了auto_set_online >0(抖动状态除外)
此处注意时间需要同步,同步时间命令:
ntpdate time.windows.com
需要注意的地方:
1.M1,M2的配置文件中,必须设置
log_slave_updates=1read_only=onauto_increment_increment=2M1:auto_increment_offset=1M2:auto_increment_offset=2//自增长字段的起始值
2.所有的配置文件中必须设置:
read_only=on
3.一定要注意时间问题:
ntpdate time.windows.com
4.假如没有手动配置auto_set_online
当mmm_mon.conf文件的auto_set_online 10参数设置小于60时,db1和db2,mysql服务停止启动切换时,不会出现AWAITING_RECOVERY状态,只要mysql服务启动即会自动切换到online状态,但是当配置参数等于或者大于60时,即会出现AWAITING_RECOVERY,所以需要手动启动,
mmm_control set_online db1
即可修改db1为在线online状态5.注意在mmm_commom.conf 文件中,replication_user确定是主从复制的用户
6.确定新建的用户在每个服务器中都能够用主机名来连接成功
7.在执行/
etc/init.d/mysql-mmm-agent stop
的时候,可能不会讲进程完全杀死,那样再重启进程的时候,log会出现Can"t create socket!,此时应当kill 干净
- 在做所有的主从时,change master to 全部使用IP地址,不能使用主机名
- 在编辑mmm_common.conf文件时,确认双主互相对应
本文永久更新链接地址