mysqlzhimmm集群
发布时间:2023-06-09 13:32:01 所属栏目:MySql教程 来源:
导读:角色
ip
Hostname
id
写
读
Master1
192.168.1.128
Master1
1
192.168.1.100
Master2(backup)
192.168.1.131
Master2
2
192.168.1.110
Slave1
192.168.1.132
ip
Hostname
id
写
读
Master1
192.168.1.128
Master1
1
192.168.1.100
Master2(backup)
192.168.1.131
Master2
2
192.168.1.110
Slave1
192.168.1.132
|
角色 ip Hostname id 写 读 Master1 192.168.1.128 Master1 1 192.168.1.100 Master2(backup) 192.168.1.131 Master2 2 192.168.1.110 Slave1 192.168.1.132 Slave1 3 192.168.1.120 Slave2 192.168.1.133 Slave2 4 192.168.1.130 Monitor 192.168.1.134 Monitor1 无 在所有主机上配置/etc/hosts(master1,master2,slave1,slave2,monitor1) [root@mini1 ~]# vim /etc/hosts 192.168.1.128 master1 192.168.1.131 master2 192.168.1.132 slave1 192.168.1.133 slave2 192.168.1.134 monitor1 [root@mini1 ~]# hostnamectl set-hostname master1 [root@master1 ~]# for i in master2 slave1 slave2 monitor; do scp /etc/hosts $i:/etc/hosts ;dne 在 所 有 主 机 上 安 装 perl perl-devel perl-CPAN libart_lgpl.x86_64 rrdtool.x86_64 rrdtool-perl.x86_64 包 #yum -y install perl-* libart_lgpl.x86_64 rrdtool.x86_64 rrdtool-perl.x86_64 注:使用 centos7 在线 yum 源安装 安装 perl 的相关库 #cpan -i Algorithm::Diff Class::Singleton DBI DBD::mysql Log::dispatch Log::Log4perl Mail::Send Net::Ping Proc::Daemon Time::HiRes Params::Validate Net::ARP 在 master1、master2、slave1、slave2 主机上安装 MysqL5.7 和配置复制 master1 和 master2 互为主从,slave1、slave2 为 master1 的从 在每个 MysqL 的配置文件/etc/my.cnf 中加入以下内容, 注意 server-id 不能重复。 [root@master1 ~]# vim /etc/my.cnf log-bin = MysqL-bin binlog_format = mixed server-id = 1 relay-log = relay-bin relay-log-index = slave-relay-bin.index log-slave-updates = 1 auto-increment-increment = 2 auto-increment-offset = 1 [root@master2 ~]# vim /etc/my.cnf log-bin = MysqL-bin binlog_format = mixed server-id = 2 relay-log = relay-bin relay-log-index = slave-relay-bin.index log-slave-updates = 1 auto-increment-increment = 2 auto-increment-offset = 2 [root@slave1 ~]# vim /etc/my.cnf server-id = 3 relay-log = relay-bin relay-log-index = slave-relay-bin.index read_only = 1 [root@slave2 ~]# vim /etc/my.cnf server-id = 4 relay-log = relay-bin relay-log-index = slave-relay-bin.index read_only = 1 4 台数据库主机若要开启防火墙,要么关闭防火墙或者创建访问规则: [root@master1 ~]# firewall-cmd --permanent --add-port=3306/tcp success [root@master1 ~]# firewall-cmd --reload Success 主从配置(master1 和 master2 配置成主主,slave1 和 slave2 配置成 master1 的从): 在 master1 上授权: MysqL> grant replication slave on *.* to rep@'192.168.1.%' identified by '123'; 在 master2 上授权: MysqL> grant replication slave on *.* to rep@'192.168.1.%' identified by '123'; 把 master2、slave1 和 slave2 配置成 master1 的从库: 在 master1 上执行 show master status; 获取 binlog 文件和 Position 点 MysqL> show master status\G; *************************** 1. row *************************** File: MysqL-bin.000003 Position: 451 binlog_Do_DB: binlog_Ignore_DB: Executed_Gtid_Set: 1 row in set (0.00 sec) 在 master2、slave1 和 slave2 执行 MysqL> change master to master_host='192.168.1.128',master_port=3306,master_user='rep',master_password='123',master_log_file='MysqL-bin.000003',master_log_pos=451; MysqL> slave start; MysqL [(none)]> show slave status\G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.1.128 Master_User: rep Master_Port: 3306 Connect_Retry: 60 Master_Log_File: MysqL-bin.000003 Read_Master_Log_Pos: 451 Relay_Log_File: relay-bin.000002 Relay_Log_Pos: 320 Relay_Master_Log_File: MysqL-bin.000003 Slave_IO_Running: Yes Slave_sql_Running: Yes 把 master1 配置成 master2 的从库:在 master2 上执行 show master status ;获取 binlog 文件和 Position 点 MysqL> change master to master_host='192.168.1.131',master_port=3306,master_user='rep',master_password='123',master_log_file='MysqL-bbin.000002',master_log_pos=1045; MysqL> start slave; MysqL> show slave status\G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.1.131 Master_User: rep Master_Port: 3306 Connect_Retry: 60 Master_Log_File: MysqL-bin.000002 Read_Master_Log_Pos: 1045 Relay_Log_File: relay-bin.000002 Relay_Log_Pos: 320 Relay_Master_Log_File: MysqL-bin.000002 Slave_IO_Running: Yes Slave_sql_Running: Yes 4、MysqL-mmm 配置:在 4 台 MysqL 节点上创建用户 创建代理账号: 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'; 注 1:因为之前的主从复制,以及主从已经是 ok 的,所以我在 master1 服务器执行就 ok 了。 检查 master2 和 slave1、slave2 三台 db 上是否都存在监控和代理账号 MysqL> select user,host from MysqL.user where user in ('mmm_monitor','mmm_agent'); +-------------+-------------+ | user | host | +-------------+-------------+ | mmm_agent | 192.168.1.% | | mmm_monitor | 192.168.1.% | +-------------+-------------+ 或 MysqL> show grants for 'mmm_agent'@'192.168.1.%'; +------------------------------------------------------------------------------+ | Grants for mmm_agent@192.168.1.% | +------------------------------------------------------------------------------+ | GRANT PROCESS, SUPER, REPLICATION CLIENT ON *.* TO 'mmm_agent'@'192.168.1.%' | +------------------------------------------------------------------------------+ MysqL [(none)]> show grants for 'mmm_monitor'@'192.168.1.%' ; +----------------------------------------------------------------+ | Grants for mmm_monitor@192.168.1.% | +----------------------------------------------------------------+ | GRANT REPLICATION CLIENT ON *.* TO 'mmm_monitor'@'192.168.1.%' | +----------------------------------------------------------------+ 在 monitor 主机(192.168.31.106) 上安装监控程序 [root@monitor1 ~]# tar zxf MysqL-mmm-2.2.1.tar.gz [root@monitor1 MysqL-mmm-2.2.1]# [root@monitor1 MysqL-mmm-2.2.1]# make install 在数据库服务器(master1、master2、slave1、slave2)上安装代理 [root@master1 ~]# tar zxf MysqL-mmm-2.2.1.tar.gz [root@master1 ~]# cd MysqL-mmm-2.2.1/ 配置 mmm 编写配置文件,五台主机必须一致:完成安装后,所有的配置文件都放到了/etc/MysqL-mmm/下面。管理服务器和数据库服务器上都要包含一个共同的文件 mmm_common.conf,内容如下:active_master_rolewriter#积极的 master 角色的标示,所有的 db 服务器要开启 read_only 参数,对于 writer 服务器监控代理会自动将 read_only 属性关闭。 [root@monitor1 MysqL-mmm-2.2.1]# cd /etc/MysqL-mmm/ [root@monitor1 MysqL-mmm]# vim mmm_common.conf active_master_role writer <host default> cluster_interface ens32 #网卡名 pid_path /var/run/mmm_agentd.pid #pid 路径 bin_path /usr/lib/MysqL-mmm/ #可执行文件路径 replication_user rep #复制用户 replication_password 123 #复制用户密码 agent_user mmm_agent #代理用户 agent_password 123 #代理用户密码 </host> <host master1> #master1的host名 ip 192.168.1.128 #ip mode master #角色属性 peer master2 #对等的服务器host名 </host> <host master2> ip 192.168.1.131 mode master peer master1 </host> <host slave1> #从库的host名,多个则重复配置 ip 192.168.1.132 mode slave </host> <host slave2> ip 192.168.1.133 mode slave </host> <role writer> #写角色配置 hosts master1,master2 #master1,master2#能进行写操作的服务器的 host 名,如果不想切换写操作这里可以只配置 master,这样也可以避免因为网络延时而进行 write 的切换,但是一旦master 出现故障那么当前的 MMM 就没有 writer 了只有对外的 read 操作。 ips 192.168.1.100 #写的虚拟ip mode exclusive #代表只允许存在一个主,也就是只能提供一个写的 IP </role> <role reader> #读角色分配置 hosts master2,slave1,slave2 ips 192.168.1.130, 192.168.1.110, 192.168.1.120 mode balanced #负载均衡 </role> [root@monitor1 MysqL-mmm]# for i in master1 master2 slave1 slave2; do scp /etc/MysqL-mmm/mmm_common.conf $i:/etc/MysqL-mmm/ ;done 代理文件配置编辑 4 台 MysqL 节点机上的/etc/MysqL-mmm/mmm_agent.conf 在数据库服务器上,还有一个 mmm_agent.conf 需要修改,其内容是: [root@master1 MysqL-mmm-2.2.1]# vim /etc/MysqL-mmm/mmm_agent.conf include mmm_common.conf this master1 #每台数据库host 启动代理进程 在 /etc/init.d/MysqL-mmm-agent 的脚本文件的#!/bin/sh 下面,加入如下内容 source /root/.bash_profile [root@master1 MysqL-mmm-2.2.1]# cd /etc/init.d/ [root@master1 init.d]# chkconfig --add MysqL-mmm-agent [root@master1 init.d]# chkconfig MysqL-mmm-agent on [root@master1 init.d]# /etc/init.d/MysqL-mmm-agent start Daemon bin: '/usr/sbin/mmm_agentd' Daemon pid: '/var/run/mmm_agentd.pid' Starting MMM Agent daemon... Ok #表示启动成功 (编辑:驾考网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
