MySQL MHA の高可用性構成とフェイルオーバーの詳細な導入手順

MySQL MHA の高可用性構成とフェイルオーバーの詳細な導入手順

1. MHAの紹介

1. MHAとは何ですか?

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

2. MHAの構成

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

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

3. MHAの特徴

  • 自動フェイルオーバー プロセス中、MHA はダウンしたプライマリ サーバーからバイナリ ログを保存して、データが可能な限り失われないようにします。
  • 半同期レプリケーションを使用すると、データ損失のリスクを大幅に軽減できます。 1 つのスレーブのみが最新のバイナリ ログを受信した場合、MHA は最新のバイナリ ログを他のすべてのスレーブ サーバーに適用できるため、すべてのノードでデータの一貫性が確保されます。
  • 現在、MHA は、最低 3 台のサーバー (つまり、1 台のマスターと 2 台のスレーブ) を備えた 1 マスター複数スレーブ アーキテクチャをサポートしています。

ここに画像の説明を挿入

2. MySQL MHAをビルドする

1. 実験的なアイデア:

1. MHAアーキテクチャ

1) データベースのインストール
2) 1人の主人と2​​人の奴隷
3) MHA建設

2.故障シミュレーション

1) メインデータベースに障害が発生する
2) 代替マスターデータベースがマスターデータベースになる
3) 元の障害が発生したマスターデータベースが回復し、MHAに再参加してスレーブデータベースになります。

(II)実験手順

MHA マネージャー ノード サーバー: CentOS7.4 (64 ビット) manager/192.168.126.10、MHA ノードとマネージャー コンポーネントをインストール マスター ノード サーバー: CentOS7.4 (64 ビット) mysql1/192.168.126.20、mysql5.7、MHA ノード コンポーネントをインストール スレーブ 1 ノード サーバー: CentOS7.4 (64 ビット) mysql2/192.168.126.30、mysql5.7、MHA ノード コンポーネントをインストール スレーブ 2 ノード サーバー: CentOS7.4 (64 ビット) mysql3/192.168.126.40、mysql5.7、MHA ノード コンポーネントをインストール

各マシンのファイアウォールを無効にする

systemctl 停止 ファイアウォール
systemctl ファイアウォールを無効にする
強制0を設定する

1. mysql15.7をインストールする

マスター、スレーブ1、スレーブ2ノードにmysql5.7をインストールします(mysqlのインストールの詳細については、以前のブログ投稿を参照してください)

2. マスター、スレーブ1、スレーブ2ノードのホスト名を変更する

ホスト名ctl ホスト名の設定 Mysql1
ホスト名ctl ホスト名の設定 Mysql2
ホスト名ctl ホスト名の設定 Mysql3

ここに画像の説明を挿入

3. マスター、スレーブ1、スレーブ2ノードのMySQLメイン構成ファイル/etc/my.cnfを変更します。
##マスターノード##

vim /etc/my.cnf
[mysqld]
サーバーID = 1
log_bin = マスタービン
ログスレーブ更新 = true

systemctl で mysqld を再起動します。

ここに画像の説明を挿入

##スレーブ1、スレーブ2ノード##

vim /etc/my.cnf
server-id = 2 #3つのサーバーのサーバーIDは同じにできません log_bin = master-bin
リレーログ = リレーログビン
リレーログインデックス = スレーブリレービンインデックス

systemctl で mysqld を再起動します。

ここに画像の説明を挿入

4.マスター、スレーブ1、スレーブ2ノードに2つのソフトリンクを作成します。

: := mysql /usr/local/mysql/bin/mysql /usr/sbin/ を使います。
ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/

5.マスター 1 台とスレーブ 2 台で MySQL を構成する(1)すべてのデータベースノードはmysqlによって承認されています

mysql -uroot -p
*.* のレプリケーション スレーブを 'myslave'@'192.168.126.%' (識別名 '123') に付与します。#スレーブ データベースの同期では、*.* のすべての権限を 'mha'@'192.168.126.%' (識別名 'manager') に付与します。#manager では、*.* のすべての権限を 'mha'@'Mysql1' (識別名 'manager') に付与します。#スレーブ ライブラリがホスト名を使用してマスター ライブラリに接続できないようにします。*.* のすべての権限を 'mha'@'Mysql2' (識別名 'manager') に付与します。
'manager' によって識別される 'mha'@'Mysql3' に *.* のすべての権限を付与します。
権限をフラッシュします。

