MMM高可用性アーキテクチャ

MMM高可用性アーキテクチャ

MMMは(のためのマスターマスターレプリケーションマネージャー MySQLの) デュアルデュアルマスタースクリプトや日々の管理のためのマスター・フェイルオーバー・サポートのセットです。MMM使用Perl言語の開発、主にコピーMySQLのマスター・マスター(ダブルマスター)を監視し、管理するために使用され、それはmysqlのマスターマスターレプリケーションマネージャーに言うことができます。また、メインメインメイン予熱時間の切り替えを加速するために、代わりにメイン読みデュアルマスター・レプリケーションと呼ばれるが、同じ時間でのサービスは他の部分にサービスを提供するために、1つのマスタのみ書き込みを許可しますが、それはMMMと言うことができます追加のツールのスクリプトは、複数のスレーブの均衡読み取り負荷を実現することができるの内側に一方ではスクリプトのセットは、他の一方で、フェイルオーバー機能を実現しています。mysqlのマスターマスターレプリケーション構成の監視について、スケーラブルなスイートスクリプトのフェールオーバーおよび管理(1つのノードのみいつでも書き込むことができます)、キットはまた、家庭での生活の標準から、任意の数の構成からなることができますあなたはほかに、コピーを生きて起動する仮想IPのサーバーのグループにそれを使用することができますので、サーバーの負荷分散を読んで、それはノード間のバックアップデータのスクリプトの再同期化を実現しました。


 MMM提供了自动和手动两种方式移除一组服务器中复制延迟较高的服务器的虚拟ip,同时它还可以备份数据,实现两节点之间的数据同步等。由于MMM无法完全的保证数据一致性,所以MMM适用于对数据的一致性要求不是很高,但是又想最大程度的保证业务可用性的场景。MySQL本身没有提供replication failover的解决方案,通过MMM方案能实现服务器的故障转移,从而实现mysql的高可用。对于那些对数据的一致性要求很高的业务,非常不建议采用MMM这种高可用架构。

MMMチャート:

MMM高可用性アーキテクチャ

MMMこのモードでは、容易に制御するマスター、よだれダイ、2つの2に
MHAモード、高いスケーラビリティ、デュアルスタンバイマスター、ゾーン。次いで、デュアルスタンバイマスタと拡張領域
ノードをインストールするために必要な

まず、我々は、5台の仮想マシンを開く計画を行います

1台の192.168.136.191 DB1マスターサーバ
マスターサーバ2 192.168.136.168 DB2
サーバ1 192.168.136.185 DB3から
サーバ2 192.168.136.184 DB4から
サーバを監視192.168.136.135

アリクラウドソースの構成。各サーバーにはインストールする必要があります

wget -O /etc/yum.repos.d/CentOS-Base.repo httP://mirrors.aliyun.com/repo/Centos-7.repo

インストールEPELリリース源は、各サーバをインストールする必要があります

yum -y install epel-release

yum clean all && yum makecache

YUMローカル情報源を構築、すべてのサーバーでは、サーバーの監視に加えて、嵌合します


yum install mariadb-server mariadb -y`

マスター設定ファイルを変更する、他の4人のうちの監視サーバーを変更する必要があります。コピーし、ライン上に貼り付けます。

vim /etc/my.cnf

9dd

[mysqld]
log_error=/var/lib/mysql/mysql.err
log=/var/lib/mysql/mysql_log.log
log_slow_queries=/var/lib/mysql_slow_queries.log
binlog-ignore-db=mysql,information_schema
character_set_server=utf8
log_bin=mysql_bin
server_id=1  #注意每台id都要是不一样的
log_slave_updates=true
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=1

各サーバはシャットファイアウォール、強化機能、開いているデータベースである必要があります

systemctl stop firewalld.service 
setenforce 0
systemctl start mariadb.service 
[root@localhost ~]# mysql #进入M1数据库

 进入M1服务器查看日志文件的名称和位置值
MariaDB [(none)]> show master status; #查看日志文件的名称和位置值
+------------------+----------+--------------+--------------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB         |
+------------------+----------+--------------+--------------------------+
| mysql_bin.000003 |      245 |              | mysql,information_schema |
+------------------+----------+--------------+--------------------------+

ログファイルの名前と場所の値にM2サーバビュー

MariaDB [(none)]> show master status;
+------------------+----------+--------------+--------------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB         |
+------------------+----------+--------------+--------------------------+
| mysql_bin.000003 |      245 |              | mysql,information_schema |
+------------------+----------+--------------+--------------------------+

ふたりの主人は、許可を与え、実行します

grant replication slave on *.* to 'replication'@'192.168.136.%' identified by '123456';`

