web-dev-qa-db-ja.com

Windows 2012に複数のMySQLインスタンスをインストールして起動する方法

Windows 2012 VMにMySQL 5.7をインストールしました。複数のインスタンスを作成して実行しようとしていますが、そのような単純なものが機能しないことに非常に不満を感じています。

MySQLをC:\ Program Files\MySQL\MySQL Server 5.7にインストールしました。これはデフォルトの場所であり、フォルダをコピーして別のコピーを作成しました別のインスタンスを作成します(これがどのように機能するのでしょうか?)

両方のMySQLインスタンスが下の画像に表示されています。

Server1Server1

Server2
Server2

両方のサーバーのINI設定を以下に示します。

Server1

server-id = 1
log-bin = "mysql-bin"
binlog-ignore-db = test
binlog-ignore-db = information_schema
replicate-ignore-db = test
replicate-ignore-db = information_schema
relay-log = "mysql-relay-log"
auto-increment-increment = 2
自動インクリメントオフセット= 1

Server2
server-id = 2
log-bin = "mysql-bin"
binlog-ignore-db = test
binlog-ignore-db = information_schema
replicate-ignore-db = test
replicate-ignore-db = information_schema
relay-log = "mysql-relay-log"
auto-increment-increment = 2
自動増分オフセット= 2

コマンドプロンプトを開き、次のように入力して、両方のサーバーを実行しています。
"C:\ Program Files\MySQL\MySQL Server 5.7\bin\mysqld"
"C:\ Program Files\MySQL\MySQL Server 5.7-2\bin\mysqld"

エラーが表示されないため、コマンドは正常に実行されているようですが、タスクマネージャーでmysqlプロセスが実行されているかどうかを確認すると、何も表示されません。

何が悪いのですか?

12
Frank Martin

私が行っていた間違いは、MySQLインストールフォルダー全体をコピーすることでした。このフォルダをコピーする必要はありません。

  • 実行するインスタンスごとに新しいiniファイルを作成するだけです(上記の例)。 C:\ MyInstances\my1.ini。
  • 次に、新しいフォルダを作成します。 C:\ MyInstances\data1のdata1とmysqlおよびinformation_schemaデータベースをコピーします。 MySQLがインストールされているデータフォルダからこれらのデータベースを取得します。 Windows 2012(およびおそらく他のサーバーOS)では、通常C:\ ProgramData\MySQLです。
  • 次に、iniファイルで以下を定義します。

datadir = C:/ MyInstances/data1

  1. 次に、サービスとしてMySQLをインストールする次のコマンドを実行します。サービスが作成されたら、単にサービスを実行します。

MySqlpath\bin\mysqld --install mysqld1 --defaults-file = PATH_TO_YOUR_INI_FILE

もちろん、各iniファイルで、@ Anthony Fornitoによって言及されているように、異なるポート番号を定義する必要があります。

11
Frank Martin
  1. 別のデータフォルダーを作成し、ネットワークサービスにフルコントロールを付与します。
  2. My.iniファイルを新しいデータフォルダーにコピーします。
  3. Mysql-init.txtという名前のデータディレクトリに新しいファイルを作成し、1行を追加して、rootユーザーのパスワードが設定されていることを確認します。

    • ALTER USER 'root'@'localhost' IDENTIFIED BY '[Enter Password]';
  4. My.iniファイルを編集して、ポート、ソケット、datadir、および共有メモリのベース名を変更します。これらはすべて、MySQLの他のインスタンスとは異なる必要があります。

my.ini:

[client]
port=3333
socket=MYSQL2_INST.SOCK
shared-memory-base-name=MYSQL2_INST

[mysqld]
shared-memory-base-name=MYSQL2_INST
socket=MYSQL2_INST.SOCK
port=3333
basedir="C:/Program Files/MySQL/MySQL Server 5.7"
datadir="E:/MySQL2/Data"
  1. コマンドラインから〜\ MySQL Server X.Y\bin \に移動して実行します

    • mysqld --install MySQL57-2 --defaults-file=E:\mysql2\data\my.ini --init-file=E:\mysql2\data\mysql-init.txt
  2. サービスを開始する

    • NET START MySQL57-2
  3. サービスが正常に開始したことを確認してください。そうでない場合は、データフォルダーでエラーログを見つけることができます。それ以外の場合は、問題ありません。

11

同じポートで実行しようとしていたと思います。

異なるようにポート番号を変更しました

11
Anthony Fornito