ここに画像の説明を挿入

(2)マスターノード上のバイナリファイルと同期ポイントを表示する
マスターステータスを表示します。

ここに画像の説明を挿入

(3)スレーブ1ノードとスレーブ2ノードで同期操作を実行する

マスターをmaster_host='192.168.126.20'、master_user='myslave'、master_password='123'、master_log_file='master-bin.000001'、master_log_pos=1747に変更します。 

スレーブを起動します。

(4)スレーブ1ノードとスレーブ2ノードでデータ同期結果を確認する

スレーブステータスを表示\G		
// IO スレッドと SQL スレッドの両方が Yes であり、同期が正常であることを確認します。
スレーブIO実行中: はい
スレーブSQL実行中: はい

ここに画像の説明を挿入

(5)両方のスレーブライブラリを読み取り専用モードに設定する必要があります。

グローバル read_only=1 を設定します。 

ここに画像の説明を挿入

6. MHAソフトウェアをインストールする(1) すべてのサーバーにMHA依存環境をインストールする。まずepelソースをインストールする

yum インストール epel-release --nogpgcheck -y
yum インストール -y perl-DBD-MySQL \
perl-Config-Tiny \
perl-ログディスパッチ \
perl-Parallel-ForkManager \
perl-ExtUtils-CBuilder \
perl-ExtUtils-MakeMaker \
パール - CPAN

(2)MHAソフトウェアパッケージをインストールします。まずまず、すべてのサーバーにノード コンポーネントをインストールする必要があります。これはオペレーティング システムのバージョンごとに異なります。ここでは、CentOS7.4 ではバージョン 0.57 を選択する必要があります。
マネージャはノード コンポーネントに依存しているため、最初にノード コンポーネントをすべてのサーバーにインストールし、最後にマネージャ コンポーネントを MHA マネージャ ノードにインストールする必要があります。

インストール パッケージ:

ノードコンポーネントはすべてのサーバーにインストールする必要があります

cd /opt
tar zxvf mha4mysql-node-0.57.tar.gz
mha4mysql-node-0.57 を CD します
perl メイクファイル.PL
作成 && インストール

(3) MHAマネージャーノードにマネージャーコンポーネントをインストールする

cd /opt
tar zxvf mha4mysql-manager-0.57.tar.gz
mha4mysql-manager-0.57 を CD します
perl メイクファイル.PL
作成 && インストール

マネージャー コンポーネントがインストールされると、主に次のツールを含むいくつかのツールが /usr/local/bin の下に生成されます。

  • masterha_check_ssh MHAのSSH設定を確認する
  • masterha_check_repl MySQLレプリケーションステータスを確認する
  • masterha_mangerはマネージャースクリプトを起動します
  • masterha_check_statusは現在のMHAの実行ステータスをチェックします
  • masterha_master_monitorはマスターがダウンしているかどうかを検出します
  • masterha_master_switch はフェイルオーバー(自動または手動)を制御します
  • masterha_conf_hostは設定されたサーバー情報を追加または削除します
  • masterha_stopはマネージャーをシャットダウンします

ここに画像の説明を挿入

#ノード コンポーネントがインストールされると、/usr/local/bin の下にいくつかのスクリプトが生成されます (これらのツールは通常、MHAManager スクリプトによってトリガーされ、手動操作は必要ありません)。主なものは次のとおりです。
save_binary_logsはマスターのバイナリログを保存してコピーします
apply_diff_relay_logs は差分リレーログイベントを識別し、差分イベントを他のスレーブに適用します。
filter_mysqlbinlog は不要な ROLLBACK イベントを削除します (MHA はこのツールを使用しなくなりました)

purge_relay_logs リレーログをクリアします(SQL スレッドをブロックしません)

ここに画像の説明を挿入

7.すべてのサーバーでパスワードレス認証を構成する

(1)マネージャーノード上のすべてのデータベースノードにパスワードフリー認証を設定する

ssh-keygen -t rsa #Enterキーを押し続ける ssh-copy-id 192.168.126.20
sshコピーID 192.168.126.30
sshコピーID 192.168.126.40 

