MHA 高可用性 MySQL データベースをデプロイする方法

目次

1. MHAのコンセプト

MHAの構成

MHAの特徴

MHA の仕組み

2. MySQL データベース MHA 高可用性のデプロイ

最初のステップは、すべてのファイアウォールとセキュリティ メカニズムをオフにすることです

2 番目のステップは、メインのデータベース構成ファイルを変更することです。

3 番目のステップは、スレーブ データベースの構成ファイルを変更することです。

ステップ 4: サービスを再起動する

ステップ 5: すべてのデータベース パスを最適化する

ステップ 6 すべてのデータベース ノードを承認する

ステップ 7 許可された接続をセットアップする

ステップ 8: 権限テーブルを更新する

ステップ 9 マスターノードを表示する

ステップ 10: スレーブ データベース ルールを設定する

ステップ 11: データベースから読み取り専用モードを設定する

ステップ 12 スレーブ データベース ノード情報の表示

ステップ 13 EPLE ソースをインストールする

ステップ 14 MHA 依存環境をインストールする

ステップ 15 ノードコンポーネントをインポートしてインストールする

ステップ 16 MHA マネージャー ノードにマネージャー コンポーネントをインストールします。

ステップ 17 すべてのデータベース ノードをパスワードなしの認証用に設定します。

ステップ 18 パスワードなしの認証用に 3 つのデータベースを設定する

ステップ 19 実行可能ファイルをコピーします

ステップ 20 スクリプト ファイルをコピーする

ステップ 21 スクリプト ファイルを変更する

ステップ 22 スクリプト ファイルの内容を変更する

ステップ 23: MHA ソフトウェア ディレクトリを作成し、設定ファイルをコピーする

ステップ 24 設定ファイルを変更する

ステップ 25: 仮想 IP を手動で有効にする

ステップ 26 SSH パスワードなし認証をテストする

ステップ 27: マスター/スレーブ接続をテストする

ステップ 28: マネージャーで MHA を開始する

ステップ 29 MHA ステータスを確認する

ステップ 30 MHA ログを表示する


1. MHAのコンセプト

MHA (マスター高可用性) は、MySQL 高可用性環境におけるフェイルオーバーおよびマスター/スレーブ レプリケーション ソフトウェアの優れたセットです。MHA の登場は、MySQL の単一点問題を解決することです。MySQL フェイルオーバー プロセス中、MHA は 0 ~ 30 秒以内にフェイルオーバー操作を自動的に完了します。MHA は、フェイルオーバー プロセス中にデータの一貫性を最大限に確保し、真の高可用性を実現します。

MHAの構成

  • MHA ノード (データ ノード) MHA ノードはすべての MySQL サーバー上で実行されます。

  • MHA マネージャー (管理ノード) MHA マネージャーは、複数のマスター/スレーブ クラスターを管理するために独立したマシンに展開できます。また、スレーブ ノードに展開することもできます。MHA マネージャーは、クラスター内のマスター ノードを定期的に検出します。マスターに障害が発生すると、最新のデータを持つスレーブを新しいマスターに自動的に昇格させ、他のすべてのスレーブを新しいマスターにリダイレクトできます。フェイルオーバー プロセス全体は、アプリケーションに対して完全に透過的です。

MHAの特徴

  • 自動フェイルオーバー プロセス中、MHA は、データが最大限失われないように、ダウンしたメイン サーバーからバイナリ ログを保存しようとします。

  • 準同期レプリケーションを使用すると、データ損失のリスクを大幅に軽減でき、1 つのスレーブのみが最新のバイナリ ログを受信した場合、MHA は最新のバイナリ ログを他のすべてのスレーブ サーバーに適用できるため、すべてのノードのデータの一貫性が保証されます。

  • 現在、MHA は 1 つのマスターと複数のスレーブのアーキテクチャをサポートしており、少なくとも 3 つのサービス、つまり 1 つのマスターと 2 つのスレーブをサポートしています。

MHA マネージャーは、複数セットのマスター/スレーブ レプリケーションを管理します。

MHA の仕組み

MHA の動作原理は次のように要約されます。

1. クラッシュしたマスターからバイナリ ログ イベント (binlog イベント) を保存します。 2. 最新の更新を含むスレーブ ログを特定します。 3. 差分リレー ログ (リレー ログ) を他のスレーブに適用します。 4. マスターから保存されたバイナリを適用します。 ログ イベント5. スレーブを新しいマスターに昇格します。 6. マスターに接続されている他のスレーブを複製します。

