Mysql---MMM高可用集群架构
目录
MMM安装部署
环境配置:(所有主机配置)
1、主机信息
2、关闭防火墙
3、同步时区
4、配置主机解析文件
5、配置ssh免密登录
6、所有机器安装epel源
数据库配置:
【所有数据库均做的配置】
1、安装四台数据库并修改密码
2、修改数据库配置文件/etc/my.cnf
3、启动服务
【主库1和备用主库2配置】
设置主库1和备用主库互为主从
1.查看日志文件
2.互相授权从用户
3.都关闭从
4.都设置为主库
5.创建库互相验证
【从库1和从库2配置】
从库1和从库2都设为主库1的从库
1.都关闭从stop slave;
2.都设置成主1的从库
3.开启从start slave;
4.查看状态show slave status\G
5.创建库互相验证
【高可用配置】
所有数据库配置:【huyang1/2/3/4】
1.在所有数据库授权使monitor可以访问
2.所有主机安装
3. 所有主机修改配置文件
4.所有服务器修改角色和配置文件里对应上
5.所有数据库启动mysql agent代理服务
【监视器配置】
1.修改监控主机配置文件
2.监视器启动监控
3.查看状态
4.查看监控状态
5.手动切换状态
【结果测试】
【停止主库的mariadb服务】
1.查看其他库变化
2.在备用主库2上新建库
【重启主库1】
1.查看其他库变化
【停止备用主库2的服务】
结果总结:
MMM安装部署
环境配置:(所有主机配置)
1、主机信息
作 用 | Ip地址 | 主机名 |
主库1 | 192.168.59.137 | huyang1 |
备用主库2 | 192.168.59.138 | huyang2 |
从库1 | 192.168.59.140 | huyang3 |
从库2 | 192.168.59.142 | huyang4 |
监视器 | 192.168.59.144 | huyang5 |
2、关闭防火墙
systemctl stop firewalld
iptables -F
setenforce 0
3、同步时区
【huyang1/2/3/4/5/】yum -y install ntp
【huyang1】systemctl start ntpd
【huyang1/2/3/4/5/】ntpdate huyang1
4、配置主机解析文件
【huyang1】vim /etc/hosts
输入信息:192.168.59.137 huyang1
192.168.59.138 huyang2
192.168.59.140 huyang3
192.168.59.142 huyang4
192.168.59.144 huyang5
【huyang1】scp /etc/hosts huyang1/2/3/4/5:/etc/hosts
5、配置ssh免密登录
【huyang1/2/3/4/5】
ssh-keygen -t rsa
ssh-copy-id -i .ssh/id_rsa.pub root@huyang5
【huyang5】cat /root/.ssh/authorized_keys
scp .ssh/authorized_keys root@huyang1:.ssh/
scp .ssh/authorized_keys root@huyang2:.ssh/
scp .ssh/authorized_keys root@huyang3:.ssh/
scp .ssh/authorized_keys root@huyang4:.ssh/
【huyang1】生成密钥对传给其他数据库,连接测试
ssh huyang1
ssh huyang2
ssh huyang3
ssh huyang4
ssh huyang5
因为第一次连接的时候需要输入yes
影响后期故障切换时,对于每个主机的SSH控制
6、所有机器安装epel源
yum -y install epel-release
数据库配置:
【所有数据库均做的配置】
1、安装四台数据库并修改密码
yum -y install mariadb mariadb-server mariadb-devel
systemctl start mariadb
mysqladmin -u root password 123456
2、修改数据库配置文件/etc/my.cnf
vim /etc/my.cnf
主库1:
server-id=1
log-bin=mysql-bin
log-slave-updates=true
relay-log=relay-log-bin
relay-log-index=relay-log-bin.index
备用主库2:
server-id=2
log-bin=mysql-bin
log-slave-updates=true
relay-log=relay-log-bin
relay-log-index=relay-log-bin.index
从库1:
server-id=3
relay-log=relay-log-bin
relay-log-index=relay-log-bin.index
从库2:
server-id=4
relay-log=relay-log-bin
relay-log-index=relay-log-bin.index
3、启动服务
重启服务:systemctl restart mariadb
登录:mysqlmysql -uroot -p123456
【主库1和备用主库2配置】
设置主库1和备用主库互为主从
1.查看日志文件
show master status
2.互相授权从用户
【huyang1】grant replication slave on *.* to
'replication'@'192.168.59.%' identified by '123456';
flush privileges;
【huyang2】grant replication slave on *.* to
'replication'@'192.168.59.%' identified by '123456';
flush privileges;
3.都关闭从
stop slave;
4.都设置为主库
【huyang1】change master to
master_host='192.168.59.138',master_user='replication',master_password='123456',master_log_file='master-bin.000003',master_log_pos=245;
【huyang2】change master to
master_host='192.168.59.137',master_user='replication',master_password='123456',master_log_file='master-bin.000001',master_log_pos=345;
开启从start slave;
查看状态show slave status\G
5.创建库互相验证
create database huyang1;
show databases;
【从库1和从库2配置】
从库1和从库2都设为主库1的从库
1.都关闭从stop slave;
2.都设置成主1的从库
change master to
master_host='192.168.59.137',master_user='replication',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=245;
3.开启从start slave;
4.查看状态show slave status\G
5.创建库互相验证
create database HUYANG1;
show databases;
【高可用配置】
所有数据库配置:【huyang1/2/3/4】
1.在所有数据库授权使monitor可以访问
grant super, replication client, process on *.* to 'mmm_agent'@'192.168.59.%' identified by '123456';
super:超级权限
replication client:客户端复制管理权限
process on:进程管理
2.所有主机安装
yum -y install mysql-mmm*
3. 所有主机修改配置文件
vim /etc/mysql-mmm/mmm_common.conf
cluster_interface ens33 网卡
replication_user replication 复制用户
replication_password 123456 复制用户的密码
agent_user mmm_agent 管理用户
agent_password 123456 管理用户的密码
</host>设置的管理用户
详细配置如下图:
4.所有服务器修改角色和配置文件里对应上
vim /etc/mysql-mmm/mmm_agent.conf
分别改为huyang1、huyang2、huyang3、huyang4
5.所有数据库启动mysql agent代理服务
systemctl start mysql-mmm-agent
【监视器配置】
1.修改监控主机配置文件
vim /etc/mysql-mmm/mmm_mon.conf
ping_ips 后面跟上所有服务器的真实ip
<host default>
monitor_user mmm_agent 管理用户
monitor_password 123456授权账户和密码
</host>
详细配置如下图:
2.监视器启动监控
systemctl start mysql-mmm-monitor
3.查看状态
mmm_control show
4.查看监控状态
mmm_control checks all
5.手动切换状态
mmm_control move_role writer huyang1
【结果测试】
【停止主库的mariadb服务】
systemctl stop mariadb
1.查看其他库变化
【监视器】mmm_control show
vip地址:192.168.59.143由主库变到了备用主库2上
【huyang3/4】show slave status\G;
【huyang2】show slave status\G;
2.在备用主库2上新建库
Create database huyang1
以下图为例:
可以发现备用主库2虽然新建了库huyang1,但是从库1和从库2没有发生变化
【重启主库1】
【huyang1】systemctl start mariadb
1.查看其他库变化
【监视器变化】mmm_control show
vip地址:没有变化
【huyang3/4】show slave status\G;
重新连接上了主库1
【huyang2】show slave status\G;
【停止备用主库2的服务】
【huyang2】systemctl start mariadb
【监视器变化】mmm_control show
vip地址:192.168.59.143由主库变到了主库1上
【huyang3/4】show slave status\G;
【huyang1/3/4】show databases;
可以发现当初在备用主库2上新建的库huyang1,此时出现在了【huayng1/3/4】数据库内
结果总结:
1.在切换主从的过程中查看结果较慢;
2.当第一个主服务停止之后,第二个服务器会成为主,但是查看状态会报错,因为一开始指定的就是第一个服务器;
3.虽然在主库1宕机之后,备用主库2和从库3从库4明面上没有产生主从复制的效果,但是在主库1恢复之后,手动停止备用主库2的服务,vip会将之前在备用主库2上的产生的数据,转移给主库1,并复制到从库1和从库2上,以保证数据的同步,这就是mysql---MMM高可用集群架构的意义!