サーバアドレスへM1 M2サーバ、ログファイルの名前、位置パラメータ


change master to master_host='192.168.136.168',master_user='relication',master_password='123456',master_log_file='mysql_bin.000003',master_log_pos=245;

サーバアドレスへM1 M2サーバ、ログファイルの名前、位置パラメータ

change master to master_host='192.168.136.167',master_user='relication',master_password='123456',master_log_file='mysql_bin.000003',master_log_pos=245;
#两台服务器都执行开启同步数据
MariaDB [(none)]> slave start;

#两台主服务器都执行,查看同步数据的状态
MariaDB [(none)]> show slave status\G;
#看到下面的IO线程和状态都是YES就是正确了
 Slave_IO_Running: Yes
 Slave_SQL_Running: Yes
#我们测试一下两个主服务器是否能同步数据
M1创建数据一个数据库
MariaDB [(none)]> create database myschool;
Query OK, 1 row affected (0.00 sec)

M2
MariaDB [(none)]> show databases; 
+--------------------+
| Database           |
+--------------------+
| information_schema |
| myschool           |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)

------------------------------------------ サーバーからの同期データ ---- -----------------------------------

#s1和s2从服务器
[root@localhost ~]# mysql
#都指向M1主服务器的地址,日志文件和参数
MariaDB [(none)]> change master to master_host='192.168.136.191',master_user='replication',master_password='123456',master_log_file='mysql_bin.000003',master_log_pos=245;
#在M1创建一个数据库
MariaDB [(none)]> create database school;
Query OK, 1 row affected (0.00 sec)
#其他三台服务器都有这个数据库
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| school             |
| test               |
+--------------------+

#所有服务器都要装
yum -y install mysql-mmm*

#到第一台主服务器开始配置
[root@localhost ~]# cd /etc/mysql-mmm/
[root@localhost mysql-mmm]# ls
mmm_agent.conf  mmm_common.conf  mmm_mon.conf  mmm_mon_log.conf  mmm_tools.conf
[root@localhost mysql-mmm]# vim mmm_common.conf 

<host default>
    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
</host>

<host db1>
    ip      192.168.136.191
    mode    master
    peer    db2
</host>

<host db2>
    ip      192.168.136.168
    mode    master
    peer    db1
</host>

<host db3>
    ip      192.168.136.185
    mode    slave
</host>

<host db4>
    ip      192.168.136.184
    mode    slave
</host>

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

<role reader>
    hosts   db3, db4
    ips     192.168.136.210, 192.168.136.220  #虚拟地址
    mode    balanced

SCPを使用したファイルは、他のサーバーに渡さ

scp mmm_common.conf [email protected]:/etc/mysql-mmm/
scp mmm_common.conf [email protected]:/etc/mysql-mmm/
scp mmm_common.conf [email protected]:/etc/mysql-mmm/
scp mmm_common.conf [email protected]:/etc/mysql-mmm/

監視サーバーのアカウントの設定

[root@localhost mysql-mmm]# vim mmm_mon.conf 

ping_ips            192.168.136.191,192.168.136.168,192.168.136.185,192.168.136.184 输入你所有的地址
    auto_set_online     10  #自带上线时间为10s

monitor_password    123456  #修改密码为123456

在所有数据库给mmm_agent授权

grant super, replication client, process on *.* to 'mmm_agent'@'192.168.136.%' identified by '123456';

grant replication client on *.* to 'mmm_monitor'@'192.168.136.%' identified by '123456';

構成ファイルを変更するために、対応する(M2、S1、S2)

[root@localhost mysql-mmm]# vim mmm_agent.conf
this db2
this db3
this db4

systemctl start mysql-mmm-agent.service 
systemctl enable mysql-mmm-agent.service

#回到监控服务器
systemctl start mysql-mmm-monitor.service 

各ノードの状況を見ます

