mysql+amoeba+mysqlmmm高可用群集
2018-08-15 14:39
786 查看
一、MySQL-MMM(Master-Master replication manager fo MySQL)
MMM概述
双主故障切换和日常管理的程序由多个mysql主服务器和多个mysql从服务器组成
MMM使用Perl语言开发,主要用来监控和管理MySQL Master-Master(双主)复制
其内部附加的工具脚本也可以实现多个slave的read负载均衡。
注:
同一时刻只允许一个主进行写入,额外主提供部分读的服务
不适用于要求数据一致性很高的场合(可替换产品为:Heartbeat+DRBD+MySQL高可用方案)
MMM组成
mmm_mond:监控进程,负责所有的监控、决定和处理所有节点mmm_agentd:运行在每个MySQL数据库的代理进程,完成监控本地状态并于监控端通信
mmm_control:一个脚本,提供mmm_mond进程的命令
二、案例
实验环境:六台Centos6,两台主mysql(master01、master02),两台从mysql(slave01、slave02),一台监控(mmm_mond),一台读写调度器(amoeba)
先部署主主(master01与master02)复制
Master011.准备工作
vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=static IPADDR=192.168.1.10 NETMASK=255.255.255.0
vim /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=dhcp
vim /etc/hosts 192.168.1.10 db1 192.168.1.20 db2 192.168.1.30 db3 192.168.1.40 db4
vim /etc/sysconfig/network HOSTNAME=db1
reboot
2.YUM源配置并安装MMM
rm -rf /etc/yum.repos.d/*
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo[/code]yum -y install epel-releaseyum -y install mysql-mmm* mysql mysql-server mysql-devel3.MySQL配置
/etc/init.d/mysqld start && chkconfig --level 35 mysqld onmysqladmin -uroot password "123"cp /usr/share/doc/mysql-server-5.1.73/my-medium.cnf /etc/my.cnfvim /etc/my.cnf [mysqld] 50 log-slave-updates/etc/init.d/mysqld restart4.授权并主主同步
mysql -u root -p mysql> grant replication slave on *.* to 'slave'@'192.168.1.%' identified by '123'; mysql> show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 647 | | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec) mysql> change master to master_host='192.168.1.20',master_user='slave',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=481; //所跟IP、log、pos等信息都为第二台主的信息 mysql> start slave; mysql> show slave status\G; //查看同步状态,I/0和SQL线程状态为yes则正确
Master021.准备工作
vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=static IPADDR=192.168.1.20 NETMASK=255.255.255.0vim /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=dhcpvim /etc/hosts 192.168.1.10 db1 192.168.1.20 db2 192.168.1.30 db3 192.168.1.40 db4vim /etc/sysconfig/network HOSTNAME=db2reboot2.YUM源配置并安装MMM
rm -rf /etc/yum.repos.d/*wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo[/code]yum -y install epel-releaseyum -y install mysql-mmm* mysql mysql-server mysql-devel3.MySQL配置
/etc/init.d/mysqld start && chkconfig --level 35 mysqld onmysqladmin -uroot password "123"cp /usr/share/doc/mysql-server-5.1.73/my-medium.cnf /etc/my.cnfvim /etc/my.cnf [mysqld] 50 log-slave-updates
58 server-id = 2/etc/init.d/mysqld restart4.授权并主主同步
mysql -u root -p mysql> grant replication slave on *.* to 'slave'@'192.168.1.%' identified by '123'; mysql> show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 481 | | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec) mysql> change master to master_host='192.168.1.10',master_user='slave',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=647; //所跟IP、log、pos等信息都为第一台主的信息 mysql> start slave; mysql> show slave status\G;再部署两对主从复制(m1与s1,m2与s2)
Slave011.准备工作
vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=static IPADDR=192.168.1.30 NETMASK=255.255.255.0vim /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=dhcpvim /etc/hosts 192.168.1.10 db1 192.168.1.20 db2 192.168.1.30 db3 192.168.1.40 db4vim /etc/sysconfig/network HOSTNAME=db3reboot2.YUM源配置并安装MMM
rm -rf /etc/yum.repos.d/*wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo[/code]yum -y install epel-releaseyum -y install mysql-mmm* mysql mysql-server mysql-devel3.MySQL配置
/etc/init.d/mysqld start && chkconfig --level 35 mysqld onmysqladmin -uroot password "123"cp /usr/share/doc/mysql-server-5.1.73/my-medium.cnf /etc/my.cnfvim /etc/my.cnf [mysqld] 50 relay-log=relay-log-bin 51 relay-log-index=slave-relay-bin.index 59 server-id = 3/etc/init.d/mysqld restart4.授权并主从同步(m1,s1)
mysql -u root -p mysql> change master to master_host='192.168.1.10',master_user='slave',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=647; //所跟IP、log、pos等信息都为第一台主的信息 mysql> start slave; mysql> show slave status\G;
Slave021.准备工作
vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=static IPADDR=192.168.1.40 NETMASK=255.255.255.0vim /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=dhcpvim /etc/hosts 192.168.1.10 db1 192.168.1.20 db2 192.168.1.30 db3 192.168.1.40 db42.YUM源配置并安装MMM
rm -rf /etc/yum.repos.d/*wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo[/code]yum -y install epel-releaseyum -y install mysql-mmm* mysql mysql-server mysql-devel3.MySQL配置
/etc/init.d/mysqld start && chkconfig --level 35 mysqld onmysqladmin -uroot password "123"cp /usr/share/doc/mysql-server-5.1.73/my-medium.cnf /etc/my.cnfvim /etc/my.cnf [mysqld] 50 relay-log=relay-log-bin 51 relay-log-index=slave-relay-bin.index 59 server-id = 4/etc/init.d/mysqld restart4.授权并主从同步(m2,s2)
mysql -u root -p mysql> change master to master_host='192.168.1.20',master_user='slave',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=647; //所跟IP、log、pos等信息都为第二台主的信息 mysql> start slave; mysql> show slave status\G;配置高可用MySQL-MMM
Master011.新建授权用户
mysql> grant super,replication client,process on *.* to 'mmm_agent'@'192.168.1.%' identified by '123';//主服务器授权,从服务器自动同步 mysql> grant replication client on *.* to 'mmm_monitor'@'192.168.1.%' identified by '123'; //主服务器授权,从服务器自动同步 mysql> grant all on *.* to 'test'@'192.168.1.%' identified by '123'; //新建测试用户2.配置MMM_COMMON
vim /etc/mysql-mmm/mmm_common.conf active_master_role writer <host default> cluster_interface eth0 //集群IP承载的接口 pid_path /var/run/mysql-mmm/mmm_agentd.pid //PID文件位置(存放MMM的进程号) bin_path /usr/libexec/mysql-mmm/ //运行命令位置 replication_user slave //需使用主从同步时授权用户 replication_password 123 agent_user mmm_agent //代理连接 agent_password 123 </host> <host db1> ip 192.168.1.10 mode master peer db2 //当db1主机不能使用,自动切换到db2 </host> <host db2> ip 192.168.1.20 mode master //当前服务器作为主服务器(写) peer db1 //当db2主机不能使用,自动切换到db1 </host> <host db3> ip 192.168.1.30 mode slave </host> <host db4> ip 192.168.1.40 mode slave //当前主机作为从服务器(读) </host> <role writer> hosts db1, db2 ips 192.168.1.250 //写服务器VIP mode exclusive //只有一个host可以writer </role> <role reader> hosts db3, db4 ips 192.168.1.251, 192.168.1.252 //读服务器VIP mode balanced //多个host可以reader </role>3.配置MMM_AGENT
vim /etc/mysql-mmm/mmm_agent.conf include mmm_common.conf this db14.拷贝文件给其余主机
scp /etc/mysql-mmm/mmm_common.conf root@192.168.1.20:/etc/mysql-mmm/ scp /etc/mysql-mmm/mmm_common.conf root@192.168.1.30:/etc/mysql-mmm/ scp /etc/mysql-mmm/mmm_common.conf root@192.168.1.40:/etc/mysql-mmm//etc/init.d/mysql-mmm-agent restart && chkconfig --level 35 mysql-mmm-agent on
Master02配置MMM_AGENT
vim /etc/mysql-mmm/mmm_agent.conf this db2/etc/init.d/mysql-mmm-agent restart && chkconfig --level 35 mysql-mmm-agent on
Slave01配置MMM_AGENT
vim /etc/mysql-mmm/mmm_agent.conf this db3/etc/init.d/mysql-mmm-agent restart && chkconfig --level 35 mysql-mmm-agent on
Slave02配置MMM_AGENT
vim /etc/mysql-mmm/mmm_agent.conf this db4/etc/init.d/mysql-mmm-agent restart && chkconfig --level 35 mysql-mmm-agent on监控配置(mmm_mon)
1.准备工作
vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=static IPADDR=192.168.1.50 NETMASK=255.255.255.0vim /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=dhcpvim /etc/hosts 192.168.1.10 db1 192.168.1.20 db2 192.168.1.30 db3 192.168.1.40 db4reboot2.YUM源配置并安装MMM
rm -rf /etc/yum.repos.d/*wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo[/code]yum -y install epel-releaseyum -y install mysql-mmm* mysql3.配置MMM_COMMON
scp 192.168.1.10:/etc/mysql-mmm/mmm_common.conf /etc/mysql-mmm/4.配置MMM_MON
vim /etc/mysql-mmm/mmm_mon.conf include mmm_common.conf <monitor> ip 127.0.0.1 ping_ips 192.168.1.10,192.168.1.20,192.168.1.30,192.168.1.40 </monitor> <host default> monitor_user mmm_monitor monitor_password 123 </host> debug 05.启动服务并验证
/etc/init.d/mysql-mmm-monitor restart && chkconfig --level 35 mysql-mmm-monitor on //监控端启动mmm_control show //查看节点状态mysql -u test -p -h 192.168.1.250
报错解决方案:[root@localhost ~]# mysql -u test -p -h 192.168.1.250 Enter password: ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.1.254' (113)
主服务器:grant super,replication client,process on *.* to 'mmm_agent'@'db1' identified by '123'; grant super,replication client,process on *.* to 'mmm_agent'@'db2' identified by '123'; grant super,replication client,process on *.* to 'mmm_agent'@'db3' identified by '123'; grant super,replication client,process on *.* to 'mmm_agent'@'db4' identified by '123';
日志查看:tail -f /var/log/mysql-mmm/mmm_agentd.log //MySQL端的Agent日志tail -f /var/log/mysql-mmm/mmm_mond.log //监控机端的Monitor日志部署读写调度器Amoeba
1.环境准备
vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=static IPADDR=192.168.1.254 NETMASK=255.255.255.02.安装jdk与amoeba
yum -y erase java-*chmod +x jdk-6u14-linux-x64.bin./jdk-6u14-linux-x64.binmv jdk1.6.0_14/ /usr/local/jdk1.6vim /etc/profile export JAVA_HOME=/usr/local/jdk1.6 export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin/:$PATH:$HOME/bin export AMOEBA_HOME=/usr/local/amoeba export PATH=$PATH:$AMOEBA_HOME/binsource /etc/profile && java -versionmkdir /usr/local/amoebatar zxvf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/chmod -R 755 /usr/local/amoeba/3.在主Mysql数据库新建授权用户
mysql -u root -p mysql> grant all on *.* to haha@'192.168.1.%' identified by '123';4.编辑amoeba配置文件
vim /usr/local/amoeba/conf/amoeba.xml 30 <property name="user">hehe</property> //设置连接Amoeba用户 31 32 <property name="password">123</property> //设置连接Amoeba用户 115 <property name="defaultPool">slaves</property> 116 117 <property name="writePool">master</property> 注意删除<!-- -->的注释 118 <property name="readPool">slaves</property> //定义读服务器池vim /usr/local/amoeba/conf/dbServers.xml 25 <!-- mysql user --> 26 <property name="user">haha</property> //设置连接Mysql的用户 27 28 <property name="password">123</property> //设置连接mysql的密码 注意删除<!-- -->的注释 43 <dbServer name="master" parent="abstractServer"> 44 <factoryConfig> 45 <!-- mysql ip --> 46 <property name="ipAddress">192.168.1.254</property> //定义写服务器IP 47 </factoryConfig> 48 </dbServer> 49 <dbServer name="slave1" parent="abstractServer"> 50 <factoryConfig> 51 <!-- mysql ip --> 52 <property name="ipAddress">192.168.1.30</property> //定义读服务器IP 53 </factoryConfig> 54 </dbServer> 55 <dbServer name="slave2" parent="abstractServer"> 56 <factoryConfig> 57 <!-- mysql ip --> 58 <property name="ipAddress">192.168.1.40</property> //定义读服务器IP 59 </factoryConfig> 60 61 </dbServer> 62 <dbServer name="slaves" virtual="true"> 68 <property name="poolNames">slave1,slave2</property> //定义输入slaves读服务器池的主机 69 </poolConfig>amoeba start &netstat -utpln | grep 80665.连接测试
client:mysql -u hehe -p -h 192.168.1.254 -P 8066
相关文章推荐
- mysql-mmm+amoeba+keepalived实现mysql高可用和读写分离
- 部署MySQL-MMM高可用群集
- MySQL-MMM高可用群集(本篇使用MariaDB代替MySQL进行实验部署)
- mysql 群集架构mmm高可用群集及服务器上线
- mysql-MMM高可用群集的在centos7上的搭建
- 基于amoeba+keepalived+mmm实现mysql读写分离高可用架构 推荐
- keepalived+amoeba+mysql-mmm+mysql实现mysql读写分离及高可用 推荐
- MySQL-MMM高可用群集
- CentOS 7上部署Amoeba实现MySQL主从同步,读写分离,负载均衡高可用群集
- mysql-mmm+amoeba+keepalived实现mysql高可用和读写分离
- MySQL高可用群集------配置MMM高可用架构
- Centos7 下 mysql5.7-mmm 高可用群集
- mysql-mmm+amoeba+keepalived实现mysql高可用和读写分离(一)
- mysql-mmm+amoeba+keepalived实现mysql高可用和读写分离(二)
- 搭建 mysql-mmm 高可用群集
- CentOS 7上部署MySQL-MMM高可用群集
- MySQL高可用群集--MMM高可用架构
- mysql-mmm配合amoeba实现高可用、读写分离及负载均衡
- Amoeba整合MMM实现高可用负载均衡,读写分离,主从复制的MySQL
- mysql-mmm+amoeba+keepalived实现mysql高可用和读写分离