MySQLの高可用性と高パフォーマンスのクラスタを構築する方法

MySQLの高可用性と高パフォーマンスのクラスタを構築する方法

MySQL NDB Clusterとは

MySQL NDB Cluster は、分散コンピューティング環境に適した、可用性と冗長性に優れた MySQL のバージョンです。
ドキュメントリンク

クラスター構築のための準備作業

少なくとも 3 台のサーバーを用意します。1 台は管理サーバーとして、2 台はデータ サーバーと SQL サーバーとして用意します。もちろん、サーバーの数は多ければ多いほど良いでしょう。

管理サーバー mgm: 192.168.0.105
データサーバー ndb1: 192.168.0.106
データサーバー ndb2: 192.168.0.104
SQL サーバー: 192.168.0.106
SQL サーバー: 192.168.0.104

クラスターのデプロイを開始する

まず、MySQL NDB Cluster バイナリ ファイルをダウンロードし、解凍して、次の手順を実行します。

展開管理サーバー

システムを更新する

apt update -y && apt upgrade -y && apt install libncurses5 -y

ndb_mgmとndb_mgmdを管理サーバーにコピーする

scp ./mysql-cluster-gpl-7.6.17-linux-glibc2.12-x86_64/bin/ndb_mgm* [email protected]:/home/mgm

管理サーバーで、ndb_mgm と ndb_mgmd を /usr/local/bin フォルダーにコピーします。

cp -rfv /home/mgm/ndb_mgm* /usr/local/bin

ndb_mgm と ndb_mgmd に実行権限を付与する

chmod +x /usr/local/bin/ndb_mgm*

プロフィールを追加する

mkdir /var/lib/mysql-cluster
vi /var/lib/mysql-cluster/config.ini

config.ini

[ndbd デフォルト]
# すべてのデータノード上の ndbd プロセスに影響するオプション:
NoOfReplicas=2 # フラグメントレプリカの数
DataMemory=98M # データ保存用に割り当てるメモリ量

[ndb_mgmd]
# 管理プロセスオプション:
HostName=192.168.0.105 # 管理ノードのホスト名またはIPアドレス
NodeId=1 # この管理ノードのノードID
DataDir=/var/lib/mysql-cluster # 管理ノードのログファイルのディレクトリ

[ndbd]
# データノード「A」のオプション:
                                  # (データノードごとに 1 つの [ndbd] セクション)
HostName=192.168.0.104 # ホスト名またはIPアドレス
NodeId=2 # このデータノードのノードID
DataDir=/data/mysql-cluster/data # このデータノードのデータファイルのディレクトリ

[ndbd]
# データノード「B」のオプション:
                                # (データノードごとに 1 つの [ndbd] セクション)
HostName=192.168.0.106 # ホスト名またはIPアドレス
NodeId=3 # このデータノードのノードID
DataDir=/data/mysql-cluster/data # このデータノードのデータファイルのディレクトリ

[mysqld]
# SQL ノード オプション:
HostName=192.168.0.104 # ホスト名またはIPアドレス
                             # (追加のmysqld接続は
                             # このノードにさまざまな目的で指定
                             # ndb_restore の実行などの目的)

[mysqld]
# SQL ノード オプション:
HostName=192.168.0.106 # ホスト名またはIPアドレス
                             # (追加のmysqld接続は
                             # このノードにさまざまな目的で指定
                             # ndb_restore の実行などの目的)

ファイアウォールを開きます。クラスタ管理サービスはデフォルトでポート1186を使用します。

ufw 許可 22
ufw 許可 1186
ufw を有効にする

管理サーバーを初期化して起動する

/usr/local/bin/ をコピーします
ndb_mgmd --initial --configdir=/var/lib/mysql-cluster -f /var/lib/mysql-cluster/config.ini --ndb-nodeid=1

次の結果が表示されたら、管理サーバーが正常に起動したことを意味します。

