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を導入する際の問題
>>: 空のパスがページのパフォーマンスに与える影響に対する解決策
1. はじめにSupervisor は Python で開発された汎用プロセス管理プログラムです。通...
Baota PanelのPHP7.3バージョンがZipArchiveをサポートしていないため、プログ...
Web ページを作成するときに、テーブルの幅が揃っていないという問題に遭遇することがよくあります。 ...
この記事では、MySQL 5.6.23のインストールと設定のチュートリアルを参考までに紹介します。具...
目次1. マージインターフェース1.1 非関数メンバー1.2 関数メンバー序文:今日お話ししたいのは...
Docker バージョン: [root@localhost gae_proxy]# docker バ...
目次最初のステップステップ2ステップ3ステップ4 Alipay 決済インターフェースへの接続に関する...
translate と transition は非常に強力で、習得するのは不可能だといつも感じていま...
私は、デスクトップ バージョンとサーバー バージョンの両方で、仮想マシンにさまざまなイメージを何度も...
プログラムサービスがgitlab ci/cdと統合されたk8sを使用してデプロイされている場合、gi...
MySQL の追加、削除、変更、クエリステートメント1. 練習シートを作成するここでの練習表は3つの...
質問特定の MySQL 接続について、それがどのクライアント プロセスからのものであるかをどのように...
この記事を読む前に、Volumes について予備知識を身に付けておいてください。詳細については、こち...
文字列を動的に連結する場合、文字連結を使用することが多いです。次のような連結の引用符の意味がわかりま...
準備1. GPUがCUDAをサポートしているかどうかを確認するlspci | grep -i nvi...