MySQLの高可用性
(1)MMM:MySQLのマルチマスターレプリケーションマネージャは、MySQLマスター・マスター・レプリケーションマネージャは、MySQLのレプリケーションとフェイルオーバーを監視するために使用されるスクリプトの柔軟なセット、perlのベースの実装である、とMySQLマスター・マスター・レプリケーションを管理することができます構成(1つのノードのみ書き込み可能です)
公式サイト:http://www.mysql-mmm.org
https://code.google.com/archive/p/mysql-master-master/downloads
(2)MHA:マスター高可用性、マスターノードの監視、他のノードへの自動フェールオーバー;達成するためのマスタースレーブのレプリケーションに基づいて、新しいプライマリノードにノードからエレベーターで、また実現してクライアントを必要とし、MHAは現在、マルチマスタからの主支持基盤である、MHAを構築するため、要件コピークラスタには、少なくとも3台のデータベース・サーバを持っている必要があり、その1からの主2がマスターとして動作し、1がバックアップマスターとして動作し、他の一つは、マシンのコストを考慮の外に、淘宝網は、淘宝網TMHAを形質転換されている、ライブラリーとして働きすでにマスタースレーブをサポートしています
公式サイト:HTTPS://code.google.com/archive/p/mysql-master-ha/
(3)ガレラクラスター:wsrep(ライトレプリケーションの設定と拡張MySQLの)
グローバルな合意にwsrepコピーによって達成;任意のノード書き込みを読んで、それがコピーマスター、マルチマスターリーダーを必要としません。
(4)GR(グループレプリケーション):グループ公式MySQLのレプリケーション・テクノロジー(技術のMySQLの5.7.17導入)、技術のPaxosアルゴリズムベースのレプリケーションネイティブ
MHA作品
マスターの崩壊から1格納するバイナリ・イベント・ログ(バイナリログイベント)ダウン スレーブ最新の更新プログラムを含む2識別 他のスレーブのリレーログ差3(リレーログ)の応用 4マスターのバイナリログからイベントを保存します(binlogのイベント) 新しいマスターにスレーブをアップグレード5 6新しいマスター・レプリケーションに接続された他のスレーブは、
1、環境の準備
ホスト:192.168.34.105を監視し、プライマリサーバのステータス
ホストB:マスター192.168.34.101
ホストC:サーバーからの1 192.168.34.102
ホストD:サーバから2 192.168.34.103
2、からの3以上を確保するため、メインサーバー
注意点:
①各ノードが開いているバイナリに必要とログを中継している、主はダウンになりますので、マスタマシンの修復が完了したとき、あなたはリレーログが必須であるので、スレーブとして使用し続けることができ、トップ、ダウンタイムからもメインでバイナリログも必要であるので、ベース
②各ノードからその表示するために有効にする必要があり、読み取り専用属性を、そして近いrelay_log_purgeの 機能リレーログのクリーンアップ
各こと③のMySQL注意サーバIDは同じにすることはできません
サーバーからのマスター設定ファイルの設定を開始
Bのマスター構成
VIMな/etc/my.cnf [mysqldを】 サーバー-ID = 1サービスID log_bin = /データ/ logbin / MySQLの-binパスは、バイナリログを指定しました バイナリログの行に格納されているbinlog_format = ROW スキップ-名前解決は、名前にIPアドレスを解決しません
サーバからコンフィギュレーションファイルを変更C
VIMな/etc/my.cnf [mysqldを】 サーバID = 2 リードオンリー log_bin binlog_format =行 スキップ-名前解決 relay_log_purge = 0がデフォルト明らかログリレーで、削除しないことを選択します
サーバから設定ファイルを変更するD
[mysqldを】 サーバID = 3 リードオンリー スキップ-名前解決 relay_log_purge = 0 log_bin binlog_format =行
あなたはマスタースレーブのレプリケーションを構成した後、3台のサーバが再起動されています
systemctl再起動mariadb
実験のバイナリ・ログ・ファイルを実行する前にクリアするには、生産は使用しないでください
MariaDB [(なし)]>リセットマスタ。
プライマリサーバB上の権限を与えられたすべてのユーザーを作成し、それがターゲット・ユーザー・アカウントのマスターノードとして機能することができます
MariaDB [(なし)]> *の全付与* 'magedu「によって識別' mhauser@'192.168.34.%します。
次に、ユーザーを作成し、マスターサーバBをコピーする許可を与えます
MariaDB *の[(なし)]>グラントレプリケーションスレーブ* CentOSの '「によって識別' rpluser@'192.168.34.%します。
スタートは、サーバスレッドCからコピー
MariaDB [(なし)]> CHANGE MASTER TO - > MASTER_HOST = '192.168.34.101' - > MASTER_USER = 'RPLUSER' - > MASTER_PASSWORD = 'CentOSの' - > MASTER_PORT = 3306、 - > MASTER_LOG_FILE = 'mysqlの-bin.000001'、 - > MASTER_LOG_POS = 245。
Cスレーブサーバから開きます
スタートスレーブ
サーバDから開くとスレーブレプリケーションのスレッド
オープンスレッドを複製するためにMariaDB [(なし)]> [変更マスタ - > MASTER_HOST = '192.168.34.101' - > MASTER_USER = 'RPLUSER' - > MASTER_PASSWORD = 'CentOSの' - > MASTER_PORT = 3306、 - > MASTER_LOG_FILE = 'mysqlの-bin.000001'、 - > MASTER_LOG_POS = 245。 クエリOK、影響を受けた0行(0.42秒) MariaDB [(なし)]> MariaDB [(なし)]>スレーブ開始。开启スレーブ クエリOK、影響を受けた0行(0.00秒)
マスタースレーブレプリケーションを確認します
サーバーB上のマスタデータベースを導入し、その結果を参照してください
[ルート@ centos7〜] #mysql <hellodb_innodb.sqlデータベースに MariaDB [(なし)]>ショーデータベース; + -------------------- + | データベース| + -------------------- + | INFORMATION_SCHEMA | | hellodb | | mysqlの| | performance_schema | | テスト| + -------------------- +
データベースがコピーされました。この時点でCとD内のサーバーからの眺め
MariaDB [(なし)]>ショーデータベース; + -------------------- + | データベース| + -------------------- + | INFORMATION_SCHEMA | | hellodb | | mysqlの| | performance_schema | | テスト| + -------------------- +
図3は、MHAの構成が調製しました
(1)MHAインストール
MHAソフトウェアは二つの部分、マネージャーおよびノードキットキットで構成されてい
Managerキットには、以下のツールが含まれています。 masterha_check_sshチェックMHA SSHの設定ステータス MySQLのレプリケーションの状態を確認masterha_check_repl MHAを開始masterha_manger masterha_check_statusはMHAの現在の実行状態を検出します masterha_master_monitorマスターがダウンしているかどうかを検出 masterha_master_switchフェイルオーバー(自動または手動) サーバーの構成情報を追加または削除masterha_conf_host
ホストAに送信される2つのパケットをインストールすることがRZ:
mha4mysqlマネージャ-0.56-0.el6.noarch.rpm
mha4mysqlノード-0.56-0.el6.noarch.rpm
二つのパッケージで管理ノードにマウント:
mha4mysqlマネージャ mha4mysql-node
管理対象ノードのインストールでは:
mha4mysql-node
パッケージには、MHAホストをマウント:
[ルート@ centos6〜] #yum mha4mysqlインストール* -y
パケットB、C、Dのホストにインストールmha4mysqlノード
[ルート@ centos777data] #yum象使い-コレクション - コード生成 - プラグインをインストール-y
(2)各ノード鍵認証に実装されています
氏に生成されたKey認証、公開鍵と秘密鍵のペアに基づいて、ホスト
[ルート@ centos6〜]#sshを-keygenは
ホストA上の自身の公開鍵ファイルを生成します
[ルート@ centos6〜]#sshをコピー-ID 192.168.34.105
他のサーバーにコピーされたカタログ全体生成した公開鍵ファイル
[ルート@ centos6〜] #scp -rp /root/.ssh 192.168.34.101:/root/マスターサーバーBにコピー [ルート@ centos6〜] #scp -rp /root/.ssh 192.168.34.102:/root/ Cにサーバーからコピー [ルート@ centos6〜] #scp -rp /root/.ssh 192.168.34.103:/root/ Dにサーバーからコピー
MHAは、設定ファイルの管理を定義したファイルのディレクトリを作成し、ホストA関連の設定ファイルを設定します
[ルート@ centos6〜] #mkdirの/ etc / MHA / MHA新しいディレクトリ、店舗・コンフィギュレーション・ファイル・パスに [ルート@ centos6〜] #vim /etc/mha/cluster1.conf新しいクラスター1、CNFの設定ファイルと構成関連データの内部 [サーバーのデフォルト] 管理ユーザのユーザ= mhauser# パスワード= mageduパスワード管理 manager_workdir = /データ/ mastermha /クラスタ1 / MHAワーキングパス manager_log = /データ/ mastermha /クラスタ1 /されるManager.log MHAログファイル remote_workdir各リモートホストについて= /データ/ mastermha /クラスタ1 /作業ディレクトリ ssh_user =ルート repl_user = RPLUSERデータベース名 repl_password = CentOSのパスワードデータベース 長さ= 1つのping時間ping_interval [SERVER1] プライマリサーバのホスト名= 192.168.34.101 IPアドレス candidate_master = 1 [サーバ2] プライマリサーバ候補のホスト名= 192.168.34.102 IPアドレス candidate_master = 1 [server3の】 ホスト名= 192.168.34.103
検出前にサービスを開始します
すべてのノードでのSSHキーの間の相互認証を実現するために、
[ルート@ centos7〜] #masterha_check_ssh --conf =の/ etc / MHA / cluster1.conf 水曜日11月27日10時41分04秒2019 - グローバルコンフィギュレーションファイル/etc/masterha_default.cnfが見つからない[警告]。スキップ。 水曜日11月27日10時41分04秒2019 - [情報] /etc/mha/cluster1.confからアプリケーションのデフォルト設定を読みます... 水曜日11月27日10時41分04秒2019 - [情報] /etc/mha/cluster1.confからサーバー構成を読みます... 水曜日11月27日10時41分04秒2019 - [情報] SSH接続テストを開始。.. 水曜日11月27日午前十時41分05秒2019 - [デバッグ] 水11月27日10時41分04秒2019年 - [デバッグ] [email protected](192.168.34.102:22)に[email protected](192.168.34.101:22)からSSHを介して接続.. 水曜日11月27日午前十時41分05秒2019 - [デバッグ] [OK]をクリックします。 水11月27日十時41分05秒2019 - [デバッグ] [email protected](192.168.34.103:22)に[email protected](192.168.34.101:22)からSSHを介して接続.. 警告:永久既知のホストのリストに「192.168.34.103」(ECDSA)を加えました。 水曜日11月27日午前十時41分05秒2019 - [デバッグ] [OK]をクリックします。 水曜日11月27日10時41分06秒2019 - [デバッグ] 水11月27日10時41分04秒2019年 - [デバッグ] [email protected](192.168.34.101:22)に[email protected](192.168.34.102:22)からSSHを介して接続.. 水曜日11月27日午前十時41分05秒2019 - [デバッグ] [OK]をクリックします。 水11月27日十時41分05秒2019年 - [デバッグ] [email protected](192.168.34.103:22)に[email protected](192.168.34.102:22)からSSHを介して接続.. 水曜日11月27日10時41分06秒2019 - [デバッグ] [OK]をクリックします。 水曜日11月27日10時41分06秒2019 - [デバッグ] 水11月27日十時41分05秒2019年 - [デバッグ] [email protected](192.168.34.101:22)に[email protected](192.168.34.103:22)からSSHを介して接続.. 警告:永久既知のホストのリストに「192.168.34.103」(ECDSA)を加えました。 水曜日11月27日午前十時41分05秒2019 - [デバッグ] [OK]をクリックします。 水11月27日十時41分05秒2019年 - [デバッグ] [email protected](192.168.34.102:22)に[email protected](192.168.34.103:22)からSSHを介して接続.. 水曜日11月27日10時41分06秒2019 - [デバッグ] [OK]をクリックします。 水曜日11月27日10時41分06秒2019 - 。[情報]はすべてのSSH接続テストが成功した検証を通過したが成功しています
レプリケーションのクラスタ接続の設定パラメータがOKであることを確認してください
[ルート@ centos7〜] #masterha_check_repl --conf =の/ etc / MHA / cluster1.conf
注:このアーキテクチャは、任意のノードから、おそらくマスターノードになりますので、アカウントを作成する必要がありますので、テストは、ノードからのアカウントではないかもしれない場合は文句を言います。
したがって、限りこことして母校のノードで再度実行するに以下:
MariaDB [(なし)]> *の全付与* 'magedu「によって識別' mhauser@'192.168.34.%します。
スタートMHA
(1)オープンMHAサービス、フォアグラウンドでコマンドを実行するには、この時間
[ルート@ centos7〜] #masterha_manager --conf =の/ etc / MHA / cluster1.conf
(2)は、この時間MHAの状態をチェック
[ルート@ centos7〜] #tail /data/mastermha/cluster1/manager.log -f 192.168.34.101(192.168.34.101:3306)(現在のマスター) + - 192.168.34.102(192.168.34.102:3306) + - 192.168.34.103(192.168.34.103:3306) 水曜日11月27日午前11時○○分13秒2019は - [警告] master_ip_failover_scriptが定義されていません。 水曜日11月11時00分13秒2019年27 - [警告] shutdown_scriptが定義されていません。 水曜日11月27日11時00分13秒2019から1秒間隔[情報]を設定し、マスターのping。 水曜日11月27日午前11時○○分13秒2019年には - [警告] secondary_check_scriptが定義されていません。それは非常にそれが2つの以上のルートからマスター到達可能性をチェックするために設定することをお勧めします。 水曜日11月27日午前11時○○分13秒2019 - [情報] 192.168.34.101上のpingヘルスチェックを開始(192.168.34.101:3306).. 水曜日11月27日午前11時○○分13秒2019 - [情報]のPing(SELECT)はMySQLが応答しないまで...この状態は、成功するために見ることができます待って、成功した、MySQLのまで応答しません
MHAテストテストフェイルオーバー
(1)機械Bダウンマスタ
プライマリサーバとしてサーバから持ち上げ、このときAのサーバの状態は、電流監視MHA出口、でモニタ上に表示(2)
[ルート@ centos7〜] #masterha_manager --conf =の/ etc / MHA / cluster1.conf 水曜日11月27日午前11時00分07秒2019 - グローバルコンフィギュレーションファイル/etc/masterha_default.cnfが見つからない[警告]。スキップ。 水曜日11月27日午前11時00分07秒2019 - [情報] /etc/mha/cluster1.confからアプリケーションのデフォルト設定を読みます... 水曜日11月27日午前11時00分07秒2019 - [情報] /etc/mha/cluster1.confからサーバー構成を読みます... 作成/データ/ mastermha /クラスタ1が存在しない場合は... [OK]をクリックします。 出力ディレクトリをチェックすると、アクセス可能かどうか..です OK。 ビンログはmariadb-bin.000001までの/ var / libに/ mysqlので発見しました 水曜日11月27日11時22分28秒2019 - グローバルコンフィギュレーションファイル/etc/masterha_default.cnfが見つからない[警告]。スキップ。 水曜日11月27日11時22分28秒2019 - [情報] /etc/mha/cluster1.confからアプリケーションのデフォルト設定を読みます... 水曜日11月27日11時22分28秒2019 - [情報] /etc/mha/cluster1.confからサーバー構成を読みます...
プライマリサーバとしてサーバから見ることができる。この点ビュー・トラブルシューティングログでは、(3)
[ルート@ centos7〜] #tail /data/mastermha/cluster1/manager.log 自動化された(非対話型)のフェールオーバーを開始しました。 最新のスレーブ192.168.34.102(192.168.34.102:3306は)回復のためのすべてのリレーログを持っています。 新しいマスターとして192.168.34.102(192.168.34.102:3306)を選択した。新しいマスターが、この時点で見ることができます192.168.34.102です 192.168.34.102(192.168.34.102:3306):OK:すべてのログを適用することに成功しました。 192.168.34.103(192.168.34.103:3306):このホストでは、最新のリレーログイベントがあります。 最新のスレーブからリレー差分ファイルを生成することに成功しました。 192.168.34.103(192.168.34.103:3306):OK:すべてのログを適用することに成功しました。スレーブは192.168.34.102(192.168.34.102:3306)から複製開始しました 192.168.34.102(192.168.34.102:3306):スレーブの情報をリセットすると、成功しました。 192.168.34.102(192.168.34.102:3306)にマスターフェイルオーバーが正常に完了しました。
コンテンツ内のビュー・ログは、この時点で確認することができ192.168.34.102の新しいマスターであります
[ルート@ centos7〜] #cat /data/mastermha/cluster1/manager.log 水曜日11月27日午前11時22分32秒2019 - [情報]新マスター192.168.34.102(192.168.34.102:3306)であります
この時点で、新しい読み取り専用のプライマリサーバがシャットダウンされている見ることができます
MariaDB [(なし)]> 'READ_ONLY' のような変数を表示。 + --------------- + ------- + | 変数名| バリュー| + --------------- + ------- + | READ_ONLY | OFF | + --------------- + ------- +
D点までサーバーからの眺めは、新しいプライマリサーバです(192.168.34.102)
MariaDB [(なし)]>ショースレーブ状態\ G。 *************************** 1行******************** ******* Slave_IO_State:イベントを送信するためにマスターを待っています MASTER_HOST:192.168.34.102 Master_User:RPLUSER MASTER_PORT:3306 Connect_Retry:60 MASTER_LOG_FILE:mariadb-bin.000001 Read_Master_Log_Pos:245 RELAY_LOG_FILE:mariadb-リレー-bin.000002 RELAY_LOG_POS:531 Relay_Master_Log_File:mariadb-bin.000001 Slave_IO_Running:はい Slave_SQL_Running:はい
注:プライマリサーバが復元される前に、あなたが倒れた場合、サーバから他のサーバはだけなので、他のエラー運転時のことを、サーバからより良いように回復することができ、このサーバーを指していません。
あなたがハングアップ本番環境での(1)、マスターノード、ノードからバックアップを作成するようにしてください、手動でノードからアップグレードしたバックアップファイルを保持しているマスターノード、およびログファイルを開始するために、そこから場所を指定コピー
(2)すべての自動変換が完了すると、すべての(複製健康)は常に起動しても大丈夫ではない検出されていない設定ファイルを変更しない限り、手動でマスターノードを修復する必要があります
(3)手動で再実行検出コマンドにノードからマスターノードを修正
masterha_check_repl --conf =の/ etc / MHA / cluster1.conf
(4)アップと成功の復旧で再度実行しています
masterha_manager --conf =の/ etc / MHA / cluster1.conf