ここに画像の説明を挿入

ここに画像の説明を挿入

(2)mysql1でデータベースノードmysql2とmysql3へのパスワードフリー認証を構成する

ssh-keygen -t rsa
sshコピーID 192.168.126.30
sshコピーID 192.168.126.40

(3)データベースノードmysql1とmysql3へのmysql2のパスワードフリー認証を構成する

ssh-keygen -t rsa
sshコピーID 192.168.126.20
sshコピーID 192.168.126.40

(4)mysql3でデータベースノードmysql1とmysql2へのパスワードフリー認証を構成する

ssh-keygen -t rsa
sshコピーID 192.168.126.20
sshコピーID 192.168.126.30

8.マネージャーノードでMHAを構成する

(1)関連スクリプトをマネージャーノードの/usr/local/binディレクトリにコピーします。

cp -rp /opt/mha4mysql-manager-0.57/samples/scripts /usr/local/bin
//コピー後、4つの実行可能ファイルll /usr/local/bin/scripts/が作成されます。

master_ip_failover #自動切り替え時の VIP 管理用スクリプト master_ip_online_change #オンライン切り替え時の VIP 管理 power_manager #障害発生後にホストをシャットダウンするスクリプト send_report #障害切り替え後にアラームを送信するスクリプト

ここに画像の説明を挿入

(2)上記の自動切り替え用VIP管理スクリプトを/usr/local/binディレクトリにコピーします。ここでは、master_ip_failoverスクリプトを使用してVIPとフェイルオーバーを管理します。

cp /usr/local/bin/scripts/master_ip_failover /usr/local/bin

(3)変更内容は以下のとおりです。(元の内容を削除し、VIP関連のパラメータを直接コピーして変更します)

vim /usr/local/bin/master_ip_failover

#!/usr/bin/env パール
厳密なものを使用します。
警告 FATAL => 'all' を使用します。

Getopt::Long を使用します。

私の
$コマンド、$ssh_user、$orig_master_host、$orig_master_ip、
$orig_master_port、$new_master_host、$new_master_ip、$new_master_port
);
##################################コンテンツ セクションを追加##########################################
my $vip = '192.168.126.200'; #vipmy のアドレスを指定します $brdc = '192.168.126.255'; #vipmy のブロードキャスト アドレスを指定します $ifdev = 'ens33'; #vipmy にバインドされているネットワーク カードを指定します $key = '1'; #vipmy にバインドされている仮想ネットワーク カードのシリアル番号を指定します $ssh_start_vip = "/sbin/ifconfig ens33:$key $vip"; #この変数の値が ifconfig ens33:1 192.168.126.200 であることを表します
my $ssh_stop_vip = "/sbin/ifconfig ens33:$key down"; #この変数値はifconfig ens33:1 192.168.126.200 downを表します
my $exit_code = 0; #終了ステータスコードを0に指定します
#my $ssh_start_vip = "/usr/sbin/ip addr $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 アドレス del $vip/24 dev $ifdev ラベル $ifdev:$key";
##################################################################################
オプションを取得(
'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,
'新しいマスターポート=i' => \$新しいマスターポート、
);

&main() を終了します。

サブメイン{

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

$command が "stop" の場合 || $command が "stopssh" の場合 {

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

私の$exit_code = 10;
評価 {
print "新しいマスター $new_master_host で VIP $vip を有効にしています \n";
開始vip();
$終了コード = 0;
};
もし($@){
警告 $@;
終了 $exit_code;
}
終了 $exit_code;
}
elsif ( $command が "ステータス" と等しい ) {
print "スクリプトのステータスを確認しています。OK \n";
終了0;
}
それ以外 {
&使用法();
出口1;
}
}
サブ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 \"`;
}

サブの使用法 {
印刷
"使用方法: 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\n";
}

ここに画像の説明を挿入

(4)MHAソフトウェアディレクトリを作成し、設定ファイルをコピーします。ここでは、app1.cnf設定ファイルはMySQLノードサーバーの管理に使用されます。

