MySQL 高可用性クラスタの展開とフェイルオーバーの実装

MySQL 高可用性クラスタの展開とフェイルオーバーの実装

1. 内閣府

1. コンセプト

ここに画像の説明を挿入

2. MHAの構成

ここに画像の説明を挿入

3. MHAの特徴

ここに画像の説明を挿入

2. MySQL+MHAをビルドする

アイデアと準備

1. マスター 1 台とスレーブ 2 台による MHA アーキテクチャ データベースのインストール
MHA建設

2. 障害シミュレーション: プライマリ データベースの障害をシミュレートします。バックアップ プライマリ データベースがプライマリ データベースになります。元の障害が発生したプライマリ データベースが復元され、MHA に再結合されてスレーブ データベースになります。

3. MySQLをインストールするための4つの仮想マシンを準備する
MHA高可用性クラスタ関連ソフトウェアパッケージ
MHAmanager IP: 192.168.221.30
MySQL1 IP: 192.168.221.20
MySQL2 IP: 192.168.221.100
MySQL3 IP: 192.168.221.110

ここに画像の説明を挿入

1. ファイアウォールをオフにしてポートが開いているかどうかを確認します

systemctl 停止 ファイアウォール
systemctl ファイアウォールを無効にする
強制0を設定する
netstat -natp | grep 3306

ここに画像の説明を挿入

2. MySQLノードのホスト名を変更する

192.168.221.20 の MySQL インスタンス

ホスト名ctl ホスト名の設定 mysql1
su-
ホスト名ctl ホスト名の設定 mysql2
su-
ホスト名ctl ホスト名の設定 mysql3
su-

ここに画像の説明を挿入

3. 3つのMySQLサーバーのメイン構成ファイル/etc/my.cnfを変更し、コマンドソフトリンクを作成します。

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

systemctl で mysqld を再起動します。
: := mysql /usr/local/mysql/bin/mysql /usr/sbin/ を使います。
ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/

MySQL2
vim /etc/my.cnf
サーバーID = 2  
#server-id = 3 MySQL3は3なので、3つのサーバーのserver-idは同じにすることはできません。log_bin = master-bin
リレーログ = リレーログビン
リレーログインデックス = スレーブリレービンインデックス
systemctl で mysqld を再起動します。

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

ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入

4. マスター1台とスレーブ2台でMySQLを構成する

(1) すべてのMySQLサーバーはMySQL認証を実行します。mysql1 (192.168.221.20)
192.168.221.100 の MySQL インスタンス
(192.168.221.110)

3台のマシンすべてでmysql -uroot -p123を設定する必要があります。
'123' で識別される 'myslave'@'192.168.221.%' に *.* 上のレプリケーションスレーブを許可します。
'manager' によって識別される 'mha'@'192.168.221.%' に *.* のすべての権限を付与します。
'manager' によって識別される 'mha'@'mysql1' に *.* のすべての権限を付与します。
'manager' によって識別される 'mha'@'mysql2' に *.* のすべての権限を付与します。
'manager' によって識別される 'mha'@'mysql3' に *.* のすべての権限を付与します。
権限をフラッシュします。
マスターステータスを表示します。

ここに画像の説明を挿入

ここに画像の説明を挿入

(2)Slave1ノードとSlave2ノードで同期操作を実行します。マスターをmaster_host='192.168.221.20'、master_user='myslave'、master_password='123'、master_log_file='master-bin.000005'、master_log_pos=1991に変更します。

スレーブを起動します。

スレーブステータスを表示\G
スレーブIO実行中: はい
スレーブSQL実行中: はい

#Slave_IO_Running の一般的な可能性: いいえ:
#ネットワークが機能していません#my.cnf 構成の問題#パスワード、ファイル名、位置オフセットが正しくありません#ファイアウォールが閉じられていません

ここに画像の説明を挿入

(3)スレーブ1とスレーブ2ノードは読み取り専用モードに設定されているmysql2(192.168.221.100)
(192.168.221.110)

グローバル read_only=1 を設定します。
# 読み取り/書き込み状態に戻す set global read_only=0;

ここに画像の説明を挿入

(4) マスタースレーブレプリケーション検証 mysql1 (192.168.221.20)
データベースを作成します。create database srs;
使用テスト;
テーブル test(id int) を作成します。
テスト値に挿入する(1);

