Help us understand the problem. What is going on with this article?

CentOS 7 + MySQL 5.7で複数のMySQLインスタンスを起動する

More than 3 years have passed since last update.

CentOS 6以前とMySQL 5.6以前の構成ではmysqld_multiというものを使っていました。
これはMySQLをインストールすると入っているもので、複数のMySQLインスタンスを立ち上げたいときに使用します。

複数のインスタンスを立ち上げたいときとは、例えば本番環境で物理的に別れているDBサーバーを開発環境で再現したり、レプリケーションをテストをしたりするときに使います。

MySQLのオフィシャルサイトで紹介されていた方法があまりに簡単だったので、ここでも紹介します。
以下の方法はMySQL 5.7.13以降でsystemctlを利用するシステムで有効です。

MySQL 5.7で複数インスタンスの起動はできるか

もちろんできます。結局引数でdatadirとかpidファイルの場所とか指定すれば、自力でも設定は可能です。

ちなみにMySQL 5.7.13のsystemctlプラットフォーム向けのパッケージではmysqld_multiはインストールされないそうです。

今からご紹介する方法以下のページに記載されている方法になります。

2.5.10 Managing MySQL Server with systemd

systemctl + MySQL 5.7で複数インスタンスの起動する方法

MySQLのインストール方法は割愛します。
私は以下の設定にしているので、/etc/my.cnfを書き換えます。

https://github.com/tomgoodsun/centos7_lamp_configs/blob/master/config/etc/my.cnf

今回はポート番号3306と3307のインスタンスを立ち上げますので、まずはそのためのディレクトリを作成しましょう。

[root@localhost ~]# mkdir /var/lib/mysqld/mysql_{3306,3307}; chown mysql: /var/lib/mysqld/mysql_{3306,3307}

次はmy.cnfの設定です。以下を追記します。

[mysqld@mysql_3306]
port=3306
datadir=/var/lib/mysqld/mysql_3306
socket=/var/lib/mysqld/mysql_3306/mysql.sock
log-error=/var/log/mysqld_3306.log

[mysqld@mysql_3307]
port=3307
datadir=/var/lib/mysqld/mysql_3307
socket=/var/lib/mysqld/mysql_3307/mysql.sock
log-error=/var/log/mysqld_3307.log

ここまで来たら、起動するだけです。
以下のコマンドで起動と自動起動設定をします。

[root@localhost ~]# systemctl start mysqld@mysql_3306
[root@localhost ~]# systemctl enable mysqld@mysql_3306

初期パスワードは/var/lib/mysqld_3306.logに記録されていますので、以下の手順と同様のセットアップをするだけです。

https://github.com/tomgoodsun/centos7_lamp_configs#mysql-serverのセットアップ

最後にもうひとつのmysqld_3307も設定して完成。

まとめ

mysqld_multiのときは起動スクリプトを書いたり、それがうまく動かなかったり面倒くさかったのですが、これだとsystemctlに全部任せられるので楽です。

tomgoodsun
プログラマやってます。サーバー構築からウェブアプリ作成まで。分類はPHPer属だと思います。
http://www.tom-gs.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした