加入收藏 | 设为首页 | 会员中心 | 我要投稿 驾考网 (https://www.jiakaowang.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

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

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    #表示启动成功

 

(编辑:驾考网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章