/etc/masterha をディレクトリに追加します。
cp /opt/mha4mysql-manager-0.57/samples/conf/app1.cnf /etc/masterha
vim /etc/masterha/app1.cnf #元のコンテンツを削除し、ノードサーバーのIPアドレスを直接コピーして変更します[サーバーのデフォルト]
マネージャログ=/var/log/masterha/app1/manager.log
マネージャーワークディレクトリ=/var/log/masterha/app1
マスター_binlog_dir=/usr/local/mysql/data
マスターIPフェイルオーバースクリプト=/usr/local/bin/マスターIPフェイルオーバー
マスターIPオンライン変更スクリプト=/usr/local/bin/マスターIPオンライン変更
パスワード=マネージャー
ping_interval=1
リモートワークディレクトリ=/tmp
パスワードを123に変更
repl_user=myslave
セカンダリチェックスクリプト=/usr/local/bin/masterha_secondary_check -s 192.168.126.30 -s 192.168.126.40
シャットダウンスクリプト=""
ssh_user=ルート
ユーザー=mha

[サーバー1]
ホスト名=192.168.126.20
ポート=3306

[サーバー2]
候補マスター=1
チェック_repl_delay=0
ホスト名=192.168.126.30
ポート=3306

[サーバー3]
ホスト名=192.168.126.40
ポート=3306
[サーバーのデフォルト]
manager_log=/var/log/masterha/app1/manager.log #マネージャーログ manager_workdir=/var/log/masterha/app1.log #マネージャー作業ディレクトリ master_binlog_dir=/usr/local/mysql/data/ #マスターがbinlogを保存する場所。ここでのパスは、MHAが見つけられるように、マスターで設定されたbinlogのパスと一致している必要があります master_ip_failover_script=/usr/local/bin/master_ip_failover #自動フェイルオーバー用の切り替えスクリプトを設定します。これは上記のスクリプトです master_ip_online_change_script=/usr/local/bin/master_ip_online_change #手動切り替え用の切り替えスクリプトを設定します password=manager #mysqlのrootユーザーのパスワードを設定します。このパスワードは、前の記事で監視ユーザーを作成するためのパスワードです ping_interval=1 #メインデータベースを監視し、pingパケットを送信する時間間隔を設定します。デフォルトは3秒です。応答がない試行が3回続くと自動的にフェイルオーバーします
remote_workdir=/tmp #切り替え発生時にリモート MySQL バイナリログが保存される場所を設定します repl_password=123 #レプリケーション ユーザーのパスワードを設定します repl_user=myslave #レプリケーション ユーザーのユーザーを設定します report_script=/usr/local/send_report #切り替え後にアラームを送信するためのスクリプトを設定します secondary_check_script=/usr/local/bin/masterha_secondary_check -s 192.168.126.30 -s 192.168.126.40 #チェックするスレーブ サーバーの IP アドレスを指定します shutdown_script="" #障害発生後に障害のあるホストをシャットダウンするためのスクリプトを設定します (このスクリプトの主な機能は、ブレイン スプリットを防ぐためにホストをシャットダウンすることですが、ここでは使用しません)
ssh_user=root #sshログインユーザー名を設定 user=mha #監視ユーザーrootを設定

[サーバー1]
ホスト名=192.168.126.20
ポート=3306

[サーバー2]
ホスト名=192.168.126.30
ポート=3306
候補マスター=1
#候補マスターに設定します。このパラメータを設定すると、マスターデータベースがクラスター内の最新のスレーブでなくても、マスタースレーブスイッチが発生した後にスレーブデータベースがマスターデータベースに昇格されます。

チェック_repl_delay=0
#デフォルトでは、スレーブがマスターより 100M 以上のリレー ログで遅れている場合、スレーブの回復に長い時間がかかるため、MHA はスレーブを新しいマスターとして選択しません。check_repl_delay=0 を設定すると、MHA は新しいマスターを選択するときにレプリケーションの遅延を無視するようにスイッチをトリガーします。このパラメータは、candidate_master=1 のホストに非常に役立ちます。候補マスターは、切り替え中に新しいマスターになる必要があるためです。

[サーバー3]
ホスト名=192.168.126.40
ポート=3306

9.最初の構成では、マスターノードの仮想IPを手動で有効にする必要があります。

/sbin/ifconfig ens33:1 192.168.126.200/24 

ここに画像の説明を挿入

10.マネージャーノードで ssh パスワードレス認証をテストします。正常であれば、以下のように正常に出力されます。