root@mgm:/usr/local/bin# ndb_mgmd --initial --configdir=/var/lib/mysql-cluster -f /var/lib/mysql-cluster/config.ini --ndb-nodeid=1
MySQL クラスタ管理サーバー mysql-5.7.33 ndb-7.6.17

ndb_mgm コマンドを再度実行すると、現在のクラスターのステータスを表示できます。

ルート@mgm:/usr/local/bin#ndb_mgm
-- NDB クラスタ -- 管理クライアント --
ndb_mgm> 表示
管理サーバーに接続しました: localhost:1186
クラスタ構成
---------------------
[ndbd(NDB)] 2 ノード
id=2 (接続されていません、192.168.0.104 からの接続を受け入れます)
id=3 (接続されていません、192.168.0.106 からの接続を受け入れます)

[ndb_mgmd(MGM)] 1 ノード
id=1 @192.168.0.105 (mysql-5.7.33 ndb-7.6.17)

[mysqld(API)] 2ノード
id=4 (接続されていません、192.168.0.104 からの接続を受け入れます)
id=5 (接続されていません、192.168.0.106 からの接続を受け入れます)

データサーバーを展開する

すべてのデータサーバーで次の操作を実行します

システムを更新する

apt update -y && apt upgrade -y && apt install libncurses5 -y

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

ufw 許可 22
ufw 許可 2202
ufw を有効にする

ndbdとndbmtdをデータサーバーにコピーする

#192.168.0.106にコピー
scp ./mysql-cluster-gpl-7.6.17-linux-glibc2.12-x86_64/bin/ndbd [email protected]:/home/ndb1
scp ./mysql-cluster-gpl-7.6.17-linux-glibc2.12-x86_64/bin/ndbmtd [email protected]:/home/ndb1

#192.168.0.104にコピー
scp ./mysql-cluster-gpl-7.6.17-linux-glibc2.12-x86_64/bin/ndbd [email protected]:/home/ndb2
scp ./mysql-cluster-gpl-7.6.17-linux-glibc2.12-x86_64/bin/ndbmtd [email protected]:/home/ndb2

管理サーバーで、ndbd と ndbmtd を /usr/local/bin フォルダーにコピーします。

#192.168.0.106
cp -rfv /home/ndb1/ndbd /usr/local/bin
cp -rfv /home/ndb1/ndbmtd /usr/local/bin

#192.168.0.104
cp -rfv /home/ndb2/ndbd /usr/local/bin
cp -rfv /home/ndb2/ndbmtd /usr/local/bin

ndbd 実行権限を付与する

chmod +x /usr/local/bin/ndbd
chmod +x /usr/local/bin/ndbmtd

/etcの下にmy.cnfファイルを追加します。

vi /etc/my.cnf

my.cnf ファイル

[mysqld]
# mysqld プロセスのオプション:
ndbcluster # NDBストレージエンジンを実行する

[mysql_cluster]
# NDB Cluster プロセスのオプション:
ndb-connectstring=192.168.0.105 # 管理サーバーの場所

データ保存用のディレクトリを作成します。このディレクトリは、管理サービスで設定されたパスと一致している必要があります。

mkdir -p /data/mysql-cluster/data

データサービスを開始

ルート@ndb1:/usr/local/bin#ndbd
2021-06-20 08:10:23 [ndbd] INFO -- Angel が '192.168.0.105:1186' に接続しました
2021-06-20 08:10:23 [ndbd] INFO -- Angel がノード ID を割り当てました: 3

クラスター管理サーバーに戻り、クラスターのステータスを確認します。データ サービスが正常に接続されていることがわかります。

ルート@mgm:/usr/local/bin#ndb_mgm
-- NDB クラスタ -- 管理クライアント --
ndb_mgm> 表示
管理サーバーに接続しました: localhost:1186
クラスタ構成
---------------------
[ndbd(NDB)] 2 ノード
id=2 (接続されていません、192.168.0.104 からの接続を受け入れます)
id=3 @192.168.0.106 (mysql-5.7.33 ndb-7.6.17、開始中、ノードグループ: 0)

