MySQLマルチインスタンスインストールの導入


  • MySQL 5.7バイナリパッケージを指定ディレクトリに解凍[root@MySQL ~]# tar zxvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz -C/usr/local/
  • MySQLソフトリンクを作成[root@MySQL ~]#mv/usr/local/mysql-5.7.18-linux-glibc2.5-x86_64/usr/local/mysql
  • MySQLユーザーの作成[root@MySQL ~]#groupadd -r mysql[root@MySQL ~]# useradd -r -g mysql -s/bin/false -M mysql
  • MySQLバイナリパッケージディレクトリにmysql-filesディレクトリを作成[MySQLデータインポート/エクスポートデータ専用ディレクトリ][root@MySQL ~]# mkdir -v/usr/local/mysql/mysql-files mkdir: created directory `/usr/local/mysql/mysql-files'
  • マルチインスタンスデータディレクトリを作成[root@MySQL ~]# mkdir -vp/data/mysql_data{1..4} mkdir: created directory /data'
    mkdir: created directory
    /data/mysql_data1' mkdir: created directory /data/mysql_data2'
    mkdir: created directory
    /data/mysql_data3' mkdir: created directory `/data/mysql_data4'
  • MySQLバイナリパッケージディレクトリを変更した所属ユーザと所属グループ1[root@MySQL ~]# chown root.mysql -R/usr/local/mysql
  • MySQLマルチインスタンスデータディレクトリとデータインポート/エクスポート専用ディレクトリの所属ユーザと所属グループを変更[root@MySQL ~]# chown mysql.mysql -R/usr/local/mysql/mysql-files/data/mysql_data{1..4}
  • MySQLプロファイル/etc/myの構成cnf[mysqld_multi] mysqld =/usr/local/mysql/bin/mysqld mysqladmin =/usr/local/mysql/bin/mysqladminlog =/tmp/mysql_multi.log

  • [mysqld 1]#データディレクトリを設定[マルチインスタンスでは必ず異なる]datadir=/data/mysql_Data 1#sock格納ファイル名を設定[マルチインスタンスでは必ず異なる]socket=/tmp/mysql.sock 1#リスニングオープンポートの設定[マルチインスタンスでは必ず異なる]port=3306#実行ユーザーuser=mysql#監視performance_を閉じるschema=off#innodbキャッシュサイズinnodb_の設定buffer_pool_size=32 M#リスニングIPアドレスbind_の設定address=0.0.0.0#DNS逆解析skip-name-resolve=0**を閉じる
    [mysqld2] datadir =/data/mysql_data2socket =/tmp/mysql.sock2 port = 3307 user = mysql performance_schema = off innodb_buffer_pool_size = 32M bind_address = 0.0.0.0 skip-name-resolve = 0
    [mysqld3] datadir =/data/mysql_data3socket =/tmp/mysql.sock3 port = 3308 user = mysql performance_schema = off innodb_buffer_pool_size = 32M bind_address = 0.0.0.0 skip-name-resolve = 0
    [mysqld4] datadir =/data/mysql_data4socket =/tmp/mysql.sock4 port = 3309 user = mysql performance_schema = off innodb_buffer_pool_size = 32M bind_address = 0.0.0.0 skip-name-resolve = 0
  • 各インスタンスを初期化[初期化が完了するとランダムパスワードを出力ログに添付する]root@MySQL ~]#/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql_data1 [root@MySQL ~]#/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql_data2 [root@MySQL ~]#/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql_data3 [root@MySQL ~]#/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql_data4
  • 各インスタンスはSSL接続をオンにする[root@MySQL ~]#/usr/local/mysql/bin/mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql_data1 [root@MySQL ~]#/usr/local/mysql/bin/mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql_data2 [root@MySQL ~]#/usr/local/mysql/bin/mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql_data3 [root@MySQL ~]#/usr/local/mysql/bin/mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql_data4

  • *環境変数echo"export PATH=$PATH:/usr/local/mysql/bin">/etc/profilesource/etc/profileを変更
  • マルチインスタンススクリプトをサービス管理ディレクトリの下にコピー[/etc/init.d/][root@MySQL ~]# cp/usr/local/mysql/support-files/mysqld_multi.server/etc/init.d/mysqld_multi
  • スクリプト実行権限を追加[root@MySQL ~]# chmod +x/etc/init.d/mysqld_multi
  • サービス管理に追加[root@MySQL ~]# chkconfig --add mysqld_multi
  • 起動テスト
  • 個のマルチインスタンス状態を調べる[root@MySQL ~]#/etc/init.d/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

  • マルチインスタンスを開始[root@MySQL ~]#/etc/init.d/mysqld_multi start
  • マルチインスタンスステータスReporting MySQL servers MySQL server from group:mysqld 1 is running MySQL server from group:mysqld 2 is running MySQL server from group:mysqld 3 is running MySQL server from group:mysqld 4 is running
  • インスタンスリスニングポートを表示[root@MySQL ~]# netstat -lntp | grep mysqld tcp 0 0 0.0.0.0:3306 0.0.0.0: LISTEN 2673/mysqld tcp 0 0 0.0.0.0:3307 0.0.0.0: LISTEN 2676/mysqld tcp 0 0 0.0.0.0:3308 0.0.0.0: LISTEN 2679/mysqld tcp 0 0 0.0.0.0:3309 0.0.0.0: LISTEN 2682/mysqld
  • 接続テスト