[root@localhost mysql-mmm]# mmm_control show
  db1(192.168.136.191) master/ONLINE. Roles: writer(192.168.136.200)
  db2(192.168.136.168) master/ONLINE. Roles: 
  db3(192.168.136.185) slave/ONLINE. Roles: reader(192.168.136.220)
  db4(192.168.136.184) slave/ONLINE. Roles: reader(192.168.136.210)

#更改绑定的虚拟地址
[root@localhost mysql-mmm]# mmm_control move_role writer db2
#测试监控服务器功能是否完善

[root@localhost mysql-mmm]# mmm_control checks all
db4  ping         [last change: 2019/11/25 16:38:25]  OK
db4  mysql        [last change: 2019/11/25 16:38:25]  OK
db4  rep_threads  [last change: 2019/11/25 16:38:25]  OK
db4  rep_backlog  [last change: 2019/11/25 16:38:25]  OK: Backlog is null
db2  ping         [last change: 2019/11/25 16:38:25]  OK
db2  mysql        [last change: 2019/11/25 16:38:25]  OK
db2  rep_threads  [last change: 2019/11/25 16:38:25]  OK
db2  rep_backlog  [last change: 2019/11/25 16:38:25]  OK: Backlog is null
db3  ping         [last change: 2019/11/25 16:38:25]  OK
db3  mysql        [last change: 2019/11/25 16:38:25]  OK
db3  rep_threads  [last change: 2019/11/25 16:38:25]  OK
db3  rep_backlog  [last change: 2019/11/25 16:38:25]  OK: Backlog is null
db1  ping         [last change: 2019/11/25 16:38:25]  OK
db1  mysql        [last change: 2019/11/25 16:38:25]  OK
db1  rep_threads  [last change: 2019/11/25 16:38:25]  OK
db1  rep_backlog  [last change: 2019/11/25 16:38:25]  OK: Backlog is null

[root@localhost mysql-mmm]# mmm_control move_role writer db1
OK: Role 'writer' has been moved from 'db2' to 'db1'. Now you can wait some time and check new roles info!
[root@localhost mysql-mmm]# mmm_control show
  db1(192.168.136.191) master/ONLINE. Roles: writer(192.168.136.200)
  db2(192.168.136.168) master/ONLINE. Roles: 
  db3(192.168.136.185) slave/ONLINE. Roles: reader(192.168.136.220)
  db4(192.168.136.184) slave/ONLINE. Roles: reader(192.168.136.210)

#第一台主服务器关闭数据库模拟故障
[root@localhost mysql-mmm]# systemctl stop mariadb.service

#回到监控服务器测试,虚拟网址就变更了
[root@localhost mysql-mmm]# mmm_control show
  db1(192.168.136.191) master/HARD_OFFLINE. Roles: 
  db2(192.168.136.168) master/ONLINE. Roles: writer(192.168.136.200)
  db3(192.168.136.185) slave/ONLINE. Roles: reader(192.168.136.220)
  db4(192.168.136.184) slave/ONLINE. Roles: reader(192.168.136.210)

#再把第一台主服务器开启数据库
[root@localhost mysql-mmm]# systemctl start mariadb.service

#在回到监控服务器查看主服务器状态
[root@localhost mysql-mmm]# mmm_control show
  db1(192.168.136.191) master/ONLINE. Roles: 
  db2(192.168.136.168) master/ONLINE. Roles: writer(192.168.136.200)
  db3(192.168.136.185) slave/ONLINE. Roles: reader(192.168.136.220)
  db4(192.168.136.184) slave/ONLINE. Roles: reader(192.168.136.210)

#监控服务器
[root@localhost mysql-mmm]# yum install mariadb-server mariadb -y

#再M1服务器为监控器地址授权登录

MariaDB [(none)]> grant all on *.* to 'testba'@'192.168.136.135' identified by '123456';

MariaDB [(none)]> flush privileges;

監視サーバに戻るには、テストを記録することはできません

mysql -utestdba -p -h 192.168.136.200
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2562
Server version: 5.5.64-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

他のサーバーに移動する必要がが同期されていないデータを表示するために、テーブルを作成します。

MariaDB [(none)]> create database chen;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| chen               |
| mysql              |
| performance_schema |
| school             |
| test               |
+--------------------+
6 rows in set (0.01 sec)

それが私たちのすべてのコンテンツだ、見ていただきありがとうございます

おすすめ

転載: blog.51cto.com/14449524/2453381