1. 内閣府マスターノードを監視することで、他のスレーブノードへの自動フェイルオーバーを実現できます。スレーブノードを新しいマスターノードに昇格させるには、マスタースレーブレプリケーションに基づいて、クライアントの協力も必要です。現在、MHA は主に 1 マスター複数スレーブアーキテクチャをサポートしています。MHA を構築するには、レプリケーションクラスターに少なくとも 3 つのデータベースサーバー (1 つのマスターと 2 つのスレーブ) が必要です。つまり、1 つはマスターとして機能し、1 つはスタンバイマスターとして機能し、もう 1 つはスレーブとして機能します。 1. MHAの動作原理
2. MHAソフトウェアMHA ソフトウェアは、マネージャー ツールキットとノード ツールキットの 2 つの部分で構成されています。 マネージャー ツールキットには主に次のツールが含まれています。 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 設定されたサーバー情報を追加または削除します ノード ツールキット: これらのツールは通常、MHA マネージャー スクリプトによってトリガーされ、人間による操作は必要ありません。 save_binary_logs はマスターのバイナリ ログを保存してコピーします。apply_diff_relay_logs は差分リレー ログ イベントを識別し、差分イベントを他のスレーブに適用します。filter_mysqlbinlog は不要な ROLLBACK イベントを削除します (MHA はこのツールを使用しなくなりました)。purge_relay_logs はリレー ログをクリアします (SQL スレッドをブロックしません)。 ヒント: ハードウェアの損傷やマスター データベースのダウンタイムによるデータ損失を最小限に抑えるために、MHA を構成する際に MySQL 5.5 の半同期レプリケーションを構成することをお勧めします。 カスタム拡張機能: secondary_check_script: 複数のネットワーク ルートを介してマスターの可用性を確認しますmaster_ip_ailover_script: アプリケーションが使用するマスター IP を更新しますshutdown_script: マスター ノードを強制的にシャットダウンしますreport_script: レポートを送信しますinit_conf_load_script: 初期構成パラメータをロードしますmaster_ip_online_change_script: マスター ノードの IP アドレスを更新します ダウンロードアドレス: https://code.google.com/archive/p/mysql-master-ha/downloads 3. MHAの実施
1) マネージャーノード [root@manager ~]# yum install mha4mysql-manager-0.56-0.el6.noarch.rpm mha4mysql-node-0.56-0.el6.noarch.rpm -y #mha ソフトウェアをインストールします [root@manager ~]# scp mha4mysql-node-0.56-0.el6.noarch.rpm 192.168.0.7: [root@manager ~]# scp mha4mysql-node-0.56-0.el6.noarch.rpm 192.168.0.8: [root@manager ~]# scp mha4mysql-node-0.56-0.el6.noarch.rpm 192.168.0.9: [root@manager ~]# mkdir /etc/mha/ [root@manager ~]# vim /etc/mha/cluster1.cnf [サーバーのデフォルト] ユーザー=mhauser パスワード=mhapass マネージャーワークディレクトリ=/data/mastermha/cluster1/ マネージャログ=/data/mastermha/cluster1/manager.log リモートワークディレクトリ=/data/mastermha/cluster1/ ssh_user=ルート repl_user=リプラスユーザー repl_password=再パスワード ping_interval=1 #1秒ごとにチェック [server1] ホスト名=192.168.0.7 candidate_master=1 #マスターノードになることができる [server2] ホスト名=192.168.0.8 candidate_master=1 #マスターノードになれる [server3] ホスト名=192.168.0.9 [root@manager ~]# masterha_check_ssh --conf=/etc/mha/cluster1.cnf #sshキー環境を確認します。すべてのSSH接続テストが正常に合格しました。 [root@manager ~]# masterha_check_repl --conf=/etc/mha/cluster1.cnf #MySQL ステータスを確認します。MySQL レプリケーションの健全性は正常です。 [root@manager ~]# yum インストール画面 -y [root@manager ~]# screen -S mha #mha はフォアグラウンドで動作するプロセスであり、ターミナルを使用してリアルタイムで検出することはできません [root@manager ~]# masterha_manager --conf=/etc/mha/cluster1.cnf #監視を開始します 2) マスターノード [root@master ~]# yum install mha4mysql-node-0.56-0.el6.noarch.rpm -y #ノードパッケージをインストールします [root@master ~]# vim /etc/my.cnf [mysqld] サーバーID=1 ログビン binlog_format=行 スキップ名解決 [root@master ~]# systemctl mariadbを起動します MariaDB [(なし)]> GRANT REPLICATION SLAVE ON *.* TO repluser@'192.168.0.%' IDENTIFIED BY 'replpass'; #マスタースレーブレプリケーションアカウントを作成します。このアカウントは、マスターに切り替える任意のノードに対して作成できます。MariaDB [(なし)]> SHOW MASTER LOGS; +--------------------+------------+ | ログ名 | ファイルサイズ | +--------------------+------------+ | mariadb-bin.000001 | 401 | +--------------------+------------+ MariaDB [(なし)]> GRANT ALL ON *.* TO mhauser@'192.168.0.%' IDENTIFIED BY 'mhapass'; #mha管理ユーザーを作成し、すべてのノードがこのアカウントを同期していることを確認します 3) スレーブノード [root@slave ~]# yum install mha4mysql-node-0.56-0.el6.noarch.rpm -y [root@slave ~]# vim /etc/my.cnf [mysqld] 読み取り専用=1 ログビン binlog_format=行 サーバーID=2 リレーログパージ=0 スキップ名解決=1 [root@slave ~]# systemctl mariadbを起動します MariaDB [(なし)]> 'replpass' によって識別される repluser@'192.168.0.%' に *.* のレプリケーション スレーブを許可します。 MariaDB [(なし)]> マスターを変更する -> MASTER_HOST='192.168.0.7', #マスターノードは0.7 -> MASTER_USER='repluser', -> MASTER_PASSWORD='replpass', -> マスターポート=3306、 -> MASTER_LOG_FILE='mariadb-bin.000001', -> MASTER_LOG_POS=401、 -> MASTER_CONNECT_RETRY=10; MariaDB [(なし)]> START SLAVE; 4) スレーブ2ノード [root@slave2 ~]# yum install mha4mysql-node-0.56-0.el6.noarch.rpm -y [root@slave2 ~]# vim /etc/my.cnf [mysqld] サーバーID=3 読み取り専用=1 リレーログパージ=0 スキップ名解決=1 [root@slave2 ~]# systemctl mariadbを起動します MariaDB [(なし)]> マスターを変更する -> MASTER_HOST='192.168.0.7', -> MASTER_USER='repluser', -> MASTER_PASSWORD='replpass', -> マスターポート=3306、 -> MASTER_LOG_FILE='mariadb-bin.000001', -> MASTER_LOG_POS=401、 -> MASTER_CONNECT_RETRY=10; MariaDB [(なし)]> START SLAVE; 4) テスト マスターサービスが停止する場合: [root@master ~]# systemctl stop mariadb MariaDB [(none)]> SHOW SLAVE STATUS\G コマンドをスレーブ 2 で実行し、Master_Server_Id: 2 を確認します。 説明: 切り替えに成功しました 4. MHAモニタリングがオンラインに復帰 障害が発生したマスターを修復してオンラインに戻し、現在のマスターノードのスレーブになるように手動で構成します [root@master ~]# systemctl start mariadb MariaDB [(なし)]> マスターを変更する -> MASTER_HOST='192.168.0.8', #マスターホストは0.8 -> MASTER_USER='repluser', -> MASTER_PASSWORD='replpass', -> マスターポート=3306、 -> MASTER_LOG_FILE='mariadb-bin.000001', -> MASTER_LOG_POS=482、 -> MASTER_CONNECT_RETRY=10; MariaDB [(なし)]> START SLAVE; 管理ノード: [root@manager ~]# スクリーン -S mha [root@manager ~]# masterha_manager --conf=/etc/mha/cluster1.cnf #監視を再開する 2. ガレラクラスターGalera Cluster: Galera プラグインを統合した MySQL クラスターは、データ共有がなく冗長性が高い新しいタイプの高可用性ソリューションです。現在、Galera Cluster には、Percona Xtradb Cluster と MariaDB Cluster の 2 つのバージョンがあります。Galera 自体はマルチマスター機能を備えており、マルチマスター クラスター アーキテクチャを採用しています。堅牢で、データの一貫性、整合性、高パフォーマンスにおいて優れたパフォーマンスを発揮する高可用性ソリューションです。 3 つのノードがクラスターを形成します。一般的なマスター スレーブ アーキテクチャとは異なり、これらはすべてマスター ノードになることができます。3 つのノードは同等であり、マルチマスター アーキテクチャと呼ばれます。クライアントがデータを書き込むか読み取る場合、どのインスタンスに接続するかは関係ありません。読み取られるデータは同じです。特定のノードに書き込んだ後、クラスターは新しいデータを他のノードに同期します。このアーキテクチャはデータを共有せず、冗長性の高いアーキテクチャです。 特性:
動作原理: 公式ドキュメントを参照してください: http://galeracluster.com/documentation-webpages/galera-documentation.pdf http://galeracluster.com/documentation-webpages/index.html https://mariadb.com/kb/en/mariadb/getting-started-with-mariadb-galera-cluster/ 少なくとも 3 つのノードが必要です。mariadb-server パッケージをインストールできません。特定のパッケージをインストールする必要があります。 Galera Clusterの実装 清華大学オープンソースミラーソース: https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-5.5.60/yum/centos7-amd64/ # vim /etc/yum.repos.d/mariadb_galera_server.repo [マリアdb] 名前=mariadb_galera_server.repo ベースURL=https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-5.5.60/yum/centos7-amd64/ gpgcheck=0 # yum で MariaDB-Galera-server をインストールします -y 1)mysql-1 [root@mysql-1 ~]# vim /etc/my.cnf.d/server.cnf [ガレラ] wsrep_provider=/usr/lib64/galera/libgalera_smm.so wsrep_cluster_address="gcomm://192.168.0.7,192.168.0.8,192.168.0.9" #ここですべてのIPを定義します binlog_format=row デフォルトストレージエンジン=InnoDB innodb_autoinc_lock_mode=2 バインドアドレス=0.0.0.0 wsrep_cluster_name = 'my_wsrep_cluster' wsrep_node_name = 'node1' wsrep_node_address = '192.168.0.7' 2) MySQL 2 の場合 [root@mysql-2 ~]# vim /etc/my.cnf.d/server.cnf [ガレラ] wsrep_provider=/usr/lib64/galera/libgalera_smm.so wsrep_cluster_address="gcomm://192.168.0.7,192.168.0.8,192.168.0.9" binlog_format=行 デフォルトストレージエンジン=InnoDB innodb_autoinc_lock_mode=2 バインドアドレス=0.0.0.0 wsrep_cluster_name = 'my_wsrep_cluster' wsrep_node_name = 'node2' wsrep_node_address = '192.168.0.8' 3) MySQL 3.0 [root@mysql-3 ~]# vim /etc/my.cnf.d/server.cnf [ガレラ] wsrep_provider=/usr/lib64/galera/libgalera_smm.so wsrep_cluster_address="gcomm://192.168.0.7,192.168.0.8,192.168.0.9" binlog_format=行 デフォルトストレージエンジン=InnoDB innodb_autoinc_lock_mode=2 バインドアドレス=0.0.0.0 wsrep_cluster_name = 'my_wsrep_cluster' wsrep_node_name = 'node3' wsrep_node_address = '192.168.0.9' 4) 開始 [root@mysql-1 ~]# /etc/init.d/mysql start --wsrep-new-cluster #最初の起動時にこのパラメータを追加します [root@mysql-2 ~]# /etc/init.d/mysql start #後続のサービスは直接起動できます [root@mysql-3 ~]# /etc/init.d/mysql start 5) テスト いずれかのノードでデータベースを操作すると、他のノードも同期して操作します。同じレコードを同時に操作した場合、1 つのノードのみが成功します。 6) 作業状況を確認する MariaDB [(なし)]> 'wsrep_%' のような変数を表示\G MariaDB [(なし)]> SHOW STATUS LIKE 'wsrep_%'\G MariaDB [(なし)]> SHOW STATUS LIKE 'wsrep_cluster_size'; +--------------------+-------+ | 変数名 | 値 | +--------------------+-------+ | wsrep_cluster_size | 3 | #クラスター内にオンラインのノードが 3 つあります+--------------------+-------+ これで、MySQL シリーズ 14: MySQL 高可用性実装に関する記事は終了です。MySQL 高可用性実装の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: さまざまなブラウザに対応するためにCSSで指定フォント@font-faceを導入する際の問題
>>: 空のパスがページのパフォーマンスに与える影響に対する解決策
目次推測する事例:理解を深める参照する後で忘れないように、キーワード infer をメモしておきます...
ウェブページを作成するときに、フォームを挿入した後、フォームの上下に空白行が表示されることがよくあり...
会社が現在使用しているソリューションを確認するためにバックエンドにログインしました。使用される FT...
Linux に puppeteer をインストールするときに、次の問題が発生する可能性があります。こ...
目次Vue 再帰コンポーネントドラッグイベント最近、Vue を使用して、ドラッグ可能なツリー構造図と...
目次1. コンポーネントの紹介2. コンポーネントの内部構造とロジック1. コード組織構造2. マッ...
目次前面に書かれたルータ.jsonルート生成メニュー生成効果要約する前面に書かれたルートを繰り返し記...
1.ターミナルに入ったらPHPのバージョンを確認するphp -v出力は次のようになります。 PHP ...
MySQL公式サイトのzipファイルのダウンロードリンク https://dev.mysql.co...
WEB アプリケーションのページでは、テーブルがよく使用されます。列の数が限られているため、各列のコ...
導入MySQL データベースの読み取りと書き込みの分離を設定すると、データベースに対する書き込み操作...
1. 概要MySQL データベースの日常的な操作とメンテナンスにおいて、ユーザーが誤ってデータを削...
目次標準コミットメッセージの重要性コミットするコミットリント依存関係をインストールする.commit...
目次1. --skip-grant-tables 経由で取得する1.1 my.conf を変更し、新...
操作については、こちらの公式ドキュメントを参照してください。インストール1. 古いバージョンの do...