Windows で複数の MySQL インスタンスを実行する方法

Windows で複数の MySQL インスタンスを実行する方法

序文

Windows では、各インスタンスに適切なパラメータを使用してコマンド ラインから複数の MySQL インスタンスを手動で起動したり、複数のサーバーを Windows サービスとしてインストールしたりすることができます。

1. Windows の MySQL のベース ディレクトリに 2 つの新しいインスタンス データ ディレクトリ data3307 と data3308 を作成します。

2. 新しいインスタンスごとに設定ファイルを設定し、関連するオプションを指定します。

my3307.cnf ファイルの内容は次のとおりです。

[mysql]
# mysqlクライアントのデフォルトの文字セットをdefault-character-set=utf8mb4に設定します

[mysqld]
# ポート 3307 を設定します port = 3307
# mysqlのインストールディレクトリをbasedir=D:\mysql-5.7.25-win32に設定します
# MySQL データベース データの保存ディレクトリを設定します。MySQL 8 以降では次の設定は必要ありません。システムが自動的に生成します。そうでない場合はエラーが報告される可能性があります。datadir=D:\mysql-5.7.25-win32\data3307
# 許可される最大接続数 max_connections=200
# サーバーが使用するデフォルトの文字セットは、8 ビットの latin1 文字セットです。character-set-server=utf8mb4
# 新しいテーブルを作成するときに使用されるデフォルトのストレージエンジン default-storage-engine=INNODB
明示的なタイムスタンプのデフォルト=true
ログエラー=D:\mysql-5.7.25-win32\mysql3307.err
pid ファイル = D:\mysql-5.7.25-win32\mysqld3307.pid
ソケット =D:\mysql-5.7.25-win32\mysql3307.sock

my3308.cnf ファイルの内容は次のとおりです。

[mysql]
# mysqlクライアントのデフォルトの文字セットをdefault-character-set=utf8mb4に設定します

[mysqld]
# ポート 3308 を設定 port = 3308
# mysqlのインストールディレクトリをbasedir=D:\mysql-5.7.25-win32に設定します
# MySQL データベース データの保存ディレクトリを設定します。MySQL 8 以降では次の設定は必要ありません。システムが自動的に生成します。そうでない場合はエラーが報告される可能性があります。datadir=D:\mysql-5.7.25-win32\data3308
# 許可される最大接続数 max_connections=200
# サーバーが使用するデフォルトの文字セットは、8 ビットの latin1 文字セットです。character-set-server=utf8mb4
# 新しいテーブルを作成するときに使用されるデフォルトのストレージエンジン default-storage-engine=INNODB
明示的なタイムスタンプのデフォルト=true
ログエラー=D:\mysql-5.7.25-win32\mysql3308.err
pid ファイル = D:\mysql-5.7.25-win32\mysqld3308.pid
ソケット =D:\mysql-5.7.25-win32\mysql3308.sock

3. 新しいデータベースを初期化する

D:\mysql-5.7.25-win32\bin>mysqld --defaults-file=D:\mysql-5.7.25-win32\my3307.cnf --initialize --basedir=D:\mysql-5.7.25-win32 --datadir=D:\mysql-5.7.25-win32\data3307

D:\mysql-5.7.25-win32\bin>mysqld --defaults-file=D:\mysql-5.7.25-win32\my3308.cnf --initialize --basedir=D:\mysql-5.7.25-win32 --datadir=D:\mysql-5.7.25-win32\data3308

4. データベースを起動する

D:\mysql-5.7.25-win32\bin>mysqld --defaults-file=D:\mysql-5.7.25-win32\my3307.cnf

D:\mysql-5.7.25-win32\bin>mysqld --defaults-file=D:\mysql-5.7.25-win32\my3308.cnf

各サーバーはフォアグラウンドで起動されます (サーバーが終了するまで新しいプロンプトは表示されません)。そのため、これらの 2 つのコマンドを別々のコンソール ウィンドウで発行する必要があります。

5. データベースにログインしてパスワードを変更する

C:\Users\Administrator>mysql --port=3307 --host=127.0.0.1 --user=root --password=U0U?KinrdWHb
mysql: [警告] コマンドライン インターフェイスでパスワードを使用すると安全でない可能性があります。
MySQL モニターへようこそ。コマンドは ; または \g で終わります。
MySQL接続IDは6です
サーバーバージョン: 5.7.25