[ndb_mgmd(MGM)] 1 ノード
id=1 @192.168.0.105 (mysql-5.7.33 ndb-7.6.17)

[mysqld(API)] 2ノード
id=4 (接続されていません、192.168.0.104 からの接続を受け入れます)
id=5 (接続されていません、192.168.0.106 からの接続を受け入れます)

別のサーバー (192.168.0.104) で手順 4、5、6、7 を繰り返します。結果を確認できます。

ルート@ndb2:/usr/local/bin# ndbd
2021-06-20 08:20:10 [ndbd] INFO -- Angel が '192.168.0.105:1186' に接続しました
2021-06-20 08:20:10 [ndbd] INFO -- Angel がノード ID を割り当てました: 2

クラスター管理サーバーに戻り、クラスターのステータスを確認します。すべてのデータ サービスが正常に接続されていることがわかります。

ルート@mgm:/usr/local/bin#ndb_mgm
-- NDB クラスタ -- 管理クライアント --
ndb_mgm> 表示
管理サーバーに接続しました: localhost:1186
クラスタ構成
---------------------
[ndbd(NDB)] 2 ノード
id=2 @192.168.0.104 (mysql-5.7.33 ndb-7.6.17、ノードグループ: 0、*)
id=3 @192.168.0.106 (mysql-5.7.33 ndb-7.6.17、ノードグループ: 0)

[ndb_mgmd(MGM)] 1 ノード
id=1 @192.168.0.105 (mysql-5.7.33 ndb-7.6.17)

[mysqld(API)] 2ノード
id=4 (接続されていません、192.168.0.104 からの接続を受け入れます)
id=5 (接続されていません、192.168.0.106 からの接続を受け入れます)
/data/mysql/dataディレクトリでは、データサービスがデータを生成したことがわかります。root@ndb1:~# ls /data/mysql/data/
ndb_3_fs ndb_3_out.log ndb_3.pid

SQL Server を展開する

MySQL を SQL Server にコピーする

scp ./mysql-cluster-gpl-7.6.17-linux-glibc2.12-x86_64.tar.gz [email protected]:/home/ndb2
scp ./mysql-cluster-gpl-7.6.17-linux-glibc2.12-x86_64.tar.gz [email protected]:/home/ndb1

MySQLを解凍し、/usr/localディレクトリにコピーします。

tar -zxvf mysql-cluster-gpl-7.6.17-linux-glibc2.12-x86_64.tar.gz
cp -rfv mysql-cluster-gpl-7.6.17-linux-glibc2.12-x86_64 /usr/local/
ローカルマシンでmysqlクラスタを起動します。

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql.server
エクスポート PATH=$PATH:/usr/local/mysql/bin
ソース /etc/profile

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

ufw 許可 22
ufw 許可 3306
ufw を有効にする

MySQLデータ保存用のディレクトリを作成する

mkdir -p /data/mysql/data
mkdir -p /data/mysql/run
mkdir -p /var/log/mysql

mysqlユーザーと関連ディレクトリを作成する

グループ追加mysql
ユーザー追加 -r -g mysql -s /bin/false mysql
chown mysql:mysql /data/mysql/data
chmod 750 /data/mysql/data

chown mysql:mysql /data/mysql/run
chmod 750 /data/mysql/run

chown mysql:mysql /var/log/mysql
chmod 750 /var/log/mysql

MySQL設定ファイルを作成する

mkdir -p /etc/mysql
vi /etc/mysql/my.cnf を編集します。
マイ.cnf
[mysqld]
# mysqld プロセスのオプション:
ndbcluster # NDBストレージエンジンを実行する

pid ファイル = /data/mysql/run/mysqld.pid
ソケット = /data/mysql/run/mysqld.sock
データディレクトリ = /data/mysql/data
# ログエラー = /var/log/mysql/error.log
# デフォルトでは、ローカルホストからの接続のみを受け入れます
バインドアドレス = 192.168.0.106
# さまざまなセキュリティリスクを防ぐために、シンボリックリンクを無効にすることをお勧めします
シンボリックリンク = 0

