[再投稿] MySQLクラスタの高可用性アーキテクチャのMHA

MySQLクラスタの高可用性アーキテクチャ用のMHA

https:// segmentfault.com/a/1190000021100914

 

以前に記事を書きました:MySQLクラスターの高可用性アーキテクチャーについてそれ以来、バックグラウンドまたは他のチャネルで多くの小規模なパートナーが私に尋ねてきました。関連する詳細な構成管理記事があると、移民労働者も以前のさまざまな構造を1つずつ整理して公開します。次に、本日リリースされるMHAアーキテクチャーの全体的な計画および構成操作。

1.アーキテクチャの紹介

MHA(マスター高可用性)は現在、MySQL高可用性環境でのフェイルオーバーおよびマスタースレーブプロモーション用の高可用性ソフトウェアとして、MySQL高可用性で比較的成熟したソリューションです。MySQLフェイルオーバーのプロセスでは、MHAはデータベースフェイルオーバー操作を0〜30秒以内に自動的に完了でき、フェイルオーバーのプロセスでは、MHAはデータの一貫性を最大限に確保して真を実現できます。ある意味で高可用性。

ソフトウェアは、MHAマネージャー(管理ノード)とMHAノード(データノード)の2つの部分で構成されています。MHAマネージャーは、独立したマシンにデプロイして複数のマスター/スレーブクラスターを管理したり、スレーブノードにデプロイしたりできます。MHAノードは各MySQLサーバーで実行され、MHAマネージャーはクラスター内のマスターノードを定期的に検出します。マスターに障害が発生すると、最新のデータスレーブを新しいマスターに自動的に昇格し、他のすべてのスレーブを新しいマスターにリダイレクトします。マスター フェイルオーバープロセス全体は、アプリケーションに対して完全に透過的です。

現在、MHAは主にマスタースレーブアーキテクチャをサポートしています。MHAを構築するには、レプリケーションクラスタに少なくとも3つのデータベースサーバーが必要です。1つはマスター、2つはスレーブで、1つはマスターとして機能し、1つはスタンバイマスターとして機能し、もう1つはスレーブとして機能します。 、少なくとも3つのサーバーが必要なため。

2.導入計画

システム情報

[root@db250 ~]# cat /etc/redhat-release
CentOS release 6.8 (Final)
[root@db250 ~]# uname -r 2.6.32-642.el6.x86_64

データベースのバージョン

mysql-5.7.17

環境計画

Db250    集群管理节点 192.168.4.250
Db251 主库 192.168.4.251 Db253 从库(备主库) 192.168.4.253 Db254 从库 192.168.4.254

アーキテクチャ図は次のとおりです

3. Hostsファイルを構成する

hostsファイルを構成する

cat>>/etc/hosts<<EOF

192.168.4.250 db250

192.168.4.251 db251 192.168.4.253 db253 192.168.4.254 db254 EOF

構成後の確認

[root@db254 ~]# tail -4 /etc/hosts

192.168.4.250 db250

192.168.4.251 db251 192.168.4.253 db253 192.168.4.254 db254

4. SSHシークレットフリーのログイン構成

SSHキーレスログインの構成

ssh-keygen -t rsa

ssh-copy-id 192.168.4.251

ssh-copy-id 192.168.4.253 ssh-copy-id 192.168.4.254

----上記の2つの手順では、すべてのサーバーを構成する必要があります

5. MySQLをインストールし、マスター/スレーブ同期を構成します

マスターライブラリからスレーブライブラリにデータを同期します。マスターとスレーブの同期操作については、以前の記事を参照してください

LinuxシステムMySQLデータベースマスタースレーブ同期実際の戦闘プロセス

マスターとスレーブの同期ステータスを確認する

mysql -uroot -p123456 -e "show slave status\G"|egrep "Slave_IO_Running|Slave_SQL_Running"

すべてのデータベースノードでMHA管理ユーザーと権限を構成する

grant all on *.* to mha@'192.168.4.%' identified by '123456';

これまでのところ、すべての基本的な環境が設定されています

6. MHAをインストールして構成する

https://downloads.mariadb.com ... #download  アドレス

関連するインストールパッケージを他のノードに渡す

MHAサービスのインストールプロセス全体は次のとおりです。