Copyright (c) 2000, 2019, Oracle およびその関連会社。無断複写・転載を禁じます。

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

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

mysql> ALTER USER 'root'@'localhost' が '123456' によって識別されます。
クエリは正常、影響を受けた行は 0 行 (0.00 秒)

mysql>終了
さよなら

C:\Users\Administrator>mysql --port=3307 --host=127.0.0.1 --user=root --password=123456
mysql: [警告] コマンドライン インターフェイスでパスワードを使用すると安全でない可能性があります。
MySQL モニターへようこそ。コマンドは ; または \g で終わります。
MySQL接続IDは7です
サーバーバージョン: 5.7.25 ソース配布

Copyright (c) 2000, 2019, Oracle およびその関連会社。無断複写・転載を禁じます。

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

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

mysql>終了


C:\Users\Administrator>mysql --port=3308 --host=127.0.0.1 --user=root
パスワードを入力してください: ************
MySQL モニターへようこそ。コマンドは ; または \g で終わります。
MySQL接続IDは8です
サーバーバージョン: 5.7.25

Copyright (c) 2000, 2019, Oracle およびその関連会社。無断複写・転載を禁じます。

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

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

mysql> ALTER USER 'root'@'localhost' が '123456' によって識別されます。
クエリは正常、影響を受けた行は 0 行 (0.00 秒)

mysql>終了
さよなら


C:\Users\Administrator>mysql --port=3308 --host=127.0.0.1 --user=root --password=123456
mysql: [警告] コマンドライン インターフェイスでパスワードを使用すると安全でない可能性があります。
MySQL モニターへようこそ。コマンドは ; または \g で終わります。
MySQL接続IDは9です
サーバーバージョン: 5.7.25 ソース配布

Copyright (c) 2000, 2019, Oracle およびその関連会社。無断複写・転載を禁じます。

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

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

マイSQL>

6. データベース サーバーをシャットダウンするには、適切なポート番号を使用して各インスタンスに接続し、次のコマンドを実行します。

C:\Users\Administrator>mysqladmin --port=3307 --host=127.0.0.1 --user=root --password=123456 シャットダウン
mysqladmin: [警告] コマンドライン インターフェイスでパスワードを使用すると安全でない可能性があります。

C:\Users\Administrator>mysqladmin --port=3308 --host=127.0.0.1 --user=root --password=123456 シャットダウン
mysqladmin: [警告] コマンドライン インターフェイスでパスワードを使用すると安全でない可能性があります。

上記の構成により、クライアントは TCP/IP 経由で接続できるようになります。ご使用の Windows バージョンが名前付きパイプをサポートしており、名前付きパイプを使用して接続する場合は、「名前付きパイプを有効にする」オプションを指定して、その名前を指定します。名前付きパイプ接続をサポートする各インスタンスは、一意のパイプ名を使用する必要があります。例えば:

my3307.cnf ファイルの内容は次のとおりです。

[mysql]
# mysqlクライアントのデフォルトの文字セットをdefault-character-set=utf8mb4に設定します

[mysqld]
# ポート 3307 を設定します port = 3307
# mysqlのインストールディレクトリをbasedir=D:\mysql-5.7.25-win32に設定します
# MySQL データベース データの保存ディレクトリを設定します。MySQL 8 以降では次の設定は必要ありません。システムが自動的に生成します。そうでない場合はエラーが報告される可能性があります。datadir=D:\mysql-5.7.25-win32\data3307
# 許可される最大接続数 max_connections=200
# サーバーが使用するデフォルトの文字セットは、8 ビットの latin1 文字セットです。character-set-server=utf8mb4
# 新しいテーブルを作成するときに使用されるデフォルトのストレージエンジン default-storage-engine=INNODB
明示的なタイムスタンプのデフォルト=true
ログエラー=D:\mysql-5.7.25-win32\mysql3307.err
pid ファイル = D:\mysql-5.7.25-win32\mysqld3307.pid
名前付きパイプを有効にする
ソケット =D:\mysql-5.7.25-win32\mysql3307.sock

my3308.cnf ファイルの内容は次のとおりです。