[mysql_cluster]
# NDB Cluster プロセスのオプション:
ndb-connectstring = 192.168.0.105 # 管理サーバーの場所

[クライアント]
ソケット = /data/mysql/run/mysqld.sock

MySQLを初期化する

/usr/local/mysql/bin/mysqld --defaults-file=/etc/mysql/my.cnf --initialize --user=mysql --basedir=/usr/local/mysql

MySQLの初期化によって生成されたルートユーザーのパスワードsF#Hy,IuT6d#を記録します。

root@ndb1:~# /usr/local/mysql/bin/mysqld --defaults-file=/etc/mysql/my.cnf --initialize --user=mysql --basedir=/usr/local/mysql
2021-06-20T12:23:26.874302Z 0 [警告] 暗黙の DEFAULT 値を持つ TIMESTAMP は非推奨です。--explicit_defaults_for_timestamp サーバー オプションを使用してください (詳細についてはドキュメントを参照してください)。
2021-06-20T12:23:27.102146Z 0 [警告] InnoDB: 新しいログファイルが作成されました、LSN=45790
2021-06-20T12:23:27.145317Z 0 [警告] InnoDB: 外部キー制約システム テーブルを作成しています。
2021-06-20T12:23:27.154405Z 0 [警告] 既存の UUID が見つからなかったため、このサーバーが初めて起動されたと想定します。新しい UUID を生成しています: 50a15854-d1c2-11eb-9792-000c29681e23。
2021-06-20T12:23:27.155927Z 0 [警告] Gtid テーブルは使用準備ができていません。テーブル 'mysql.gtid_executed' を開くことができません。
2021-06-20T12:23:28.339372Z 0 [警告] CA 証明書 ca.pem は自己署名されています。
2021-06-20T12:23:28.624534Z 1 [注記] root@localhost の一時パスワードが生成されます: sF#Hy,IuT6d#

MySQLを起動する

/usr/local/mysql/bin/mysqld_safe --user=mysql &

ルートユーザーのパスワードを変更する

mysqladmin -uroot -p'sF#Hy,IuT6d#' パスワード '123456'

クラスター管理サーバーに戻り、クラスターの状態を確認します。SQL サービスが接続されていることがわかります。

ルート@mgm:/usr/local/bin#ndb_mgm
-- NDB クラスタ -- 管理クライアント --
ndb_mgm> 表示
管理サーバーに接続しました: localhost:1186
クラスタ構成
---------------------
[ndbd(NDB)] 2 ノード
id=2 @192.168.0.104 (mysql-5.7.33 ndb-7.6.17、ノードグループ: 0、*)
id=3 @192.168.0.106 (mysql-5.7.33 ndb-7.6.17、ノードグループ: 0)

[ndb_mgmd(MGM)] 1 ノード
id=1 @192.168.0.105 (mysql-5.7.33 ndb-7.6.17)

[mysqld(API)] 2ノード
id=4 (接続されていません、192.168.0.104 からの接続を受け入れます)
id=5 @192.168.0.106 (mysql-5.7.33 ndb-7.6.17)

SQL サービスを別のサーバー (192.168.0.104) にデプロイし、クラスター管理サーバーに戻ってクラスターの状態を確認すると、すべての SQL サービスが正常に接続されていることがわかります。

ルート@mgm:/usr/local/bin#ndb_mgm
-- NDB クラスタ -- 管理クライアント --
ndb_mgm> 表示
クラスタ構成
---------------------
[ndbd(NDB)] 2 ノード
id=2 @192.168.0.104 (mysql-5.7.33 ndb-7.6.17、ノードグループ: 0、*)
id=3 @192.168.0.106 (mysql-5.7.33 ndb-7.6.17、ノードグループ: 0)

[ndb_mgmd(MGM)] 1 ノード
id=1 @192.168.0.105 (mysql-5.7.33 ndb-7.6.17)