依存関係をインストールする

yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes –y

管理ノードのインストール

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

yum localinstall -y mha4mysql-manager-0.52-0.noarch.rpm yum localinstall -y mha4mysql-node-0.52-0.noarch.rpm

その他のノードのインストール

yum localinstall -y mha4mysql-node-0.52-0.noarch.rpm

インストールプロセス中にエラーが報告される場合があります。プロンプトに従って解決してください

構成プロセスは次のとおりです。

[root@db250 ~]# mkdir /mha

[root@db250 ~]# vim /etc/masterha_default.cnf
 [server default] #刚才授权的mysql管理用戶名 user=mha password=123456 manager_workdir=/mha manager_log=/mha/manager.log remote_workdir=/mha #ssh免密钥登录的帐号名 ssh_user=root #mysql复制帐号,用来在主从机之间同步二进制日志等 repl_user=slave repl_password=123456 #ping间隔,用来检测master是否正常 ping_interval= 1  [server1] hostname=db251 master_binlog_dir=/var/lib/mysql #候选master挂掉时候优先让它顶 candidate_master=1  [server2] hostname=db253 master_binlog_dir=/var/lib/mysql/ candidate_master=1  [server3] hostname=db254 master_binlog_dir=/var/lib/mysql/ no_master=1 #不能成为master

------関連する検出コマンドは次のとおりです------------------

masterha_check_ssh MHAのSSH構成ステータスを
チェックしますmasterha_check_repl MySQLレプリケーションステータスをチェックします
masterha_manger MHAを開始します masterha_check_status
現在のMHA実行ステータスを
チェックします masterha_master_monitorマスターがダウンしているかどうかをチェックし
ますmasterha_master_switch制御フェイルオーバー(自動または手動)
masterha_conf_host

SSHパスワードなしのログインを検出する

検出同期

7. MHAサービスを開始します

[root@db250 ~]# masterha_manager --conf=/etc/masterha_default.cnf &

[1] 2035Fri Sep  1 01:52:25 2017 - [info] Reading default configuratoins from /etc/masterha_default.cnf.. Fri Sep 1 01:52:25 2017 - [info] Reading application default configurations from /etc/masterha_default.cnf.. Fri Sep 1 01:52:25 2017 - [info] Reading server configurations from /etc/masterha_default.cnf..

起動ログを表示する

起動ログから、現在のDBmasterがDB251サーバーであることがわかり、起動が成功したことがわかります。

8.テスト失敗の自動切り替え

次に障害をシミュレートし、db251をオフにします。


[root@db251 ~]# /etc/init.d/mysqld stop

Stopping mysqld:       [  OK  ]

ログを

確認して、新しいマスターデータベースがdb253サーバーに切り替えられたことを確認してから、マスターとスレーブの同期を確認してください。

元のマスターサーバーが修復されたら、手動で元のマスターをスレーブに変更する必要があります

[root@db250 ~]# grep -i"All other slaves should start" /mha/manager.log

Fri Sep  1 01:59:05 2017 - [info] All other slaves should start replicationfrom here. Statement should be: CHANGE MASTER TO MASTER_HOST='db253 or192.168.4.253', MASTER_PORT=3306,MASTER_LOG_FILE='slave-bin.000003',MASTER_LOG_POS=760546, MASTER_USER='slave', MASTER_PASSWORD='xxx';

オンラインになった後、元のマスターライブラリが新しいスレーブライブラリになり、DB253と同期したことがわかりました

マスター書き込み同期のテスト

同期は正常です

クリック-> 移民労働者が  WeChatパブリックアカウントフォローするためのテクニカルロード、およびダイアログボックスがキーワードに応答:1024最新の2048Gテクニカルドライグッズのコピーを取得できます:システムの運用とメンテナンス、データベース、redis、MogoDB、電子書籍、JavaベーシックコースなどJavaの実際の戦闘プロジェクト、アーキテクトの包括的なチュートリアル、アーキテクトの実際の戦闘プロジェクト、ビッグデータ、Dockerコンテナー、ELKスタック、機械学習、BATインタビュービデオなど

おすすめ

転載: www.cnblogs.com/jinanxiaolaohu/p/12552391.html
おすすめ