単一のサーバーに複数のMySQLインスタンスをインストールする「Debianの方法」とは何ですか?


9

単一のサーバーで複数のMySQLインスタンスを設定する「Debianの方法」を知っていますか?サーバーは、複数のリモートデータベースから複製されたデータを受け取ります。

mysqlsandboxのようなスクリプトを使用することもできますが、Debianパッケージに固執することを好み、将来、それほど複雑化することなくセットアップをアップグレードできるようにしたいと考えています。別のソリューションはmysqlmanagerです。これはMySQL 5.1で動作しますが、5.5で非推奨になり、リリースされなくなりました。

では、単一のDebianサーバーで複数のMySQLインスタンスを実行する「ベストプラクティス」は何でしょうか。


現在、そのような場合にdockerを使用できます。
ALex_hha

回答:


12

mysqld_multimy.cnf を実行して正しく設定するのと同じくらい簡単だと思います。mysqld_multimysqlディストリビューションの一部であり、パッケージ化されたフリルではありません。

あるパッチ作るため/usr/share/mysql/mysqld_multi.serverに使用するために適切/etc/init.d別のパッチ作るためmysqld_multiに使用するファイルが/etc/mysql/conf.d

mysql_install_db次のようなコマンドを使用して、新しいインスタンスのMySQLデータディレクトリを初期化できます。

mysql_install_db --datadir=/var/lib/mysql2

新しく作成したインスタンスのrootパスワードを変更することを忘れないでください:

mysqladmin --port 3307 --user=root password 'new-password'

ありがとう。実際に使用しますか?ホラーストーリーやヒントはありますか?
pQd 2012年

1
私のホラーストーリーは、debianのmysql initスクリプトがシャットダウンに時間がかかりすぎたためにmysqlを正常にシャットダウンしなかったため、2日間のデータ復旧です。それ以来、私はdebian mysqlパッケージを使用せず、Perconaのバイナリ配布とその中のinitscriptのみを使用します
Gabor Vincze

@GaborVincze-それはmysqld_multiセットアップまたは「通常の」単一のmysql-instanceインストールでしたか?
pQd 2012年

通常のインストールでした。5.1
Gabor Vincze 2012年

1
実際にはmysqld_multiを使用しています。最も難しいのは、mysqld_multi / mysqladminを使用してインスタンスを起動/シャットダウンするのではなく、/ etc / init.d / mysqldを再起動する必要があることです。これを簡単に実行できる、既定のスクリプトはそれほど多くありません。一度マスターすると、それは古い帽子になり、インスタンスを起動するための非常に便利な方法です。
Thinice

3

Debian 8では、Systemdメカニズムを使用できますmysqld_multi

注:私はMariaDBバージョンを使用しています!「クラシック」MySQLパッケージで動作するかどうかは不明です。

から/lib/systemd/system/mariadb@.service

mariadbのマルチインスタンスバージョン。複数のバージョンを一度に実行する場合。mareradb @ bootstrapがGaleraをブートストラップするためにも使用されます。

構成ファイル/etc/mysql/conf.d/ my {instancename} .cnfを作成します

systemctl start mariadb@{instancename}.serverとして開始

したがって、ファイルを作成し、その/etc/mysql/conf.d/myserver2.cnf中に新しいpid / socket / datadirファイルとネットワークポートを指定します。

[mysqld]
user        = mysql
pid-file    = /var/run/mysqld/mysqld-server2.pid
socket      = /var/run/mysqld/mysqld-server2.sock
port        = 3307
basedir     = /usr
datadir     = /var/lib/mysql-server2
tmpdir      = /tmp

EDITは:最初のMySQLインスタンスで、この設定ファイルを読んでいないことを気をつけなる!includedir /etc/mysql/conf.d/*の下部にあります/etc/mysql/my.cnf。それが事実である場合、交換する!includedir!includemyserver2.cnf以外の各設定ファイルの:

#!includedir /etc/mysql/conf.d/*
!include /etc/mysql/conf.d/conf1.cnf
!include /etc/mysql/conf.d/confX.cnf

MySQLの公式ドキュメントでは[mysqld][mysqld@server2]https://dev.mysql.com/doc/refman/5.7/en/using-systemd.html#systemd-multiple-mysql-instances)という名前を付ける必要があることを示していますが、これはMariaDBでは機能しません。ですから、そのままにし[mysqld]ます。

新しいデーモンを開始する前に、datadirと必要なファイルを作成することを忘れないでください。

mkdir /var/lib/mysql-server2
chown mysql:mysql /var/lib/mysql-server2
mysql_install_db --datadir=/var/lib/mysql-server2

また、systemdデーモンの設定をリロードします。

systemctl daemon-reload

そして、起動時にこのデーモンを起動したい場合:

systemctl enable mariadb@server2

開始するには:

service mariadb@server2 start

メイン(インスタンス化されていない)mysqlはを読み取り/etc/my.cnf、それが理由です。
マイケルハンプトン

私は私の回答を編集しました。実際、最初のインスタンスはserver2.cnfファイルをで読み取ったようです!includedir /etc/mysql/conf.d/*。セキュリティを向上させるために、各conf.dファイルを手動で含めました
最悪の問題
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.