[mysqld(API)] 2ノード
id=4 @192.168.0.104 (mysql-5.7.33 ndb-7.6.17)
id=5 @192.168.0.106 (mysql-5.7.33 ndb-7.6.17)

すべてのクラスター サービスがデプロイされました。クラスターが正常にデプロイされたかどうかをテストしてみましょう。

192.168.0.106 の MySQL にデータベースとテーブルを作成します。

データベース「wechat」を作成します。
テーブル wechat.user を作成します (
列1 varchar(100) NULL、
列2 varchar(100) NULL
)
エンジン=ndbcluster
デフォルト文字セット=utf8mb4
照合順序はutf8mb4_general_ciです。
データを挿入して表示します。mysql> show databases;
+--------------------+
| データベース |
+--------------------+
| 情報スキーマ |
|mysql |
|ndbinfo|
| パフォーマンススキーマ |
|システム|
| 微信 |
+--------------------+
セット内の 6 行 (0.00 秒)

mysql> wechat.user から * を選択します。
空セット (0.02 秒)

mysql> wechat.user (列1、列2) に値 ('1'、'2') を挿入します。
クエリは正常、1 行が影響を受けました (0.01 秒)

mysql> wechat.user から * を選択します。
+---------+---------+
| 列1 | 列2 |
+---------+---------+
| 1 | 2 |
+---------+---------+
セット内の 1 行 (0.00 秒)

別のSQLサーバークエリでは、結果は成功です

mysql> データベースを表示します。
+--------------------+
| データベース |
+--------------------+
| 情報スキーマ |
|mysql |
|ndbinfo|
| パフォーマンススキーマ |
|システム|
| 微信 |
+--------------------+
セット内の 6 行 (0.00 秒)

mysql> wechat.user から * を選択します。
空セット (0.07 秒)

mysql> wechat.user から * を選択します。
+---------+---------+
| 列1 | 列2 |
+---------+---------+
| 1 | 2 |
+---------+---------+
セット内の 1 行 (0.00 秒)

ここで、データ ノードの 1 つをシャットダウンします。管理サーバーでは、ndbd が 1 つをシャットダウンしたことがわかります。

ルート@mgm:/usr/local/bin#ndb_mgm
-- NDB クラスタ -- 管理クライアント --
ndb_mgm> 表示
管理サーバーに接続しました: localhost:1186
クラスタ構成
---------------------
[ndbd(NDB)] 2 ノード
id=2 @192.168.0.104 (mysql-5.7.33 ndb-7.6.17、ノードグループ: 0、*)
id=3 (接続されていません、192.168.0.106 からの接続を受け入れます)

[ndb_mgmd(MGM)] 1 ノード
id=1 @192.168.0.105 (mysql-5.7.33 ndb-7.6.17)

[mysqld(API)] 2ノード
id=4 @192.168.0.104 (mysql-5.7.33 ndb-7.6.17)
id=5 @192.168.0.106 (mysql-5.7.33 ndb-7.6.17)

データを書き込む

mysql> wechat.user から * を選択します。
+---------+---------+
| 列1 | 列2 |
+---------+---------+
| 1 | 2 |
+---------+---------+
セット内の1行(0.01秒)

mysql> wechat.user (列1、列2) に値 ('3'、'4') を挿入します。
クエリは正常、1 行が影響を受けました (0.00 秒)

mysql> wechat.user から * を選択します。
+---------+---------+
| 列1 | 列2 |
+---------+---------+
| 3 | 4 |
| 1 | 2 |
+---------+---------+
セット内の 2 行 (0.00 秒)

別のSQLサーバーでクエリを実行しても結果は同じです

mysql> wechat.user から * を選択します。
+---------+---------+
| 列1 | 列2 |
+---------+---------+
| 3 | 4 |
| 1 | 2 |
+---------+---------+
セット内の 2 行 (0.00 秒)

次に192.168.0.106 SQLサービスをシャットダウンします

