MySQLの-MMMは、高可用性クラスタの構築(全体のプロセス、純粋な乾燥を~~)

この記事では、原則とプログラム構造MMM MMMのアーキテクチャについて説明します。MMM方式は、事業を要求し、データの整合性には適用されません。学ぶために学習のフォローアップ。

特定のアーキテクチャトポロジで見てみましょう、として、次のとおりです。

MySQLの-MMMは、高可用性クラスタの構築(全体のプロセス、純粋な乾燥を~~)

その中でも、

役割 ホスト IPアドレス アプリケーションのプロパティ VIP
MASTER1 マスター 192.168.142.135 書きます 192.168.142.188
MASTER2 バックアップ 192.168.142.132 書き込み|読みます 192.168.142.188
SLAVE1 奴隷 192.168.142.136 読む 192.168.142.200、192.168.142.210
スレーブ2 奴隷 192.168.142.137 読む 192.168.142.200、192.168.142.210
モニター モニター 192.168.142.143 moitor ノーVIP

設定手順

まず、テスト環境の構成

ALIソースクラウドの設定(スキップ可能なインストールされている場合)

ここでは、5つすべてをインストールするには、実際の必要性のデモンストレーションにMASTER1

[root@master1 ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@master1 ~]# yum -y install epel-release
[root@master1 ~]# yum clean all && yum makecache

すべての主要なMySQLサーバからのインストール、および構成します

[root@master1 ~]# yum install mysql -y
[root@master1 ~]# vim /etc/my.cnf      #修改配置文件
    ##server id不能一样
    server-id =
    log-bin = zhu-bin
    log-slave-updates = ture    ##开启主从同步
    sync_binlog = 1   ##二进制文件立即写入
    auto_increment_increment=2           ###增量为2   
    auto_increment_offset=1               ######  起始值为1
[root@master1 ~]# systemctl restart mysqld
[root@master1 ~]# systemctl enable mysqld

第二に、主プライマリ同期の構成(2つのマスタが互いにコピー、各フラットステージ)

M1、M2はM1、M2からの権限の許可を与えます

[root@master1 ~]# mysql -u root -p
grant replication slave on *.* to 'myslave'@'192.168.142.%' identified by 'asd123';
    #允许从服务器使用myslave账户在主服务器上进行复制操作(两台主均要授权)
show master status;
+------------------+----------+--------------+--------------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB         |
+------------------+----------+--------------+--------------------------+
| mysql_bin.000001 |      245 |              | mysql,information_schema |
+------------------+----------+--------------+--------------------------+
1 row in set (0.00 sec)
    #查看作为主服务器的信息,关键点为position号码
change master to master_host='主服务器地址',master_user='myslave',master_password='asd123',master_log_file='File',master_log_pos=position号码;
    ##授予权限(m1为m2的主,m2为m1的主)
start slave;
show slave status\G
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
    #查看作为从服务器的信息,是否同步开启

第三に、マスタ - スレーブ同期(マスタ局Aから同じ局を参照の両方)

サーバ構成MASTER1から二点

[root@slave1 ~]# vim /etc/my.cnf
    server-id = 6    #不能有相同的
    log-bin=mysql-bin
    log-slave-updates=ture
    sync_binlog = 1
[root@slave1 ~]# systemctl restart mysqld
[root@slave1 ~]# netstat -atnp | grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      38831/mysqld

#提权,指向master1(两台从操作相同!!!!!)
[root@slave1 ~]# mysql -uroot -p
change master to master_host='主服务器地址',master_user='myslave',master_password='asd123',master_log_file='主服务器查看到的信息',master_log_pos=号码;
    ##授予权限(slave1、slave2为master1的从)
start slave;
show slave status\G
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
    #查看作为从服务器的信息,是否同步开启

第四に、すべてのサーバがインストールされ、構成されたMMM

構成ファイルを変更Mmm_common

[root@master1 ~]# yum -y install mysql-mmm*

#修改MMM配置文件
[root@master1 ~]# vim /etc/mysql-mmm/mmm_common.conf
cluster_interface       ens33
......
replication_user        myslave     #从服务器访问主服务器账户
replication_password    asd123
agent_user              mmm_user    #MMM用户账户
agent_password          123123

<host db1>
    ip      192.168.142.135        #master1的IP地址
    mode    master
    peer    db2
</host>

<host db2>
    ip      192.168.142.132        #master2的IP地址
    mode    master
    peer    db1
</host>

<host db3>
    ip      192.168.142.136        #slave1的IP地址
    mode    slave
</host>

<host db4>
    ip      192.168.142.137        #slave2的IP地址
    mode    slave
</host>

<role writer>
    hosts   db1, db2
    ips     192.168.142.188       ###VIP虚拟IP地址
    mode    exclusive
</role>