192.168.221.100 の MySQL インスタンス
(192.168.221.110)
データベースを照会してデータベースの表示を確認します。

ここに画像の説明を挿入

5. MHAソフトウェアをインストールする

(1)MHA依存環境MHAmanager(192.168.221.30)が全サーバにインストールされている
192.168.221.20 の MySQL インスタンス
192.168.221.100 の MySQL インスタンス
(192.168.221.110)

まず、epel ソースをインストールします。これにはオンライン ソースのインストールが必要です。次に、すべてのサーバーにノード コンポーネントをインストールします。#オンライン ソースのインストール mv /etc/yum.repos.d/repos.bak/CentOS-* /etc/yum.repos.d/
yumリスト

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ノードソフトウェアパッケージMHAmanager(192.168.221.30)をインストールします。
192.168.221.20 の MySQL インスタンス
192.168.221.100 の MySQL インスタンス
(192.168.221.110)

オペレーティングシステムのバージョンごとに異なります。ここでは、CentOS7.4 ではバージョン 0.57 を選択する必要があります。
マネージャはノード コンポーネントに依存しているため、最初にノード コンポーネントをすべてのサーバーにインストールし、最後にマネージャ コンポーネントを MHA マネージャ ノードにインストールする必要があります。
#ソフトウェアパッケージ mha4mysql-node-0.57.tar.gz を /opt ディレクトリに配置します cd /opt
tar zxvf mha4mysql-node-0.57.tar.gz
mha4mysql-node-0.57 を CD します
perl メイクファイル.PL
作成 && インストール

MHA マネージャー ノードにマネージャー コンポーネントをインストールします。パッケージ mha4mysql-manager-0.57.tar.gz を /opt ディレクトリに配置します。cd /opt
tar zxvf mha4mysql-manager-0.57.tar.gz
mha4mysql-manager-0.57 を CD します
perl メイクファイル.PL
作成 && インストール
#ノード コンポーネントがインストールされると、/usr/local/bin の下にいくつかのスクリプトが生成されます (これらのツールは通常、MHAManager スクリプトによってトリガーされ、手動操作は必要ありません)
#マネージャーコンポーネントがインストールされると、/usr/local/binの下にいくつかのツールが生成されます

ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入

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

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

ssh-keygen -t rsa #Enterキーを押し続ける ssh-copy-id 192.168.221.20
sshコピーID 192.168.221.100
sshコピーID 192.168.221.110

(2)ssh-keygen -t rsaを使用して、mysql1でデータベースノードmysql2とmysql3へのパスワードなしの認証を設定します。
192.168.221.20 の MySQL インスタンス

ssh-keygen -t rsa
sshコピーID 192.168.221.100
sshコピーID 192.168.221.110

(3)データベースノードmysql1とmysql3に対してmysql2でパスワードフリー認証を設定します。mysql2(192.168.221.100)

ssh-keygen -t rsa
sshコピーID 192.168.221.20
sshコピーID 192.168.221.110

(4)mysql3でデータベースノードmysql1とmysql2へのパスワードフリー認証を設定します。mysql3(192.168.221.110)

ssh-keygen -t rsa
sshコピーID 192.168.221.20
sshコピーID 192.168.221.100
記事が長すぎるため、説明できません

ここに画像の説明を挿入

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

MHAmanager (192.168.221.30)
(1)関連するスクリプトをマネージャーノードの/usr/local/binディレクトリにコピーします:cp -rp /opt/mha4mysql-manager-0.57/samples/scripts /usr/local/bin

#コピー後、4つの実行可能ファイルll /usr/local/bin/scripts/が作成されます。

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

# まず元のコンテンツをクリアします echo '' > /usr/local/bin/master_ip_failover

#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.221.200'; #vipmy のアドレスを指定します $brdc = '192.168.221.255'; #vipmy のブロードキャスト アドレスを指定します $ifdev = 'ens33'; #vipmy にバインドされているネットワーク カードを指定します $key = '1'; #vipmy にバインドされている仮想ネットワーク カードのシリアル番号を指定します $ssh_start_vip = "/sbin/ifconfig ens33:$key $vip"; #この変数の値が ifconfig ens33:1 192.168.221.200 であることを表します
my $ssh_stop_vip = "/sbin/ifconfig ens33:$key down"; #この変数の値は ifconfig ens33:1 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";
}