[mysql]
# mysqlクライアントのデフォルトの文字セットをdefault-character-set=utf8mb4に設定します

[mysqld]
# ポート 3308 を設定 port = 3308
# mysqlのインストールディレクトリをbasedir=D:\mysql-5.7.25-win32に設定します
# MySQL データベース データの保存ディレクトリを設定します。MySQL 8 以降では次の設定は必要ありません。システムが自動的に生成します。そうでない場合はエラーが報告される可能性があります。datadir=D:\mysql-5.7.25-win32\data3308
# 許可される最大接続数 max_connections=200
# サーバーが使用するデフォルトの文字セットは、8 ビットの latin1 文字セットです。character-set-server=utf8mb4
# 新しいテーブルを作成するときに使用されるデフォルトのストレージエンジン default-storage-engine=INNODB
明示的なタイムスタンプのデフォルト=true
ログエラー=D:\mysql-5.7.25-win32\mysql3308.err
pid ファイル = D:\mysql-5.7.25-win32\mysqld3308.pid
ソケット =D:\mysql-5.7.25-win32\mysql3308.sock

次に、MySQL インスタンスを起動します。共有メモリを介してクライアントを接続するプロセスは、上記のプロセスと同様です。各接続に --shared-memory オプションを使用し、各インスタンスに一意の共有メモリ名を指定するには --shared-memory-base-name オプションを使用します。

Windows で複数の MySQL インスタンスを Windows サービスとして起動する

Windows では、MySQL サーバーを Windows サービスとして実行できます。複数の MySQL サーバーをセットアップするには、各インスタンスが異なるサービス名を使用し、他のすべてのパラメータが各インスタンスに対して一意の値を持つようにする必要があります。 MySQL サーバーを Windows サービスとして登録するには、mysqld --install または mysqld --install-manual オプションを使用します。

上記の情報に基づいて、複数の Windows サービスを設定する方法はいくつかあります。 Windows サービスを登録する前に、既存の Windows サービスをすべてシャットダウンして削除する必要があります。

方法1

標準オプション ファイルですべてのサービス オプションを指定します。これには、MySQL サービスごとに異なるサービス名を指定する必要があります。ポート 3307 の MySQL インスタンスのサービス名が mysqld1、ポート 3308 の MySQL インスタンスのサービス名が mysqld2 であるとします。次に、D:\mysql-5.7.25-win32\my.ini は次のように設定されます。

[mysqld1]
# ポート 3307 を設定 port = 3307
# mysqlのインストールディレクトリをbasedir=D:\mysql-5.7.25-win32に設定します
# MySQL データベース データの保存ディレクトリを設定します。MySQL 8 以降では次の設定は必要ありません。システムが自動的に生成します。そうでない場合はエラーが報告される可能性があります。datadir=D:\mysql-5.7.25-win32\data3307
# 許可される最大接続数 max_connections=200
# サーバーが使用するデフォルトの文字セットは、8 ビットの latin1 文字セットです。character-set-server=utf8mb4
# 新しいテーブルを作成するときに使用されるデフォルトのストレージエンジン default-storage-engine=INNODB
明示的なタイムスタンプのデフォルト=true
ログエラー=D:\mysql-5.7.25-win32\mysql3307.err
pid ファイル = D:\mysql-5.7.25-win32\mysqld3307.pid
ソケット =D:\mysql-5.7.25-win32\mysql3307.sock


[mysqld2]
# ポート 3308 を設定 port = 3308
# mysqlのインストールディレクトリをbasedir=D:\mysql-5.7.25-win32に設定します
# MySQL データベース データの保存ディレクトリを設定します。MySQL 8 以降では次の設定は必要ありません。システムが自動的に生成します。そうでない場合はエラーが報告される可能性があります。datadir=D:\mysql-5.7.25-win32\data3308
# 許可される最大接続数 max_connections=200
# サーバーが使用するデフォルトの文字セットは、8 ビットの latin1 文字セットです。character-set-server=utf8mb4
# 新しいテーブルを作成するときに使用されるデフォルトのストレージエンジン default-storage-engine=INNODB
明示的なタイムスタンプのデフォルト=true
ログエラー=D:\mysql-5.7.25-win32\mysql3308.err
pid ファイル = D:\mysql-5.7.25-win32\mysqld3308.pid
ソケット =D:\mysql-5.7.25-win32\mysql3308.sock

