開発環境用にMySQL5.6を複数インスタンス起動させる(mysqld_multi)

テーブル分散などでマスター1、マスター2にそれぞれスレーブが必要な場合、本番はいいけど、開発環境までサーバーをいくつも作るのはちょっとなので、1つのサーバーにmysqld_multiを使ってMySQLを複数立ち上げます。

CentOS6.4のMySQL5.6でやります。
MySQLはOracleからrpmをWgetしたもをインストール済みで、mysql_secure_installationで最低限の設定はしてある状態。


mkdir -p /var/lib/mysql_multi/mysqld{1,2,3,4}
mysql_install_db --datadir=/var/lib/mysql_multi/mysqld1 --user=mysql
chown -R mysql. /var/lib/mysql_multi/

各データディレクトリを作成して、mysql_install_dbでセットアップ


mysql_install_db --datadir=/var/lib/mysql_multi/mysqld1 --user=mysql
mysql_install_db --datadir=/var/lib/mysql_multi/mysqld2 --user=mysql
mysql_install_db --datadir=/var/lib/mysql_multi/mysqld3 --user=mysql
mysql_install_db --datadir=/var/lib/mysql_multi/mysqld4 --user=mysql

my.confに[mysqld_multi]と各インスタンスの設定を行う。
mysqldはmysqld_safeを指定して、[mysqld_multi]のuser、passはmysqladminの情報
あとでmysqladminのパスワードなどはセットアップします。

[root@so01b ~]#vi /etc/my.conf

[mysqld_multi]
mysqld        = /usr/bin/mysqld_safe
mysqladmin    = /usr/bin/mysqladmin
log           = /var/log/mysql/multi.log
user          = root
password      = 2aoSEsRs4SSp

[mysqld1]
server-id     = 101
port          = 33061
basedir       = /var/lib/mysql
datadir       = /var/lib/mysql_multi/mysqld1/
socket        = /var/lib/mysql_multi/mysqld1/mysql.sock
pid-file      = /var/lib/mysql_multi/mysqld1/mysql.pid
log-error     = /var/log/mysql/mysqld1_error.log
mysqld        = mysqld_safe

[mysqld2]
server-id     = 102
port          = 33062
basedir       = /var/lib/mysql
datadir       = /var/lib/mysql_multi/mysqld2/
socket        = /var/lib/mysql_multi/mysqld2/mysql.sock
pid-file      = /var/lib/mysql_multi/mysqld2/mysql.pid
log-error     = /var/log/mysql/mysqld2_error.log
mysqld        = mysqld_safe

[mysqld3]
...
[mysqld4]
...

これで大体完了、mysqld_multiで状態を確認する。

分かりにくいですが、「is not running」です。

[root@so01b~]# mysqld_multi report
Reporting MySQL servers
MySQL server from group: mysqld1 is not running
MySQL server from group: mysqld2 is not running
MySQL server from group: mysqld3 is not running
MySQL server from group: mysqld4 is not running

mysqld_multiで起動

[root@so01b~]# mysqld_multi start
[root@so01b~]#
[root@so01b~]# mysqld_multi report
Reporting MySQL servers
MySQL server from group: mysqld1 is  running
MySQL server from group: mysqld2 is  running
MySQL server from group: mysqld3 is  running
MySQL server from group: mysqld4 is  running

mysqld_multiで起動した、ポート別のMySQLのmysqladminのパスワード変更
インスタンス全部に適応すると、mysqld_multiでstopができるようになります。

[root@so01b~]#  mysqladmin password 2aoSEsRs4SSp -S/var/lib/mysql_multi/mysqld4/mysql.sock -u root -p

mysqld_multiで停止

止まらない場合、mysqladminのパスワードが違ったりして、インスタンスをmysql_multiが停止できてません。
また、mysqld_multiは標準出力にエラーは出しませんし、OKとも言いません。

[root@so01b~]# mysqld_multi stop
[root@so01b~]# 
[root@so01b~]# mysqld_multi report
Reporting MySQL servers
MySQL server from group: mysqld1 is not running
MySQL server from group: mysqld2 is not running
MySQL server from group: mysqld3 is not running
MySQL server from group: mysqld4 is not running

mysqld_multiで起動した、ポート別のMySQLへ接続

[root@so01b~]# mysql -u root -p --socket=/var/lib/mysql_multi/mysqld1/mysql.sock
New Posts
Android APIよく忘れるのでメモ

Android 1.0 1 Base Android 1.1 2 Base1.1 Android 1.5 3 Cupcake Android 1.6 4 Donut Android 2.0 5 Eclair Android 2.0.1 6 Eclair 0.1 Android 2.1.x 7 Eclair mr1 Android 2.2.x 8 Froyo Android 2.3 9 Gingerbread Android 2.3.1 Android 2.3.2 Android 2.3.3 10 Gingerbread mr1 Android 2.3.4 Andr

Android minSdkVersion の引き上げ

昔のアプリを久しぶりに修正しようと思ったら、minSdkVersionを引き上げる必要があった。 Error:Execution failed for task ':flatalk:processDebugManifest'. > Manifest merger failed : uses-sdk:minSdkVersion 9 cannot be smaller than version 14 declared in library [com.android.support:appcompat-v7:26.0.0-alpha1] /Users/admin/.android/build-cache/df7faf3c442bb6a7448aef64241ef184a528/output/An

Cordova Android Runtime Permission Plugin - cordova-plugin-android-permissionsでパーミッション要求が行われない。 requestPermission is not work

cordova-plugin-android-permissions permissions.requestPermission(successCallback, errorCallback, permission); ステップ実行で確認すると、hasPermissionではstatus.hasPermissioがFALSEになっているのですが 、デバック実行しても、パーミション要求が動かないことがありました。 原因はpluginの入れ替えで、要求するパーミンションがAndroidManifest.xmlから消えていたのが原因でした、Manifestに無いパーミッションはリクエストしても要求画面は開きません。 cordova-plugin-cameraを入れ直した際に、Manif

Youtube API - ユーチューブのカテゴリを取得する( VideoCategories: list)

GET https://www.googleapis.com/youtube/v3/videoCategories partのみ必須になっていたけど、regionCodeも必要だった。。今回はJPを指定。 参照:https://developers.google.com/youtube/v3/docs/videoCategories/list#try-it { "kind": "youtube#videoCategoryListResponse", "etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/siiWQ_WM0OtxtxK7NUUJKFwqDRc\"", "items": [ { "kind": "youtube#videoC

Cordova Plugin作成 ( plugin.xml記載ミスでassets全部消えた。。)

<resource-file src="res/assets/cordova-plugin-4assets.js" target="assets" /> target-dirとtargetを記載ミスしてました。 正しくは、 <resource-file src="res/assets/cordova-plugin-4assets.js" target="assets/cordova-plugin-4assets.js" /> <resource-file src="res/assets/cordova-plugin-4assets.js" target-dir="assets/" /> プラグイン削除時にtargetも消されるので、assetsご


Share Link

Web Contents & Apps


Tags


Posts


Category