mysqlmmm工作原理

发布时间: 2023-11-21 12:50 阅读: 文章来源:1MUMB4243PS

实验拓扑:192.168.80.181 mariadb主服务器

192.168.80.182 mariadb 主服务器

192.168.80.185 mmm监视器monitor

192.168.80.189 mariadb从服务器

192.168.80.190 mariadb从服务器

1.基础环境搭建

所有主机都需要联网,并配置阿里云源,然后安装epel-release源

yum install -y wget

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo //修改yum仓库源为阿里云源

yum -y install epel-release //加载epel源

yum clean all && yum makecache //清理缓存并加载元数据缓存

yum -y install mariadb-server mariadb //安装mariadb

service firewalld stop

setenforce 0

systemctl start mariadb //启动mariadb

vi /etc/my.cnf //配置m1的配置文件,然后复制到其他服务器上,注意服务器Id

[mysqld]

log_error=/var/lib/mysql/mysql.err //错误日志

log=/var/lib/mysql/mysql_log.log

log_slow_queries=/var/lib/mysql_slow_queris.log //慢查询日志

binlog-ignore-db=mysql,information_schema //不需要同步的数据库名称

character_set_server=utf8 //编码

log_bin=mysql_bin //开启二进制日志用于主从数据复制

server_id=1 //服务器ID,不能一样

log_slave_updates //此数据库宕机,备用数据库接管

sync_binlog=1

auto_increment_increment=2 //字段一次递增多少

auto_increment_offset=1 //自增字段的起始值:1.3.5.7等奇数id

service mariadb restart

netstat -anpt | grep 3306 //检查是否启动

2. 配置主主同步

mysql //登录

MariaDB [(none)]> show master status; //在两台主服务器上查看bin日志起始位置和position起始位置

MariaDB [(none)]> grant replication slave on *.* to ‘replication‘@‘192.168.80.%‘ identified by ‘123456‘; //两台主都执行,为对方的同步用户授权

MariaDB [(none)]> change master to master_host=‘192.168.80.182‘,master_user=‘replication‘,master_password=‘123456‘,master_log_file=‘mysql_bin.000002‘,master_log_pos=410;

//填写自己同步账号的参数,注意bin日志编号和pos的值,不能填错。这句在m1上执行

MariaDB [(none)]> change master to master_host=‘192.168.80.181‘,master_user=‘replication‘,master_password=‘123456‘,master_log_file=‘mysql_bin.000002‘,master_log_pos=245; //这句在m2上执行

MariaDB [(none)]> start slave; //打开同步

MariaDB [(none)]> show slave status \G //查看同步状态,以下两个值为yes则成功,两台都要检查

下面建库进行测试,m1上新建数据库dba

m2上查看数据库,发现也有dba

在m1上将dba删除

m2上查看dba也消失了

主主同步配置成功。

主从同步配置

MariaDB [(none)]> change master to master_host=‘192.168.80.181‘,master_user=‘replication‘,master_password=‘123456‘,master_log_file=‘mysql_bin.000002‘,master_log_pos=1432;

MariaDB [(none)]> start slave;

MariaDB [(none)]> show slave status \G

以上在两台从服务器上操作即可

3. 配置MMM

yum -y install mysql-mmm* //5台主机上都要安装

[root@ab ~]# cd /etc/mysql-mmm/

[root@ab mysql-mmm]# vi mmm_common.conf //修改mmm配置文件,配置一台,其他的直接复制,修改如下。

cluster_interface ens33

pid_path /run/mysql-mmm-agent.pid

bin_path /usr/libexec/mysql-mmm/

replication_user replication

replication_password 123456

agent_user mmm_agent //用户代理端

agent_password 123456

ip 192.168.80.181

mode master

peer db2

ip 192.168.80.182

mode master

peer db1

ip 192.168.80.189

mode slave

ip 192.168.80.190

mode slave

hosts db1, db2

ips 192.168.80.199

mode exclusive

hosts db3, db4

ips 192.168.80.200, 192.168.80.201

mode balanced

将配置文件拷贝给其他主机

scp mmm_common.conf root@192.168.80.182:/etc/mysql-mmm/

scp mmm_common.conf root@192.168.80.185:/etc/mysql-mmm/

scp mmm_common.conf root@192.168.80.189:/etc/mysql-mmm/

scp mmm_common.conf root@192.168.80.190:/etc/mysql-mmm/

下面要在所有的数据库里为监视器用户授权,并且为代理用户mmm_agent授权

MariaDB [(none)]> grant super, replication client, process on *.* to ‘mmm_agent‘@‘192.168.80.%‘ identified by ‘123456‘; //代理用户授权

MariaDB [(none)]> grant replication client on *.* to ‘mmm_monitor‘@‘192.168.80.%‘ identified by ‘123456‘; //监视器用户授权

MariaDB [(none)]> flush privileges;

下面按照mmm_common.conf 配置文件中的数据库角色划分配置mmm_agent.conf文件

[root@ab mysql-mmm]# vi /etc/mysql-mmm/mmm_agent.conf

this db1 //根据规划进行逐一调整,181为db1,182为db2,189为db3,190为db4

systemctl start mysql-mmm-agent

systemctl enable mysql-mmm-agent //在所有数据库服务器上启动mysql-mmm-agent

MMM的架构身份配置结束,下面对架构的监视器monitor进行配置80.185

[root@www.mysql.com ~]#cd /etc/mysql-mmm/

[root@www.mysql.com mysql-mmm]#ls

mmm_agent.conf mmm_common.conf mmm_mon.conf mmm_mon_log.conf mmm_tools.conf

[root@www.mysql.com mysql-mmm]#vi mmm_mon.conf //修改监视器的监视用户密码

ping_ips 192.168.80.181,192.168.80.182,192.168.80.189,192.168.80.190 //数据库服务器地址

auto_set_online 5 //使被监视的服务器转为online的时间

monitor_user mmm_monitor

monitor_password 123456

[root@www.mysql.com mysql-mmm]#systemctl start mysql-mmm-monitor //启动监视端

[root@www.mysql.com mysql-mmm]#mmm_control show //查看各节点的情况

[root@www.mysql.com mysql-mmm]#mmm_control checks all //校对mmm,需要都为OK

故障测试

将m1数据库停止,查看漂移地址情况

[root@ab mysql-mmm]# service mariadb stop //将m1数据库停止

[root@www.mysql.com mysql-mmm]#mmm_control show

主服务器地址漂移了,注意:再次启动m1不会抢占

将m3从服务器停止,查看漂移地址情况

漂移地址都到了m4身上

在这个架构中要注意的是主从同步,从服务器只能跟m1进行主从同步,m2只是跟m1进行主主同步做备份用的,假如m1挂了,两台从服务器不能从m2上同步内容,必须将m1重启才行。

在m1服务器上为监控机地址授权登录

grant all on *.* to ‘testdba‘@‘192.168.80.%‘ identified by ‘123456‘;

flush privileges; //授权testdba用户在80.0网段可以登录管理数据库所有内容,密码123456

下面在监控服务器上安装mariadb,并且登录主服务器漂移地址

[root@www.mysql.com ~]#yum install mariadb -y

[root@www.mysql.com ~]#mysql -utestdba -p -h 192.168.80.199

下面创建一个数据库测试

在m2上查看

在从服务器上查看

同步成功

•••展开全文
相关文章