ここに画像の説明を挿入

ここに画像の説明を挿入

/etc/masterha をディレクトリに追加します。
cp /opt/mha4mysql-manager-0.57/samples/conf/app1.cnf /etc/masterha
エコー '' > /etc/masterha/app1.cnf
vim /etc/masterha/app1.cnf
[サーバーのデフォルト]
マネージャログ=/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オンライン変更
ユーザー=mha
パスワード=マネージャー
ping_interval=1
リモートワークディレクトリ=/tmp
repl_user=myslave
パスワードを123に変更
セカンダリチェックスクリプト=/usr/local/bin/masterha_secondary_check -s 192.168.221.100 -s 192.168.221.110
シャットダウンスクリプト=""
ssh_user=ルート

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

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

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

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

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

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

ここに画像の説明を挿入
ここに画像の説明を挿入

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

マスター (192.168.221.20)

/sbin/ifconfig ens33:1 192.168.221.200/24

ここに画像の説明を挿入

9. マネージャーノードでテストする

(1) マネージャノードMHAmanager (192.168.221.30)でsshパスワードレス認証をテストする

masterha_check_ssh -conf=/etc/masterha/app1.cnf
#すべてがうまくいけば、最終出力は成功します。
#失敗した場合は、パスワード認証なしでサーバー構成にアクセスして、問題がないか確認できます。 (2) マネージャーノードでMySQLマスタースレーブ接続をテストします。 MHAmanager (192.168.221.30)
masterha_check_repl -conf=/etc/masterha/app1.cnf
#最後に「MySQL レプリケーションの健全性は正常です」というメッセージが表示され、すべてが正常であることを示します。
#MySQL Replication Health is NOT OK! というメッセージが表示されたら、MySQL サーバーのソフトリンクが欠落していないかどうかを確認できます。 --> この記事は次の場所にあります: 2. 3 つの MySQL サーバーのメイン構成ファイル /etc/my.cnf を変更し、コマンド ソフトリンクを作成します (3) マネージャー ノードで MHA を起動します
MHAmanager (192.168.221.30)
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 に設定されています。

ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入

10. 関連ステータスを確認する

MHAmanager (192.168.221.30)

MHA ステータスを確認すると、現在のマスターが Mysql1 ノードであることがわかります。
masterha_check_status --conf=/etc/masterha/app1.cnf

MHAログを確認すると、現在のマスターが192.168.221.20であることがわかります。
cat /var/log/masterha/app1/manager.log | grep "現在のマスター"

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

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

ここに画像の説明を挿入

ここに画像の説明を挿入

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

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

(1)マネージャーノード上のMHAmanager(192.168.221.30)のログ記録を監視し観察する

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

ここに画像の説明を挿入

(2)マスターノードMySQL1(192.168.221.20)上のmysqlサービスmysql1を停止する

systemctl を停止します。
またはpkill -9 mysql
通常の自動切り替え後、MHA プロセスは終了します。 HMA は app1.cnf ファイルの内容を自動的に変更し、ダウンした mysql1 ノードを削除します。

ここに画像の説明を挿入

(3)mysql2がVIPを引き継いだかどうかを確認する
192.168.221.100 の MySQL インスタンス

ifconfig

ここに画像の説明を挿入

(4)マネージャーノードに戻り、ログレコードを監視します:tail -f /var/log/masterha/app1/manager.log

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

ここに画像の説明を挿入

2. トラブルシューティング

192.168.221.20 の MySQL インスタンス
(1)マスターを修復する

systemctl で mysqld を再起動します。
netstat -natp | grep 3306

ここに画像の説明を挿入

192.168.221.100 の MySQL インスタンス
(2)マスタースレーブサーバーを修復します。現在のマスターサーバーMysql2上のバイナリファイルと同期ポイントを表示します。mysql -uroot -p123 -e 'show master status;'
# データベースで show master status を実行します。

元のマスターサーバーmysql1(192.168.221.20)で同期操作を実行します。
マスターをmaster_host='192.168.221.100'、master_user='myslave'、master_password='123'、master_log_file='master-bin.000001'、master_log_pos=1747に変更します。