masterha_check_ssh -conf=/etc/masterha/app1.cnf 

ここに画像の説明を挿入

11.マネージャー ノードで MySQL マスター スレーブ接続をテストします。MySQL レプリケーションの健全性に問題がないと表示されたら、正常です。下記の通りです。

masterha_check_repl -conf=/etc/masterha/app1.cnf 

ここに画像の説明を挿入

12.マネージャーノードで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 &

–remove_dead_master_conf: このパラメータは、マスターとスレーブの切り替えが発生したときに、古いマスター データベースの IP アドレスが構成ファイルから削除されることを意味します。
–manger_log: ログの保存場所。

–ignore_last_failover: デフォルトでは、MHA が連続したダウンタイムを検出し、2 つのダウンタイム間の間隔が 8 時間未満の場合、フェイルオーバーは実行されません。この制限は、ピンポン効果を回避するためのものです。このパラメータは、最後の MHA トリガー スイッチによって生成されたファイルを無視することを意味します。デフォルトでは、MHA スイッチが発生した後、ディレクトリがログ、つまり上記で設定したログ app1.failover.complete ファイルに記録されます。次回の切り替え時にディレクトリにファイルが存在する場合、最初の切り替え後にファイルを削除しない限り、スイッチをトリガーすることはできません。便宜上、ここでは –ignore_last_failover に設定されています。

13. MHA ステータスを確認すると、現在のマスターが Mysql1 ノードであることがわかります。

masterha_check_status --conf=/etc/masterha/app1.cnf 

ここに画像の説明を挿入

14. MHA ログを確認すると、以下に示すように、現在のマスターが 192.168.126.20 であることがわかります。

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

ここに画像の説明を挿入

Mysql1 の VIP アドレス 192.168.126.200 が存在するかどうかを確認します。マネージャー ノードが MHA サービスを停止しても、この VIP アドレスは消えません。

ifconfig

//マネージャー サービスをシャットダウンするには、次のコマンドを使用します。
masterha_stop --conf=/etc/masterha/app1.cnf
または、プロセス ID を直接強制終了してシャットダウンすることもできます。

ここに画像の説明を挿入

(III)故障シミュレーション

#マネージャーノード上のログレコードを監視および観察する

tail -f /var/log/masterha/app1/manager.log 

ここに画像の説明を挿入

#マスターノードMysql1のmysqlサービスを停止します

systemctl を停止します。
またはpkill -9 mysql 

ここに画像の説明を挿入

#通常の自動切り替え後、MHA プロセスは終了します。 HMA は app1.cnf ファイルの内容を自動的に変更し、ダウンした mysql1 ノードを削除します。 mysql2がVIPを引き継ぐかどうかを確認する
ifconfig

ここに画像の説明を挿入

ここに画像の説明を挿入

候補マスター データベースのフェイルオーバーのアルゴリズム:
1.一般的にスレーブデータベースの品質は(位置/GTID)で判断され、データに差異がある場合はマスターに最も近いスレーブが候補マスターになります。
2.データが一貫している場合は、構成ファイルの順序に従って代替マスター データベースを選択します。
3.重み(candidate_master=1)を設定すると、重みに応じて候補マスターを強制的に指定します。
(1)デフォルトでは、スレーブがマスターよりリレーログで100MB遅れている場合、重みがあっても失敗します。
(2)check_repl_delay=0の場合、ログが大量に遅れていても強制的にバックアップマスターとして選択される。

トラブルシューティングの手順:

1. MySQLを修復する

systemctl で mysqld を再起動します。

2.マスターとスレーブを修復する

#現在のマスター サーバー上のバイナリ ファイルと同期ポイントを表示します。Mysql2 show master status;
# 元のマスター サーバー mysql1 で同期操作を実行します。マスターを master_host='192.168.126.30'、master_user='myslave'、master_password='123'、master_log_file='master-bin.000001'、master_log_pos=1747 に変更します。

スレーブを起動します。

スレーブステータスを表示\G

ここに画像の説明を挿入

3.マネージャーノード上の構成ファイル app1.cnf を変更します (障害を検出すると自動的に消えるので、このレコードを追加します)