ルート@mgm:/usr/local/bin#ndb_mgm
-- NDB クラスタ -- 管理クライアント --
ndb_mgm> 表示
管理サーバーに接続しました: localhost:1186
クラスタ構成
---------------------
[ndbd(NDB)] 2 ノード
id=2 @192.168.0.104 (mysql-5.7.33 ndb-7.6.17、ノードグループ: 0、*)
id=3 (接続されていません、192.168.0.106 からの接続を受け入れます)

[ndb_mgmd(MGM)] 1 ノード
id=1 @192.168.0.105 (mysql-5.7.33 ndb-7.6.17)

[mysqld(API)] 2ノード
id=4 @192.168.0.104 (mysql-5.7.33 ndb-7.6.17)
id=5 (接続されていません、192.168.0.106 からの接続を受け入れます)

192.168.0.104のSQLサービスにデータを書き込む

mysql> wechat.user (列1、列2) に値 ('5'、'6') を挿入します。
クエリは正常、1 行が影響を受けました (0.00 秒)

mysql> wechat.user から * を選択します。
+---------+---------+
| 列1 | 列2 |
+---------+---------+
| 5 | 6 |
| 3 | 4 |
| 1 | 2 |
+---------+---------+
セット内の 3 行 (0.00 秒)

192.168.0.106のデータサービスとSQLサービスを開始します。

ルート@mgm:/usr/local/bin#ndb_mgm
-- NDB クラスタ -- 管理クライアント --
ndb_mgm> 表示
管理サーバーに接続しました: localhost:1186
クラスター構成
---------------------
[ndbd(NDB)] 2 ノード
id=2 @192.168.0.104 (mysql-5.7.33 ndb-7.6.17、ノードグループ: 0、*)
id=3 @192.168.0.106 (mysql-5.7.33 ndb-7.6.17、ノードグループ: 0)

[ndb_mgmd(MGM)] 1 ノード
id=1 @192.168.0.105 (mysql-5.7.33 ndb-7.6.17)

[mysqld(API)] 2ノード
id=4 @192.168.0.104 (mysql-5.7.33 ndb-7.6.17)
id=5 @192.168.0.106 (mysql-5.7.33 ndb-7.6.17)

192.168.0.106 のデータベースを照会すると、障害期間中に生成されたデータが同期されていることがわかりました。

ルート@ndb1:~# mysql -uroot -p
パスワードを入力してください:
MySQL モニターへようこそ。コマンドは ; または \g で終わります。
MySQL接続IDは4です
サーバーバージョン: 5.7.33-ndb-7.6.17-cluster-gpl MySQL Cluster Community Server (GPL)

Copyright (c) 2000、2021、Oracle およびその関連会社。

OracleはOracle Corporationおよびその関連会社の登録商標です。
その他の名称は各社の商標である場合があります。
所有者。

ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。

mysql> wechat.user から * を選択します。
+---------+---------+
| 列1 | 列2 |
+---------+---------+
| 1 | 2 |
| 5 | 6 |
| 3 | 4 |
+---------+---------+
3 行セット (0.08 秒)

データベース クラスターが正常にデプロイされました。クラスターの注意事項をまとめます。

  1. テーブルを作成する場合は、ENGINE=ndbcluster を設定する必要があります。詳細は上記のテーブル作成スクリプトを参照してください。
  2. 各SQLサービスは同じユーザーパスワードを作成する必要があります
  3. すべての管理サーバーに障害が発生することはできません。障害が発生すると、クラスター データベースの操作が失敗します。
  4. すべてのデータ サーバーに障害が発生することはできません。障害が発生すると、クラスター データベースの操作が失敗します。
  5. SQL Server 障害時に作成されたデータベースは、復旧後に新しく作成されたデータベースに自動的に同期されません。障害復旧後にサーバー上に同じ名前のデータベースを手動で作成する必要があります。その後、データが自動的に同期されます。
  6. 管理サーバーとデータサーバーの台数が多いほど、障害発生時にデータの書き込みが安全に行われることが保証され、データベースシステムが利用できなくなることはありません。
  7. SQL サーバーの数が増えるほど、負荷分散サービスを通じて各 SQL サーバーにデータベース アクセス要求を分散することで、より多くの同時実行性をサポートできます。
  8. クラスターは、管理サービス -> データ サービス -> SQL サービスの順序で起動する必要があります。