スレーブを起動します。
スレーブステータスを表示\G

ここに画像の説明を挿入

ここに画像の説明を挿入

(3)マネージャノード上の設定ファイルapp1.cnfを変更する
MHAmanager (192.168.221.30)

次に、このレコードを追加します。これは、障害を検出すると自動的に消えるためです。vim /etc/masterha/app1.cnf
…
セカンダリチェックスクリプト=/usr/local/bin/masterha_secondary_check -s 192.168.221.20 -s 192.168.221.110
......
[サーバー1]
ホスト名=192.168.221.100
ポート=3306

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

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

ここに画像の説明を挿入

(4)マネージャーノードでMHAを起動する
MHAmanager (192.168.221.30)

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

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 &

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

ここに画像の説明を挿入

これで、MySQL 高可用性クラスタの展開とフェイルオーバーの実装に関するこの記事は終了です。MySQL 高可用性クラスタの展開に関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • クラスタrpmを使用してMySQLをインストールするための詳細な手順
  • MySQL クラスタの詳細な説明: 1 つのマスターと複数のスレーブのアーキテクチャ実装
  • MySQLクラスタ構築の詳しい説明
  • デュアル VIP を使用した高可用性 MySQL クラスタの構築

<<:  JD.com フラッシュセール効果を実現する JavaScript

>>:  ウェブページ制作時のコードコメントの書き方

推薦する

主キーを追加または変更するMySQL SQL文操作

テーブルフィールドを追加する テーブルtable1を変更し、トランザクタvarchar(10)をNu...

Vue+Element UIはドロップダウンメニューのカプセル化を実現します

この記事の例では、ドロップダウンメニューのカプセル化を実装するためのVue + Element UI...

ワンクリックで雨や雪のエフェクトを実現する ThingJS パーティクルエフェクト

目次1. パーティクルエフェクト2. シーンを読み込む3. さまざまな粒子効果の実現エンディング: ...

Macシステムをインストールした後にVMWareがフルスクリーンで表示できない問題を解決する

システム: VMTOOLs ダウンロード:リンク: https://pan.baidu.com/s/...

MySQL 20 の高性能アーキテクチャ設計原則 (収集する価値あり)

オープンソース データベース アーキテクチャの設計原則01. 技術の選択最も使い慣れていて、最大限に...

MySql で、存在しない場合は挿入し、存在する場合は更新する方法

まとめシナリオによっては、レコードがない場合は挿入し、レコードがある場合は更新するという要件がある場...

HTML テーブル マークアップ チュートリアル (40): ヘッダーの暗い境界線の色属性 BORDERCOLORDARK

テーブルヘッダーでは、暗い境界線の色を個別に定義できます。基本的な構文<TH 境界線の色を暗く...

Nginx 1つのドメイン名で複数のプロジェクトにアクセスする方法の例

背景最近、複数のプロジェクトを展開する際に、1 つのドメイン名で複数のプロジェクトにアクセスする方法...

VMware Workstation 14 Pro は CentOS 7.0 をインストールします

VMware Workstation 14 ProにCentOS 7.0をインストールする具体的な方...

Vue2.0/3.0 での provide と inject の使用例

目次1. provide/inject の用途は何ですか? 2. provide/injectの使い...

Linux でログインタイムアウト後に非アクティブなユーザーを自動的にログアウトする

方法1: .bashrcまたは.bash_profileファイルを変更するこれは、ホーム ディレクト...

Docker ベースの Redis クラスターの構築方法

Redisイメージをダウンロードする docker pull yyyyttttwww/redis を...

MySQLの分離レベルとロックメカニズムの詳細な説明

目次簡単な説明: 1. 取引の4つの特徴2. 複数の同時トランザクションによって発生する問題3. ト...

Vueフィルターとカスタム命令の使用

目次フィルター01.とは02. やり方(1)フィルターを定義する(2)使用方法(3)フィルタパラメー...

HTML CSS に基づく検索アイコン付き検索ボックス機能を実装する

序文フロントエンドで非常に便利な、小さなアイコン付きの検索ボックスを作成する方法をご紹介します。エフ...