2. MySQL データベース MHA 高可用性のデプロイ

最初のステップは、すべてのファイアウォールとセキュリティ メカニズムをオフにすることです

命令:systemctl stop firewalld

systemctl ファイアウォールを無効にする

セットフォース0

2 番目のステップは、メインのデータベース構成ファイルを変更することです。

コマンド: vim /etc/my.cnf

3 番目のステップは、スレーブ データベースの構成ファイルを変更することです。

コマンド: vim /etc/my.cnf

ステップ 4: サービスを再起動する

コマンド: systemctl restart mysqld

ステップ 5: すべてのデータベース パスを最適化する

コマンド:ln -s /usr/local/mysql/bin/mysql /usr/sbin/

ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/

ステップ 6 すべてのデータベース ノードを承認する

コマンド: *.* 上のレプリケーション スレーブを、「パスワード」で識別される「myslave」@「ネットワーク セグメント」に許可します。

*.* 上のすべてのスレーブを「manager」によって識別される「mha」@「网セグメント」に付与します。

ステップ 7 許可された接続をセットアップする

コマンド:*.* に対するすべての権限を、'manager' によって識別された 'mha'@'master' に付与します。

*.* に対するすべての権限を「manager」によって識別される「mha」@「slave1」に付与します。

*.* に対するすべての権限を「manager」によって識別される「mha」@「slave2」に付与します。

ステップ 8: 権限テーブルを更新する

コマンド: 権限をフラッシュします。

ステップ 9 マスターノードを表示する

コマンド: マスターステータスを表示;

ステップ 10: スレーブ データベース ルールを設定する

コマンド: マスターを master_host='マスター データベース IP アドレス',master_user='myslave',master_password='123456',master_log_file='master-bin.000001',master_log_pos=1743; に変更します。 

ステップ 11: データベースから読み取り専用モードを設定する

命令:set global read_only=1;

ステップ 12 スレーブ データベース ノード情報の表示

命令:show slave status\G

ステップ 13 EPLE ソースをインストールする

命令:yum -y install epel-release --nogpgchec

ステップ 14 MHA 依存環境をインストールする

コマンド:yum install -y perl-DBD-MySQL \
perl-Config-Tiny \
perl-Log-Dispatch \
perl-Parallel-ForkManager \
perl-ExtUtils-CBuilder \
perl-ExtUtils-MakeMaker \
perl-CPAN

ステップ 15 ノードコンポーネントをインポートしてインストールする

コマンド: tar xf mha4mysql-node-0.57.tar.gz

cd mha4mysql-node-0.57

perl Makefile.PL

メイク&&メイクインストール

ステップ 16 MHA マネージャー ノードにマネージャー コンポーネントをインストールします。

コマンド:tar zxvf mha4mysql-manager-0.57.tar.gz
cd mha4mysql-manager-0.57
perl Makefile.PL
make && make install

ステップ 17 すべてのデータベース ノードをパスワードなしの認証用に設定します。

コマンド: ssh-keygen -t rsa             
ssh-copy-id マスター データベース IP
ssh-copy-id スレーブ データベース IP
ssh-copy-id スレーブ データベース IP

ステップ 18 パスワードなしの認証用に 3 つのデータベースを設定する

ステップ 19 実行可能ファイルをコピーします

コマンド: cp -rp /opt/mha4mysql-manager-0.57/samples/scripts /usr/local/bin

ステップ 20 スクリプト ファイルをコピーする

コマンド:cp /usr/local/bin/scripts/master_ip_failover /usr/local/bin

ステップ 21 スクリプト ファイルを変更する

コマンド: vim /usr/local/bin/master_ip_failover 

ステップ 22 スクリプト ファイルの内容を変更する

内容: my $vip = '192.168.80.200'; #vip のアドレスを指定
my $brdc = '192.168.80.255'; #vip のブロードキャスト アドレスを指定
my $ifdev = 'ens33'; #バインドされているネットワーク カードを指定vip
my $ key = '1'; #vip によってバインドされた仮想ネットワーク カードのシリアル番号を指定します
my $ssh_start_vip = "/sbin/ifconfig ens33:$key $vip"; #この変数の値を ifconfig ens33:1 192.168 として表します.80.200
my $ssh_stop_vip = "/sbin/ifconfig ens33:$key down"; #この変数の値を ifconfig ens33:1 192.168.80.200 down
my $exit_code = 0; #終了ステータス コードが 0 であることを指定します