Windows が各サービスに対して正しい実行可能ファイルを登録できるように、完全なサービス パス名を使用してサービスを登録します。

D:\mysql-5.7.25-win32\bin>mysqld --install mysqld1
サービスが正常にインストールされました。

D:\mysql-5.7.25-win32\bin>mysqld --install mysqld2
サービスが正常にインストールされました。

MySQL サービスを開始するには、サービス マネージャーを使用するか、net start servicename を使用します。

C:\Users\Administrator>net start mysqld1

mysqld1 サービスが起動しています。

mysqld1 サービスが正常に開始されました。

C:\Users\Administrator>net start mysqld2

mysqld2 サービスが起動しています。

mysqld2 サービスが正常に開始されました。

MySQL サービスを停止するには、サービス マネージャーを使用するか、net stop servicename を使用します。

C:\Users\Administrator>net stop mysqld1

mysqld1 サービスが停止しています。

mysqld1 サービスが正常に停止されました。

C:\Users\Administrator>net stop mysqld2

mysqld2 サービスが停止しています。

mysqld2 サービスが正常に停止されました。

サービスの削除

D:\mysql-5.7.25-win32\bin>mysqld --remove mysqld1
サービスが正常に削除されました。

D:\mysql-5.7.25-win32\bin>mysqld --remove mysqld2
サービスが正常に削除されました。

方法2

オプションを指定するには、MySQL サービスごとに個別のファイルを使用し、サービスを登録するときに --defaults-file オプションを使用して、各サーバーに使用するオプション ファイルを指示します。この場合、各ファイルは [mysqld] オプション グループを使用します。

my3307.cnf ファイルの内容は次のとおりです。

[mysql]
# mysqlクライアントのデフォルトの文字セットをdefault-character-set=utf8mb4に設定します

[mysqld]
# ポート 3307 を設定します port = 3307
# mysqlのインストールディレクトリをbasedir=D:\mysql-5.7.25-win32に設定します
# MySQL データベース データの保存ディレクトリを設定します。MySQL 8 以降では次の設定は必要ありません。システムが自動的に生成します。そうでない場合はエラーが報告される可能性があります。datadir=D:\mysql-5.7.25-win32\data3307
# 許可される最大接続数 max_connections=200
# サーバーが使用するデフォルトの文字セットは、8 ビットの latin1 文字セットです。character-set-server=utf8mb4
# 新しいテーブルを作成するときに使用されるデフォルトのストレージエンジン default-storage-engine=INNODB
明示的なタイムスタンプのデフォルト=true
ログエラー=D:\mysql-5.7.25-win32\mysql3307.err
pid ファイル = D:\mysql-5.7.25-win32\mysqld3307.pid
名前付きパイプを有効にする
ソケット =D:\mysql-5.7.25-win32\mysql3307.sock

my3308.cnf ファイルの内容は次のとおりです。

[mysql]
# mysqlクライアントのデフォルトの文字セットをdefault-character-set=utf8mb4に設定します

[mysqld]
# ポート 3308 を設定 port = 3308
# mysqlのインストールディレクトリをbasedir=D:\mysql-5.7.25-win32に設定します
# MySQL データベース データの保存ディレクトリを設定します。MySQL 8 以降では次の設定は必要ありません。システムが自動的に生成します。そうでない場合はエラーが報告される可能性があります。datadir=D:\mysql-5.7.25-win32\data3308
# 許可される最大接続数 max_connections=200
# サーバーが使用するデフォルトの文字セットは、8 ビットの latin1 文字セットです。character-set-server=utf8mb4
# 新しいテーブルを作成するときに使用されるデフォルトのストレージエンジン default-storage-engine=INNODB
明示的なタイムスタンプのデフォルト=true
ログエラー=D:\mysql-5.7.25-win32\mysql3308.err
pid ファイル = D:\mysql-5.7.25-win32\mysqld3308.pid
ソケット =D:\mysql-5.7.25-win32\mysql3308.sock

各MySQLインスタンスをWindowsサービスとして登録する

D:\mysql-5.7.25-win32\bin>mysqld --install mysqld1 --defaults-file=D:\mysql-5.7.25-win32\my3307.cnf
サービスが正常にインストールされました。