vim /etc/masterha/app1.cnf
......
セカンダリチェックスクリプト=/usr/local/bin/masterha_secondary_check -s 192.168.126.20 -s 192.168.126.40
......
[サーバー1]
ホスト名=192.168.126.30
ポート=3306

[サーバー2]
候補マスター=1
チェック_repl_delay=0
ホスト名=192.168.126.20
ポート=3306

[サーバー3]
ホスト名=192.168.126.40
ポート=3306

ここに画像の説明を挿入

4.マネージャーノードで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 &

ここに画像の説明を挿入

ここに画像の説明を挿入

#中国語と英語の文字が互換性がなくエラーを報告する問題を解決する dos2unix /usr/local/bin/master_ip_failover

これで、MySQL MHA の高可用性構成とフェイルオーバーの詳細な展開手順に関するこの記事は終了です。MySQL MHA の高可用性構成の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Python を使用して MySQL MHA の展開と操作ステータス情報を収集する方法
  • MySQL の高可用性アーキテクチャの完全な説明: MHA アーキテクチャ
  • MySQL で MHA アーキテクチャのデプロイメントを構築する手順
  • MySQL MHA のセットアップと切り替えに関するいくつかのエラー ログの概要
  • Mysql GTID Mha 設定方法
  • MySQL での MHA 高可用性フェイルオーバー ソリューションのスーパー デプロイメント チュートリアル
  • MHAはMySQLマスタースレーブデータベースの手動切り替えを実装します
  • MySQL MHA 操作ステータス監視の概要

<<:  CSSスプライトの応用の詳細な説明

>>:  一般的なDockerコマンドの詳細な説明

推薦する

Docker基盤技術の適用に関する詳細な説明 名前空間Cgroup

Docker の基盤技術: Docker の基盤となる 2 つのコア テクノロジーは、名前空間とコ...

MySQL 5.7.20 無料インストールバージョンの設定方法グラフィックチュートリアル

インターネット上で多くの関連チュートリアルを見てきましたが、インストール プロセスにはまだいくつかの...

Vue における nextTick の役割といくつかの簡単な使用シナリオ

目的nextTickの役割といくつかの簡単な使用シナリオを理解する文章その機能は何ですか?遅延コール...

JavaScript 非同期プログラミングにおける Promise の初期の使用法の詳細な説明

1. 概要Promise オブジェクトは、ES6 で提案された非同期プログラミングの仕様です。非同期...

純粋な CSS ヘッダーの実装コードを修正

純粋な CSS で固定ヘッダーを実装するのが難しい主な理由は 2 つあります。まず、最大のシェアを持...

ネイティブJavaScriptでカルーセルを実装する

この記事では、JavaScriptでカルーセルを実装するための具体的なコードを参考までに紹介します。...

フロントエンド制作に関する簡単な議論: 互換性のために IE6 はまだ必要ですか?

国内市場ではIE6~7のサポートに対する一定の需要がまだありますが、フロントエンド開発者として、私た...

MySQL Binlog ログの読み取り時によくある 3 つのエラー

1. mysqlbinlog: [エラー] 不明な変数 'default-character...

Docker で Springboot プロジェクトを実行する実装

導入: springboot プロジェクトを実行する Docker の構成は実は非常にシンプルで、L...

VMware15 仮想マシン ブリッジ モードでインターネットにアクセスできない問題の解決方法

説明 ソリューションVMware 15 仮想マシン ブリッジ モードではインターネットにアクセスでき...

MySQL でコミットされていないトランザクション情報を見つける方法

少し前に、「ORACLE でコミットされていないトランザクションの SQL ステートメントを見つける...

HTML は CSS スタイルと JS スクリプトを動的に読み込みます。例

1. スクリプトを動的に読み込むウェブサイトの需要が高まるにつれて、スクリプトの需要も徐々に増加しま...

ダイナミッククロックを実現するJS+CSS

この記事の例では、動的な時計を実装するためのJS + CSSの具体的なコードを参考までに共有していま...

MySQL の lru リンク リストの簡単な分析

1. 従来のLRUリンクリストについて簡単に説明するLRU:最も最近使われなかったものLRU リンク...

MySQLのMVCCマルチバージョン同時実行制御の実装

1 MVCCとは何かMVCC の正式名称は、マルチバージョン同時実行制御です。データベースへの同時ア...