目次
はじめに
こんにちは。ネットワークエンジニアの「だいまる」です。
今回は、MariaDBが稼働しているサーバに複数インスタンスを立ち上げ、用途が異なるデータベース環境を構築する方法についてまとめていきます。
複数インスタンスの作成方法
概要
同一サーバ上のMariaDBインスタンスを複数作ることで異なるアプリケーション向けのデータベースを提供することができます。
個人開発では、限られた計算リソース・データ容量のため、同一サーバ上に複数のアプリケーションを構築することが無難かと思います。
最近は、Dockerで解決できると思いますが、あえてインスタンスを複数作成するという手を選びました。
実装方法
Step1:データディレクトリの作成
MariaDBの新規インスタンスに関するデータを保存するためのディレクトリを作成します。
設定方法
daimaru@Daimaru_Test:~$ sudo mkdir /var/lib/mysql_second
daimaru@Daimaru_Test:~$ sudo chown -R mysql:mysql /var/lib/mysql_second
Step2:設定ファイルの編集・作成
次に、インスタンスの設定を行うために「/etc/mysql/mariadb.conf.d」配下に「secondary.cnf」を作成し、設定を定義します。
設定ファイル(secondary.conf)
[mysqld.second] ###systemctl start mariadb@<ホゲホゲ>で使う名前を入力###
port = 3307
datadir = /var/lib/mysql_second
socket = /run/mysqld/mysqld2.sock
log_error = /var/log/mysql/error2.log
Step3:新規データベースの初期化
以下コマンドでデータベースの初期化を実施します。
設定コマンドと出力ログ
daimaru@Daimaru-test:/etc/mysql/mariadb.conf.d$ sudo mariadb-install-db --user=mysql --datadir=/var/lib/mysql_second
Installing MariaDB/MySQL system tables in '/var/lib/mysql_second' ...
OK
To start mariadbd at boot time you have to copy
support-files/mariadb.service to the right place for your system
Two all-privilege accounts were created.
One is root@localhost, it has no password, but you need to
be system 'root' user to connect. Use, for example, sudo mariadb
The second is mysql@localhost, it has no password either, but
you need to be the system 'mysql' user to connect.
After connecting you can set the password, if you would need to be
able to connect as any of these users with a password and without sudo
See the MariaDB Knowledgebase at https://mariadb.com/kb
You can start the MariaDB daemon with:
cd '/usr' ; /usr/bin/mariadbd-safe --datadir='/var/lib/mysql_second'
You can test the MariaDB daemon with mariadb-test-run.pl
cd '/usr/share/mariadb/mariadb-test' ; perl mariadb-test-run.pl
Please report any problems at https://mariadb.org/jira
The latest information about MariaDB is available at https://mariadb.org/.
Consider joining MariaDB's strong and vibrant community:
https://mariadb.org/get-involved/
Step4:エラーログファイルの作成
事前に以下コマンドでエラーログファイルを作成します。
作成コマンド
daimaru@Daimaru-test:$ sudo touch /var/log/mysql/error2.log
daimaru@Daimaru-test:$ sudo chown mysql:mysql /var/log/mysql/error2.log
daimaru@Daimaru-test:$ sudo chmod 660 /var/log/mysql/error2.log
Step5:インスタンス起動
systemctlコマンドでdaemonを再読み込みしてから起動してみます。
起動コマンド
daimaru@Daimaru-test:$ sudo systemctl daemon-reload
daimaru@Daimaru-test:$ sudo systemctl start mariadb@secondary
Step6:状態確認とログイン
以下コマンドで状態確認を行い「Active」になっていれば成功です。
確認コマンド
Daimaru@Daimaru-Test:/etc/mysql/mariadb.conf.d$ sudo systemctl status mariadb@second
● mariadb@second.service - MariaDB 11.4.10 database server (multi-instance second)
Loaded: loaded (/lib/systemd/system/mariadb@.service; disabled; vendor preset: enabled)
Active: active (running) since Mon 2026-03-16 15:54:55 JST; 10s ago
Docs: man:mariadbd(8)
https://mariadb.com/kb/en/library/systemd/
Process: 857432 ExecStartPre=/usr/bin/mariadb-install-db $MYSQLD_MULTI_INSTANCE --rpm (code=exited, status=0/SUCCESS)
Process: 857457 ExecStartPost=/etc/mysql/debian-start (code=exited, status=0/SUCCESS)
Main PID: 857446 (mariadbd)
Status: "Taking your SQL requests now..."
Tasks: 11 (limit: 15227)
Memory: 110.9M
CPU: 525ms
CGroup: /system.slice/system-mariadb.slice/mariadb@second.service
└─857446 /usr/sbin/mariadbd --defaults-group-suffix=.second
また、ログインは以下のコマンドでログインを実施し、ログインできれば完了です。
ログインコマンド
sudo mariadb -P 3307 -S /run/mysqld/mysqld2.sock -u root
最後に
今回は、MariaDB(MySQL)の複数インスタンスの生成方法をまとめてみました。
次回以降もDB周りは運用していく上で困り、解決したことを記事に載せていきたいと思います。
皆さんの解決策の1つになれば、幸いです。