D:\mysql-5.7.25-win32\bin>mysqld --install mysqld2 --defaults-file=D:\mysql-5.7.25-win32\my3308.cnf
サービスが正常にインストールされました。

サービスを開始する

C:\Users\Administrator>net start mysqld1

mysqld1 サービスが起動しています。

mysqld1 サービスが正常に開始されました。

C:\Users\Administrator>net start mysqld2

mysqld2 サービスが起動しています。

mysqld2 サービスが正常に開始されました。

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。

以下もご興味があるかもしれません:
  • CentOS 6.5 に MySQL 5.7.17 バイナリ インストールとマルチインスタンス構成を展開する
  • MySQL マルチインスタンス構成ソリューション
  • Linux に MySQL の複数のインスタンスをインストールしてデータ バックアップ サーバーとし、マルチ マスターから 1 つのスレーブへのマルチ インスタンス バックアップを実現する
  • MySQLの導入と1台のマシンでのマルチインスタンス導入を迅速に実装
  • MySQLマルチインスタンスインストールに基づく詳細な分析
  • mysqld_multi を使用して単一のマシンに複数のインスタンスをデプロイする方法に関する MySQL チュートリアル
  • シェルはmysqld_multiを使用して、複数のインスタンスのスレーブライブラリスクリプトを自動的に作成します。

<<:  Linux7 ベースの Hadoop のインストールと構成の詳細なグラフィック説明

>>:  React Nativeでaxiosを使用してネットワークリクエストを行う方法

推薦する

vue-nuxt ログイン認証の実装

目次導入リンク始めるコードを読み進めてくださいプロキシ設定傍受を要求する異なるプレフィックスを持つイ...

jQueryは居住地を選択するためのドロップダウンボックスを実装します

居住地を選択するためのドロップダウンボックスをjQueryで実装するための具体的なコードは参考までに...

Power Shell に vim 実装コード例を追加する方法

1. Vimの公式ウェブサイトにアクセスして、オペレーティングシステムに適した実行ファイルをダウンロ...

mysql8.0.20 のダウンロードとインストールおよび発生した問題 (図とテキスト)

1.ブラウザでmysqlを検索してダウンロードしてインストールしますアドレス: https://d...

Dockerを使用してサーバー上で複数のPHPバージョンを実行する

PHP7 がリリースされてからかなり時間が経ちますが、パフォーマンスが大幅に向上したことはよく知られ...

スケーラブルな列の完全な例を実現するための Ant 設計 Vue テーブル

ant-design-vue テーブルのスケーラブルな列の問題に対する完璧なソリューション。固定列と...

PDO を使用して SQL インジェクションを防ぐ原理の分析

序文この記事では、SQL インジェクションを回避するために pdo の前処理メソッドを使用します。詳...

Linux サーバーのクイックアンインストールとノード環境のインストール (簡単に始められます)

1.まずnpmをアンインストールする sudo npm アンインストール npm -g 2. ノー...

Kali Linux Vmware 仮想マシンのインストール (図とテキスト)

準備: 1. VMwareワークステーションソフトウェアをインストールする2. Kali Linux...

W3Cチュートリアル(1):W3Cを理解する

1994 年に設立された組織である W3C は、共通プロトコルの開発を促進し、それらの相互運用性を確...

Easyswoole ワンクリック インストール スクリプトとパゴダ インストール エラー

よくある質問easyswoole を初めて使用する場合は、次のような問題に遭遇することがよくあります...

HTMLウェブページテーブル構造化マークアップの応用に関する簡単な説明

Web テーブルの構造マークアップについて説明する前に、いくつかの画像を見てみましょう。 HTML ...

自動行折り返し機能付き CSS Flex レイアウトのサンプル コード

フレックス コンテナーを作成するには、要素に display: flex プロパティを追加するだけで...

js は axios 制限リクエスト キューを実装します

目次背景は次のとおりです。何が起こるでしょうか?背景は次のとおりです。実際の開発では、ネットワークの...

JavaScript キャンバスで 9 マスのグリッドカットの効果を実現

この記事では、9グリッドカット効果を実現するためのキャンバスの具体的なコードを紹介します。具体的な内...