<role reader>
    hosts   db3, db4
    ips     192.168.142.200, 192.168.142.210      ###VIP虚拟IP地址
    mode    balanced
</role>

#scp远程复制,将配置远程推送
[root@master1 ~]# scp /etc/mysql-mmm/mmm_common.conf [email protected]:/etc/mysql-mmm/
[root@master1 ~]# scp /etc/mysql-mmm/mmm_common.conf [email protected]:/etc/mysql-mmm/
[root@master1 ~]# scp /etc/mysql-mmm/mmm_common.conf [email protected]:/etc/mysql-mmm/
[root@master1 ~]# scp /etc/mysql-mmm/mmm_common.conf [email protected]:/etc/mysql-mmm/

構成ファイルの変更Mmm_monitor(モニタモニタエンドのみ)

[root@localhost ~]# vim /etc/mysql-mmm/mmm_mon.conf
<monitor>
    ......
    ping_ips            192.168.142.135,192.168.142.132,192.168.142.136,192.168.142.137     #所有主从服务器IP地址
    auto_set_online     5
    #等待上线时间

<host default>
    monitor_user        mmm_monitor     ##创建监控用户
    monitor_password    123123
</host>

すべてのプライマリ・データベース(MMMのユーザ、ユーザのモニタリング)から重みを持ち上げます

[root@master1 ~]# mysql -u root -p
grant super,replication client,process on *.* to 'mmm_user'@'192.168.142.%' identified by '123123';
grant replication client on *.* to 'mmm_monitor'@'192.168.142.%' identified by '123123';
flush privileges
##每台主从都要提权

Agant(BEメイン変形のそれぞれからの)構成ファイルを変更します

所在地:/etc/mysql-mmm/mmm_agent.conf

[root@master1 ~]# vim /etc/mysql-mmm/mmm_agent.conf
this db1(对应的角色)

第五に、オープンサービス

オープンmmm_agantへのサーバーからのすべての主なサービス

[root@master1 ~]# systemctl start mysql-mmm-agent.service 
[root@master1 ~]# systemctl enable mysql-mmm-agent.service 

監視クライアントサービスオープンmmm_monitor

[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl start mysql-mmm-monitor.service
[root@localhost ~]# mmm_control show   ##查看监控状态

第六に、検証結果

[root@localhost mysql-mmm]# mmm_control show
  db1(192.168.142.135) master/ONLINE. Roles: writer(192.168.18.250)
  db2(192.168.142.132) master/ONLINE. Roles: 
  db3(192.168.142.136) slave/ONLINE. Roles: reader(192.168.18.251)
  db4(192.168.142.137) slave/ONLINE. Roles: reader(192.168.18.252)

//利用命令调整虚拟IP切换至master2:
[root@localhost mysql-mmm]# mmm_control move_role writer db2
OK: Role 'writer' has been moved from 'db1' to 'db2'. Now you can wait some time and check new roles info!
[root@localhost mysql-mmm]# mmm_control show
  db1(192.168.142.135) master/ONLINE. Roles: 
  db2(192.168.142.132) master/ONLINE. Roles: writer(192.168.18.250)
  db3(192.168.142.136) slave/ONLINE. Roles: reader(192.168.18.251)
  db4(192.168.142.137) slave/ONLINE. Roles: reader(192.168.18.252)

//检测所有状态是否都正常:
[root@localhost mysql-mmm]# mmm_control checks all
db4  ping         [last change: 2019/11/25 15:25:54]  OK
db4  mysql        [last change: 2019/11/25 15:25:54]  OK
db4  rep_threads  [last change: 2019/11/25 15:25:54]  OK
db4  rep_backlog  [last change: 2019/11/25 15:25:54]  OK: Backlog is null
db2  ping         [last change: 2019/11/25 15:25:54]  OK
db2  mysql        [last change: 2019/11/25 15:25:54]  OK
db2  rep_threads  [last change: 2019/11/25 15:25:54]  OK
db2  rep_backlog  [last change: 2019/11/25 15:25:54]  OK: Backlog is null
db3  ping         [last change: 2019/11/25 15:25:54]  OK
db3  mysql        [last change: 2019/11/25 15:25:54]  OK
db3  rep_threads  [last change: 2019/11/25 15:25:54]  OK
db3  rep_backlog  [last change: 2019/11/25 15:25:54]  OK: Backlog is null
db1  ping         [last change: 2019/11/25 15:25:54]  OK
db1  mysql        [last change: 2019/11/25 15:25:54]  OK
db1  rep_threads  [last change: 2019/11/25 15:25:54]  OK
db1  rep_backlog  [last change: 2019/11/25 15:25:54]  OK: Backlog is null

上記は、読書のためのおかげで、クラスタMMMを構築する全体のプロセスです!

おすすめ

転載: blog.51cto.com/14484404/2455936