以上がMySQLの高可用性・高性能クラスタの構築方法の詳細です。MySQLの高可用性・高性能クラスタの構築の詳細については、123WORDPRESS.COMの他の関連記事もご覧ください。

以下もご興味があるかもしれません:
  • MySQL PXC クラスターの構築方法
  • MySQL 高可用性クラスタの展開とフェイルオーバーの実装
  • MySQL 5.7 クラスタ構成手順
  • MySQLクラスタのDockerデプロイメントの実装
  • クラスタrpmを使用してMySQLをインストールするための詳細な手順
  • MySQL クラスタの詳細な説明: 1 つのマスターと複数のスレーブのアーキテクチャ実装
  • Docker を使用して MySQL 5.7 および 8.0 マスター スレーブ クラスターをデプロイする方法
  • MySQLのクラスタモードでのgalera-clusterのデプロイメントの詳細説明
  • Docker で MySQL クラスターを構築する方法の例
  • MySQL Cluster 基本導入チュートリアル

<<:  Flex プログラム Firefox で中国語を入力すると文字化けするバグ

>>:  Dockerを使用してプライベートGitLabを構築する2つの方法

推薦する

ウェブ画像のホットリンクと座標値を設定するサンプルコード

時には、画像上に複数の領域を設定する必要があります。マウスで画像のさまざまな領域をクリックしてさまざ...

VMware 仮想マシンに Android x86 をインストールする方法

アプリをテストしたいが、それを携帯電話で実行したくない場合があります。この場合、仮想マシンを使用して...

WIN10 システムと Docker 内部コンテナ IP 間の通信方法

1. Windows 版の Docker をインストールしたら、Docker クイックスタート ター...

Node.js で Bash スクリプトを書くための究極のソリューション

目次序文zxライブラリ$`コマンド` CD()フェッチ()質問()寝る()スローしない()チョークフ...

Dockerイメージの作成、保存、読み込み方法

イメージを作成する方法は 3 つあります。既存のイメージに基づいてコンテナを作成する、ローカル テン...

Dockerの動作モードと原理の詳細な説明

次の図に示すように: 仮想マシンと Docker を使用するとき、「なぜ Docker は VM よ...

Linux での grep コマンドの使い方の詳細な説明

1. 公式紹介grep は Linux でよく使用されるコマンドです。これは、ファイルやテキストに対...

データベースアカウントのパスワード暗号化の詳細な説明と例

データベースアカウントのパスワード暗号化の詳細な説明と例データベースアカウントとパスワードはデータベ...

Windows 版 MySQL のインストール、起動、基本設定に関する詳細なグラフィック チュートリアル

ダウンロード:ステップ 1: ウェブサイトを開きます (ダウンロードするには公式ウェブサイトにアクセ...

CentOS に Memcached と PHP Memcached 拡張機能をインストールする

高性能分散メモリオブジェクトキャッシュシステムMemcachedについては、別の記事「Windows...

mysql57サービスが突然消えた問題をすぐに解決する

1つ、 G:\MySQL\MySQL Server 5.7\bin> mysqld --ini...

psdカット画像をdiv+css形式に変換する

PSD から div css へのウェブページ切り取り例ステップ 1: まず、すべてのタグの内側と外...

PIP で docker-compose をインストールする際のタイムアウト問題の解決方法

1: インストールコマンドpip install docker-compose例外情報socket....

xshellを使用してLinuxサーバーに接続する

xshellを使用してLinuxに接続する利点Windows環境でLinuxを直接操作できるインター...

関数の分類の詳細な説明とJavascriptでのこのポイントの例

JS で関数を定義する 3 つの方法例を挙げて説明しましょう。 <スクリプト> //メソ...