#my $ssh_start_vip = "/usr/sbin/ip addr add $vip/24 brd $brdc dev $ifdev label $ifdev:$key;/usr/sbin/arping -q -A -c 1 -I $ifdev $vip ;iptables -F;";
#my $ssh_stop_vip = "/usr/sbin/ip addr del $vip/24 dev $ifdev label $ifdev:$key";


GetOptions(
'command=s' => \$command,
'ssh_user=s' => \$ssh_user,
'orig_master_host=s' => \$orig_master_host,
'orig_master_ip=s' => \$orig_master_ip,
'orig_master_port=i ' => \$orig_master_port,
'new_master_host=s' => \$new_master_host,
'new_master_ip=s' => \$new_master_ip,
'new_master_port=i' => \$new_master_port,
);

&main(); を終了します。

サブメイン{

print "\n\nIN スクリプト テスト====$ssh_stop_vip==$ssh_start_vip===\n\n";

if ( $command eq "stop" || $command eq "stopssh" ) {

私の$exit_code = 1;
eval { print "古いマスターで VIP を無効にしています: $orig_master_host \n"; &stop_vip(); $exit_code = 0; }; if ($@) { warn "エラーが発生しました: $@\n"; $exit_code を終了します。$exit_code を終了します} elsif ( $command eq "start" ) {










私の $exit_code = 10;
eval { print "新しいマスターで VIP - $vip を有効にします - $new_master_host \n"; &start_vip(); $exit_code = 0; }; if ($@) { $@ に警告します。$exit_code を終了します。$exit_code を終了します} elsif ( $command eq "status" ) { print "スクリプトのステータスを確認しています。OK \n"; 0番出口; } else { &usage(); 1番出口。sub start_vip() { `ssh $ ssh_user \@$new_master_host \" $ssh_start_vip \"`; ## old_masterサブの VIP を無効にする単純なシステム コール stop_vip() {
























`ssh $ssh_user\@$orig_master_host \" $ssh_stop_vip \"`;
}

sub 使用法 { print "使用法: master_ip_failover --command=start|stop|stopssh|status --orig_master_host=host --orig_master_ip=ip --orig_master_port=port --new_master_host=host --new_master_ip=ip --new_master_port=port\ん"; }


ステップ 23: MHA ソフトウェア ディレクトリを作成し、設定ファイルをコピーする

命令:mkdir /etc/masterha
cp /opt/mha4mysql-manager-0.57/samples/conf/app1.cnf /etc/masterha

ステップ 24 設定ファイルを変更する

コマンド: vim /etc/masterha/app1.cnf

コンテンツ:

[サーバーのデフォルト]
manager_log=/var/log/masterha/app1/manager.log
manager_workdir=/var/log/masterha/app1
master_binlog_dir=/usr/local/mysql/data
master_ip_failover_script=/usr/local/bin/master_ip_failover
master_ip_online_change_script= /usr/local/bin/master_ip_online_change
パスワード=マネージャー
ping_interval=1
リモート_ワークディレクトリ=/tmp
repl_password=123
repl_user=myslave
Secondary_check_script=/usr/local/bin/masterha_ Secondary_check -s 192.168.80.11 -s 192.168.80.12
shutdown_script=""
ssh_user= root
ユーザー=mha

[server1]
ホスト名=メインデータベース IP
ポート=3306

[server2]
candidate_master=1
check_repl_delay=0
hostname=スレーブデータベース IP
port=3306

[server3]
ホスト名=スレーブデータベース IP
ポート=3306

ステップ 25: 仮想 IP を手動で有効にする

コマンド: /sbin/ifconfig ens33:1 192.168.80.200/24

ステップ 26 SSH パスワードなし認証をテストする

命令:masterha_check_ssh -conf=/etc/masterha/app1.cnf

ステップ 27: マスター/スレーブ接続をテストする

命令:masterha_check_repl -conf=/etc/masterha/app1.cnf

ステップ 28: マネージャーで MHA を開始する

コマンド:nohup masterha_manager --conf=/etc/masterha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/masterha/app1/manager.log 2>&1 &

ステップ 29 MHA ステータスを確認する

命令:masterha_check_status --conf=/etc/masterha/app1.cnf

ステップ 30 MHA ログを表示する

コマンド: cat /var/log/masterha/app1/manager.log | grep "現在のマスター"

おすすめ

転載: blog.csdn.net/Liu_Fang_Hong/article/details/131897349