MySQL 5.7マルチインスタンスインストール構成
1.背景説明
a.MySQLマルチインスタンス概念
簡単に言えば、1台のサーバの上で複数の異なるサービスポート(例えば、3306307)を開き、複数のMySQLサービスプロセスを実行し、これらのサービスは異なるsocketによって異なるサービスポートを傍受してそれぞれのサービスを提供する.
b.MySQLマルチインスタンスの役割と問題サーバリソースを有効に利用して残りがある場合、残りのリソースを十分に利用してサービスを提供することができる. サーバー資源を節約会社の資金が緊張している場合、サーバーはできるだけ独立してサービスを提供する必要があります.また、主従同期技術が必要な場合、マルチインスタンスが望ましい. リソースの相互占有の問題あるサービスが同時に高い場合、または遅いクエリがある場合、インスタンス全体がより多くのメモリ、CPU、ディスクIOリソースを消費し、サーバ上の他のインスタンスがサービスを提供する品質が低下する.
c.MySQLマルチインスタンスアプリケーションシーン資金難の会社 同時アクセスは特に大きなビジネスではありません ポータルサイトアプリケーションMySQLマルチインスタンスシーン 2.環境準備
a.オペレーティングシステム:CentOS Linux release 7.6.1810 b.MySQL:mysql-5.7.27.tar.gz、ダウンロードをクリックして、MySQLのソースコードコンパイルパッケージc.boost:boost_を準備します1_59_0.tar.gz、ダウンロードをクリックし、MySQL 5.7をインストールする場合は、boostライブラリ、MySQL 5に依存する必要があります.7対応するboostバージョンは1.59 dである.cmake:cmake-2.8.12.2.tar.gzは、ダウンロードをクリックしてMySQLをコンパイルインストールする場合、cmake方式でコンパイルインストールを行うため、まずcmakeをインストールする必要があります
3.設置方法
3.1コンパイルインストールcmake
#toolsディレクトリを作成し、すべてのパッケージを一緒に配置することをお勧めします.
#cmakeインストールパッケージを解凍
#コンパイルインストール開始
#Now run gmakeの説明OKを見て、gmake&&gmake installを行うことができます
ヒント:各ステップが終了すると、
3.2 boostライブラリを/usr/local/ディレクトリに解凍する
#/usr/local/ディレクトリへの解凍を指定し、-Cパラメータを使用
3.3 MySQL 5.7を解凍し、コンパイルインストールを行う
3.3.1 MySQL 5.7の依存パッケージのインストール
ヒント:MySQL 5.7依存パッケージ:gcc gcc-c++ncurses ncurses-devel bison makeなど参考に、インストール前にrpm-qa|grep${パッケージ名}でチェックしてください
3.3.2 MySQLファイル保存ディレクトリ、ユーザーおよびグループの作成
#MySQLマルチインスタンスの関連ファイルディレクトリの作成
#mysqlグループとユーザーの作成
説明:-s/sbin/nologinユーザーはシステムにログインできません-MユーザーのHOMEディレクトリを作成しません-gユーザーログイングループのGIDまたはグループ名を指定します
3.3.3コンパイルインストールMySQL 5.7
#解凍ソースmysql-5.7.27.tar.gzインストールパッケージ
#cmake構成コンパイルパラメータ
#cmakeのコンパイルが完了し、makeを実行してインストールを続行することを説明するメッセージが表示されます.
#make installのインストールを続行
#インストール完了
ヒント:上記の操作にエラーが発生していない場合(各ステップの終了後、echo$?戻り値が0かどうかを見て、0であれば正しい)は、/アプリケーション/mysql/ディレクトリを表示し、その下に内容がある場合はMySQL 5を表す.7.27ソースパッケージはcmake方式でインストールに成功した
3.4 MySQLシステム環境変数の構成
#/etc/profileプロファイルをすぐに有効にする
3.5データベースの初期化
3.5.1構成my.cnfファイル
#修正/etc/my.cnfファイルは、5.6以前のバージョンとは異なり、5.7バージョンのsupport-filesディレクトリにはありません.cnfファイルなので、自分で手動で編集する必要があります
ヒント:MySQLインスタンスを追加する場合は、myを変更することに注意してください.cnfプロファイルと起動スクリプトファイルのportとserver-idは、すでに実行されているインスタンスと衝突しないでください.
3.5.2修正my.cnfファイルの所有者と所有者グループ
3.5.3 MySQLインストールディレクトリの所有者と所有者グループの変更
3.5.4データベースの初期化
ヒント:初期化時、dataディレクトリは空のディレクトリでなければなりません.そうしないと、初期化に失敗し、次の情報をエラーします.
なぜデータベースを初期化しますか?a.初期化の主な目的は基礎的なデータベースを作成することである.例えば、MySQLライブラリ、テーブルなどb.初期化後、対応するインスタンスのデータディレクトリを表示すると、以下の情報が見られる.
3.5.5インスタンスがSSL接続を開く
3.5.6 dataディレクトリのserver-keyを変更する.pemファイル権限
ヒント:ファイルserver-keyを渡さない場合.pem他のユーザやグループの読み取り可能権限の場合、データベースを起動すると、次のエラーが報告されます2019-08-07 T 06:39:24.11526 Z 0[ERROR]SSL error:Unable to get private key from'server-key.pem'2019-08-07T06:39:24.111555Z 0 [Warning] Failed to set up SSL because of the following SSL library error: Unable to get private key
3.6 MySQLデータベースの起動
3.6.1起動スクリプトを/etc/initにコピーする.d/ディレクトリの下でmysqldと名前を変更Multi、実行可能権限を付与
3.6.2スクリプトのMySQLインストールディレクトリとbinディレクトリの絶対パスの変更
ヒント:MySQLが/usr/local/ディレクトリにインストールされていない場合は、マルチインスタンスmysqld_を変更する必要があります.Multiはスクリプトを起動し、basedir=${MySQLインストールディレクトリ}、bindir=${MySQLインストールディレクトリの下のbinディレクトリ}を起動します.そうしないと、起動スクリプトを実行すると「Can't execute/usr/local/mysql/bin/mysqld_multi from dir/usr/local/mysql」エラーが表示されます.
3.6.3システムサービスを再ロードし、MySQLデータベースを電源投入してから起動する
3.6.4 MySQLデータベースを起動し、ポートのリスニング状態を確認する
3.7 MySQLデータベースへの接続
3.7.1 socketが3306データベースにログインすることを指定する
3.7.2 socketが3307データベースにログインすることを指定する
ヒント:a.ローカルログインマルチインスタンスローカルエンドログインsocketファイルによってどのインスタンスにログインするかを指定します.このファイルの具体的な位置はmysql初期化時に指定し、ローカルログイン時にログインプログラムはsocketファイルによってログインしたデータベースインスタンス を判断します. mysql.sock<==ファイルは、サーバがローカルクライアントと通信するUnixソケットファイル である.例えばmysql-S/アプリケーション/mysql/data/3306/mysql.sockアクセス3306データベースインスタンス b.リモートログインリモートログインマルチインスタンスホストのインスタンスを指定し、TCP/IPポート(port)は、MySQLプロファイルmyであるログインするmysqlインスタンスを指定する.cnfで指定します. port<==ポートは「論理接続位置」であり、クライアントプログラムがコンピュータ上の特殊なサービスプログラムに割り当てられる方式 である.リモートログイン例: grant all privileges on . to root@"192.168.66.11"identified by "boyu123"; #MySQLサービス側でクライアント192.168.66.11にリモートアクセス を含むすべての権限を付与 flush privileges; #mysqlライセンステーブル を再ロード select user,host from mysql,user; #変更結果の表示 mysql-uroot-p'boyu 123'-h 192.168.66.12-P 3306#192.168.66.11でこのコマンドを実行し、リモートでデータベース にログインできます.
3.8データベースの基本操作
3.8.1マルチインスタンスログインパスワードの変更
3.8.2エレガントにマルチインスタンスデータベースを閉じる
#MySQL独自のスクリプトを使用
ヒント:このメソッドは、サーバ上のすべてのデータベースを同時に閉じます.1つずつ閉じるにはmysqladminメソッドを使用します.
#mysqladminを使用する方法
3.9 MySQLのサービスは起きていないで、構想を調べます
a.MySQLが表示されていないポートが見つかったら、少し待ってから見てください.MySQLサービスの起動が遅いb.まだだめなら、エラーログを見てください.エラーログパスはmyに配置されています.cnfのc.すべてのコマンドが返す画面の出力をよく見て、肝心な出力内容dを無視しないでください.関連サービスであれば、関連サービスのLOGを同時に表示します.
a.MySQLマルチインスタンス概念
簡単に言えば、1台のサーバの上で複数の異なるサービスポート(例えば、3306307)を開き、複数のMySQLサービスプロセスを実行し、これらのサービスは異なるsocketによって異なるサービスポートを傍受してそれぞれのサービスを提供する.
b.MySQLマルチインスタンスの役割と問題
c.MySQLマルチインスタンスアプリケーションシーン
a.オペレーティングシステム:CentOS Linux release 7.6.1810 b.MySQL:mysql-5.7.27.tar.gz、ダウンロードをクリックして、MySQLのソースコードコンパイルパッケージc.boost:boost_を準備します1_59_0.tar.gz、ダウンロードをクリックし、MySQL 5.7をインストールする場合は、boostライブラリ、MySQL 5に依存する必要があります.7対応するboostバージョンは1.59 dである.cmake:cmake-2.8.12.2.tar.gzは、ダウンロードをクリックしてMySQLをコンパイルインストールする場合、cmake方式でコンパイルインストールを行うため、まずcmakeをインストールする必要があります
3.設置方法
3.1コンパイルインストールcmake
#toolsディレクトリを作成し、すべてのパッケージを一緒に配置することをお勧めします.
[root@192168066012_MySQL_5_7_27 ~]# mkdir -p /home/tools/
[root@192168066012_MySQL_5_7_27 ~]# cd /home/tools/
[root@192168066012_MySQL_5_7_27 tools]# ls -l
total 143932
-rw-r--r-- 1 root root 83709983 Jul 31 18:34 boost_1_59_0.tar.gz
-rw-r--r-- 1 root root 6068231 Jul 31 18:36 cmake-2.8.12.2.tar.gz
-rw-r--r-- 1 root root 54398696 Jul 31 18:34 mysql-5.7.27.tar.gz
#cmakeインストールパッケージを解凍
[root@192168066012_MySQL_5_7_27 tools]# tar xf cmake-2.8.12.2.tar.gz
[root@192168066012_MySQL_5_7_27 tools]# cd cmake-2.8.12.2
[root@192168066012_MySQL_5_7_27 cmake-2.8.12.2]# ll
total 3056
-rwxr-xr-x 1 501 games 53974 Jan 17 2014 bootstrap
-rw-r--r-- 1 501 games 254736 Jan 17 2014 ChangeLog.manual
-rw-r--r-- 1 501 games 2603523 Jan 17 2014 ChangeLog.txt
-rw-r--r-- 1 501 games 5465 Jan 17 2014 CMakeCPack.cmake
-rw-r--r-- 1 501 games 3436 Jan 17 2014 CMakeCPackOptions.cmake.in
-rw-r--r-- 1 501 games 153 Jan 17 2014 CMakeGraphVizOptions.cmake
-rw-r--r-- 1 501 games 25439 Jan 17 2014 CMakeLists.txt
-rw-r--r-- 1 501 games 4481 Jan 17 2014 CMakeLogo.gif
-rw-r--r-- 1 501 games 796 Jan 17 2014 cmake_uninstall.cmake.in
-rw-r--r-- 1 501 games 2515 Jan 17 2014 CompileFlags.cmake
-rwxr-xr-x 1 501 games 99 Jan 17 2014 configure
-rw-r--r-- 1 501 games 2637 Jan 17 2014 Copyright.txt
-rw-r--r-- 1 501 games 1050 Jan 17 2014 CTestConfig.cmake
-rw-r--r-- 1 501 games 3338 Jan 17 2014 CTestCustom.cmake.in
-rw-r--r-- 1 501 games 145 Jan 17 2014 CTestCustom.ctest.in
-rw-r--r-- 1 501 games 809 Jan 17 2014 DartConfig.cmake
-rw-r--r-- 1 501 games 4144 Jan 17 2014 DartLocal.conf.in
drwxr-xr-x 3 root root 142 Aug 1 14:32 Docs
-rw-r--r-- 1 501 games 28046 Jan 17 2014 doxygen.config
drwxr-xr-x 4 root root 53 Aug 1 14:32 Example
drwxr-xr-x 9 root root 16384 Aug 1 14:32 Modules
-rw-r--r-- 1 501 games 1946 Jan 17 2014 Readme.txt
drwxr-xr-x 7 root root 24576 Aug 1 14:32 Source
drwxr-xr-x 2 root root 4096 Aug 1 14:32 Templates
drwxr-xr-x 169 root root 8192 Aug 1 14:32 Tests
drwxr-xr-x 15 root root 4096 Aug 1 14:32 Utilities
#コンパイルインストール開始
[root@192168066012_MySQL_5_7_27 cmake-2.8.12.2]# ./configure
...
CMake has bootstrapped. Now run gmake.
#Now run gmakeの説明OKを見て、gmake&&gmake installを行うことができます
[root@192168066012_MySQL_5_7_27 cmake-2.8.12.2]# gmake
...
[100%] Built target pseudonl_valgrind
[root@192168066012_MySQL_5_7_27 cmake-2.8.12.2]# gmake install
...
-- Installing: /usr/local/share/cmake-2.8/completions/ctest
ヒント:各ステップが終了すると、
echo $?
を使用して、戻り値が0の場合、コンパイルプロセスが正常であることを示します.3.2 boostライブラリを/usr/local/ディレクトリに解凍する
#/usr/local/ディレクトリへの解凍を指定し、-Cパラメータを使用
[root@192168066012_MySQL_5_7_27 tools]# tar xf boost_1_59_0.tar.gz -C /usr/local/
[root@192168066012_MySQL_5_7_27 tools]# cd /usr/local/
[root@192168066012_MySQL_5_7_27 local]# mv boost_1_59_0/ boost
[root@192168066012_MySQL_5_7_27 local]# ls -l
total 0
drwxr-xr-x. 2 root root 45 Jul 30 19:49 bin
drwx------ 8 501 games 302 Aug 12 2015 boost
drwxr-xr-x 3 root root 23 Jul 30 19:49 doc
drwxr-xr-x. 2 root root 6 Apr 11 2018 etc
drwxr-xr-x. 2 root root 6 Apr 11 2018 games
drwxr-xr-x. 2 root root 6 Apr 11 2018 include
drwxr-xr-x. 2 root root 6 Apr 11 2018 lib
drwxr-xr-x. 2 root root 6 Apr 11 2018 lib64
drwxr-xr-x. 2 root root 6 Apr 11 2018 libexec
drwxr-xr-x 3 root root 18 Jul 30 19:49 man
drwxr-xr-x. 2 root root 6 Apr 11 2018 sbin
drwxr-xr-x. 7 root root 81 Jul 30 19:49 share
drwxr-xr-x. 2 root root 6 Apr 11 2018 src
3.3 MySQL 5.7を解凍し、コンパイルインストールを行う
3.3.1 MySQL 5.7の依存パッケージのインストール
[root@192168066012_MySQL_5_7_27 tools]# yum install ncurses-devel -y
...
Installed:
ncurses-devel.x86_64 0:5.9-14.20130511.el7_4
Complete!
[root@192168066012_MySQL_5_7_27 tools]# yum install libaio-devel -y
...
Installed:
libaio-devel.x86_64 0:0.3.109-13.el7
Dependency Installed:
libaio.x86_64 0:0.3.109-13.el7
Complete!
ヒント:MySQL 5.7依存パッケージ:gcc gcc-c++ncurses ncurses-devel bison makeなど参考に、インストール前にrpm-qa|grep${パッケージ名}でチェックしてください
3.3.2 MySQLファイル保存ディレクトリ、ユーザーおよびグループの作成
#MySQLマルチインスタンスの関連ファイルディレクトリの作成
[root@192168066012_MySQL_5_7_27 tools]# mkdir -p /application/mysql
[root@192168066012_MySQL_5_7_27 tools]# mkdir -p /application/mysql/logs
[root@192168066012_MySQL_5_7_27 tools]# mkdir -p /application/mysql/data/{3306,3307}/data
[root@192168066012_MySQL_5_7_27 tools]# tree -L 3 /application/mysql/data/
/application/mysql/data/
|-- 3306
| `-- data
`-- 3307
`-- data
4 directories, 0 files
#mysqlグループとユーザーの作成
[root@192168066012_MySQL_5_7_27 tools]# groupadd mysql
[root@192168066012_MySQL_5_7_27 tools]# useradd mysql -s /sbin/nologin -M -g mysql
[root@192168066012_MySQL_5_7_27 tools]# id mysql
uid=1000(mysql) gid=1000(mysql) groups=1000(mysql)
説明:-s/sbin/nologinユーザーはシステムにログインできません-MユーザーのHOMEディレクトリを作成しません-gユーザーログイングループのGIDまたはグループ名を指定します
3.3.3コンパイルインストールMySQL 5.7
#解凍ソースmysql-5.7.27.tar.gzインストールパッケージ
[root@192168066012_MySQL_5_7_27 tools]# cd /home/tools/
[root@192168066012_MySQL_5_7_27 tools]# tar xf mysql-5.7.27.tar.gz
#cmake構成コンパイルパラメータ
[root@192168066012_MySQL_5_7_27 tools]# cd mysql-5.7.27
[root@192168066012_MySQL_5_7_27 mysql-5.7.27]# cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql \
-DMYSQL_DATADIR=/application/mysql/data \
-DMYSQL_UNIX_ADDR=/application/mysql/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITHOUT_PARTITION_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_EMBEDDED_SERVER=1 \
-DWITH_DEBUG=0 \
-DWITH_BOOST=/usr/local/boost
#cmakeのコンパイルが完了し、makeを実行してインストールを続行することを説明するメッセージが表示されます.
-- Configuring done
-- Generating done
-- Build files have been written to: /home/tools/mysql-5.7.27
#make installのインストールを続行
...
Linking CXX executable my_safe_process
[100%] Built target my_safe_process
#インストール完了
...
-- Installing: /application/mysql-5.7.27/share/aclocal/mysql.m4
-- Installing: /application/mysql-5.7.27/support-files/mysql.server
ヒント:上記の操作にエラーが発生していない場合(各ステップの終了後、echo$?戻り値が0かどうかを見て、0であれば正しい)は、/アプリケーション/mysql/ディレクトリを表示し、その下に内容がある場合はMySQL 5を表す.7.27ソースパッケージはcmake方式でインストールに成功した
3.4 MySQLシステム環境変数の構成
[root@192168066012_MySQL_5_7_27 ~]# echo 'export PATH=/application/mysql/bin:$PATH' >>/etc/profile
[root@192168066012_MySQL_5_7_27 ~]# tail -1 /etc/profile
export PATH=/application/mysql/bin:$PATH
#/etc/profileプロファイルをすぐに有効にする
[root@192168066012_MySQL_5_7_27 ~]# source /etc/profile
[root@192168066012_MySQL_5_7_27 ~]# echo $PATH
/application/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
3.5データベースの初期化
3.5.1構成my.cnfファイル
#修正/etc/my.cnfファイルは、5.6以前のバージョンとは異なり、5.7バージョンのsupport-filesディレクトリにはありません.cnfファイルなので、自分で手動で編集する必要があります
[root@192168066012_MySQL_5_7_27 ~]# cp /etc/my.cnf /etc/my.cnf.bak
[root@192168066012_MySQL_5_7_27 ~]# vim /etc/my.cnf
[mysqld_multi]
mysqld = /application/mysql/bin/mysqld
mysqladmin = /application/mysql/bin/mysqladmin
log = /application/mysql/logs/mysql_multi.log
[mysqld1]
port = 3306
user = mysql
character_set_server = utf8
socket = /application/mysql/data/3306/mysql.sock
datadir = /application/mysql/data/3306/data
pid-file = /application/mysql/data/3306/mysql.pid
log-bin = /application/mysql/data/3306/mysql-bin
server-id = 1
log-error = /application/mysql/data/3306/mysql_boyu3306.err
[mysqld2]
port = 3307
user = mysql
character_set_server = utf8
socket = /application/mysql/data/3307/mysql.sock
datadir = /application/mysql/data/3307/data
pid-file = /application/mysql/data/3307/mysql.pid
log-bin = /application/mysql/data/3307/mysql-bin
server-id = 3
log-error = /application/mysql/data/3307/mysql_boyu3307.err
ヒント:MySQLインスタンスを追加する場合は、myを変更することに注意してください.cnfプロファイルと起動スクリプトファイルのportとserver-idは、すでに実行されているインスタンスと衝突しないでください.
3.5.2修正my.cnfファイルの所有者と所有者グループ
[root@192168066012_MySQL_5_7_27 ~]# chown mysql:mysql /etc/my.cnf
3.5.3 MySQLインストールディレクトリの所有者と所有者グループの変更
[root@192168066012_MySQL_5_7_27 ~]# chown -R mysql:mysql /application/mysql/
3.5.4データベースの初期化
[root@192168066012_MySQL_5_7_27 data]# cd /application/mysql/
[root@192168066012_MySQL_5_7_27 mysql]# ./bin/mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/application/mysql/data/3306/data/
2019-08-07T03:33:57.693586Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2019-08-07T03:33:57.973904Z 0 [Warning] InnoDB: New log files created, LSN=45790
2019-08-07T03:33:58.013774Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2019-08-07T03:33:58.070602Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 30a49b8b-b8c4-11e9-b40d-000c290943d8.
2019-08-07T03:33:58.072487Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2019-08-07T03:33:58.074274Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
[root@192168066012_MySQL_5_7_27 mysql]# ./bin/mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/application/mysql/data/3307/data/
2019-08-07T03:34:06.558576Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2019-08-07T03:34:06.792397Z 0 [Warning] InnoDB: New log files created, LSN=45790
2019-08-07T03:34:06.835971Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2019-08-07T03:34:06.893802Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 35e6eba6-b8c4-11e9-b7dc-000c290943d8.
2019-08-07T03:34:06.896053Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2019-08-07T03:34:06.897815Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
ヒント:初期化時、dataディレクトリは空のディレクトリでなければなりません.そうしないと、初期化に失敗し、次の情報をエラーします.
2019-08-07T06:58:34.828541Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.
2019-08-07T06:58:34.828576Z 0 [ERROR] Aborting
なぜデータベースを初期化しますか?a.初期化の主な目的は基礎的なデータベースを作成することである.例えば、MySQLライブラリ、テーブルなどb.初期化後、対応するインスタンスのデータディレクトリを表示すると、以下の情報が見られる.
[root@192168066012_MySQL_5_7_27 mysql]# tree -L 3 /application/mysql/data/
/application/mysql/data/
|-- 3306
| `-- data
| |-- auto.cnf
| |-- ib_buffer_pool
| |-- ibdata1
| |-- ib_logfile0
| |-- ib_logfile1
| |-- mysql
| |-- performance_schema
| `-- sys
`-- 3307
`-- data
|-- auto.cnf
|-- ib_buffer_pool
|-- ibdata1
|-- ib_logfile0
|-- ib_logfile1
|-- mysql
|-- performance_schema
`-- sys
10 directories, 10 files
3.5.5インスタンスがSSL接続を開く
[root@192168066012_MySQL_5_7_27 mysql]# /application/mysql/bin/mysql_ssl_rsa_setup --user=mysql --basedir=/application/mysql --datadir=/application/mysql/data/3306/data/
Generating a 2048 bit RSA private key
.....................+++
......+++
writing new private key to 'ca-key.pem'
-----
Generating a 2048 bit RSA private key
............+++
.................+++
writing new private key to 'server-key.pem'
-----
Generating a 2048 bit RSA private key
........................................................+++
...............................+++
writing new private key to 'client-key.pem'
-----
[root@192168066012_MySQL_5_7_27 mysql]# /application/mysql/bin/mysql_ssl_rsa_setup --user=mysql --basedir=/application/mysql --datadir=/application/mysql/data/3307/data/
Generating a 2048 bit RSA private key
..................................................................+++
..............................+++
writing new private key to 'ca-key.pem'
-----
Generating a 2048 bit RSA private key
.....+++
...............................................................+++
writing new private key to 'server-key.pem'
-----
Generating a 2048 bit RSA private key
.........+++
......+++
writing new private key to 'client-key.pem'
-----
3.5.6 dataディレクトリのserver-keyを変更する.pemファイル権限
[root@192168066012_MySQL_5_7_27 ~]# cd /application/mysql/data/3306/data/
[root@192168066012_MySQL_5_7_27 data]# chmod +r server-key.pem
[root@192168066012_MySQL_5_7_27 data]# ls -lh server-key.pem
-rw-r--r-- 1 root root 1.7K Aug 7 15:07 server-key.pem
[root@192168066012_MySQL_5_7_27 data]# cd /application/mysql/data/3307/data/
[root@192168066012_MySQL_5_7_27 data]# chmod +r server-key.pem
[root@192168066012_MySQL_5_7_27 data]# ls -lh server-key.pem
-rw-r--r-- 1 root root 1.7K Aug 7 15:07 server-key.pem
ヒント:ファイルserver-keyを渡さない場合.pem他のユーザやグループの読み取り可能権限の場合、データベースを起動すると、次のエラーが報告されます2019-08-07 T 06:39:24.11526 Z 0[ERROR]SSL error:Unable to get private key from'server-key.pem'2019-08-07T06:39:24.111555Z 0 [Warning] Failed to set up SSL because of the following SSL library error: Unable to get private key
3.6 MySQLデータベースの起動
3.6.1起動スクリプトを/etc/initにコピーする.d/ディレクトリの下でmysqldと名前を変更Multi、実行可能権限を付与
[root@192168066012_MySQL_5_7_27 ~]# cd /application/mysql
[root@192168066012_MySQL_5_7_27 mysql]# cp support-files/mysqld_multi.server /etc/init.d/mysqld_multi
[root@192168066012_MySQL_5_7_27 mysql]# chmod +x /etc/init.d/mysqld_multi
[root@192168066012_MySQL_5_7_27 mysql]# ll /etc/init.d/mysqld_multi
-rwxr-xr-x 1 root root 1061 8 7 11:38 /etc/init.d/mysqld_multi
3.6.2スクリプトのMySQLインストールディレクトリとbinディレクトリの絶対パスの変更
[root@192168066012_MySQL_5_7_27 mysql]# diff /application/mysql/support-files/mysqld_multi.server /etc/init.d/mysqld_multi
17,18c17,18
< basedir=/usr/local/mysql
< bindir=/usr/local/mysql/bin
---
> basedir=/application/mysql
> bindir=/application/mysql/bin
ヒント:MySQLが/usr/local/ディレクトリにインストールされていない場合は、マルチインスタンスmysqld_を変更する必要があります.Multiはスクリプトを起動し、basedir=${MySQLインストールディレクトリ}、bindir=${MySQLインストールディレクトリの下のbinディレクトリ}を起動します.そうしないと、起動スクリプトを実行すると「Can't execute/usr/local/mysql/bin/mysqld_multi from dir/usr/local/mysql」エラーが表示されます.
3.6.3システムサービスを再ロードし、MySQLデータベースを電源投入してから起動する
[root@192168066012_MySQL_5_7_27 mysql]# /bin/systemctl daemon-reload
[root@192168066012_MySQL_5_7_27 mysql]# /bin/systemctl enable mysqld_multi
mysqld_multi.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig mysqld_multi on
[root@192168066012_MySQL_5_7_27 mysql]# chkconfig --list
Note: This output shows SysV services only and does not include native
systemd services. SysV configuration data might be overridden by native
systemd configuration.
If you want to list systemd services use 'systemctl list-unit-files'.
To see services enabled on particular target use
'systemctl list-dependencies [target]'.
mysqld_multi 0:off 1:off 2:on 3:on 4:on 5:on 6:off
netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
3.6.4 MySQLデータベースを起動し、ポートのリスニング状態を確認する
[root@192168066012_MySQL_5_7_27 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
[root@192168066012_MySQL_5_7_27 mysql]# /etc/init.d/mysqld_multi start
[root@192168066012_MySQL_5_7_27 mysql]# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6568/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 6814/master
tcp6 0 0 :::3306 :::* LISTEN 7404/mysqld
tcp6 0 0 :::3307 :::* LISTEN 7407/mysqld
tcp6 0 0 :::22 :::* LISTEN 6568/sshd
tcp6 0 0 ::1:25 :::* LISTEN 6814/master
3.7 MySQLデータベースへの接続
3.7.1 socketが3306データベースにログインすることを指定する
[root@192168066012_MySQL_5_7_27 mysql]# mysql -S /application/mysql/data/3306/mysql.sock
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.27-log Source distribution
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> \q
Bye
3.7.2 socketが3307データベースにログインすることを指定する
[root@192168066012_MySQL_5_7_27 mysql]# mysql -S /application/mysql/data/3307/mysql.sock
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.27-log Source distribution
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> \q
Bye
ヒント:a.ローカルログイン
3.8データベースの基本操作
3.8.1マルチインスタンスログインパスワードの変更
[root@192168066012_MySQL_5_7_27 mysql]# mysqladmin -u root -p password "boyu123" -S /application/mysql/data/3306/mysql.sock
Enter password:
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
[root@192168066012_MySQL_5_7_27 mysql]# mysqladmin -u root -p password "boyu123" -S /application/mysql/data/3307/mysql.sock
Enter password:
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
3.8.2エレガントにマルチインスタンスデータベースを閉じる
#MySQL独自のスクリプトを使用
[root@192168066012_MySQL_5_7_27 mysql]# /etc/init.d/mysqld_multi stop
[root@192168066012_MySQL_5_7_27 mysql]# ps aux|grep mysqld
root 23962 0.0 0.0 112708 976 pts/0 S+ 20:39 0:00 grep --color=auto mysqld
ヒント:このメソッドは、サーバ上のすべてのデータベースを同時に閉じます.1つずつ閉じるにはmysqladminメソッドを使用します.
#mysqladminを使用する方法
[root@192168066012_MySQL_5_7_27 mysql]# mysqladmin -uroot -p"boyu123" -S /application/mysql/data/3307/mysql.sock shutdown
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
[root@192168066012_MySQL_5_7_27 mysql]# ps aux|grep mysqld
mysql 24058 0.1 10.1 1181012 188944 pts/0 Sl 20:39 0:01 /application/mysql/bin/mysqld --port=3306 --user=mysql --character_set_server=utf8 --socket=/application/mysql/data/3306/mysql.sock --datadir=/application/mysql/data/3306/data --pid-file=/application/mysql/data/3306/mysql.pid --log-bin=/application/mysql/data/3306/mysql-bin --server-id=1 --log-error=/application/mysql/data/3306/mysql_boyu3306.err
root 28235 0.0 0.0 112708 976 pts/0 S+ 20:51 0:00 grep --color=auto mysqld
3.9 MySQLのサービスは起きていないで、構想を調べます
a.MySQLが表示されていないポートが見つかったら、少し待ってから見てください.MySQLサービスの起動が遅いb.まだだめなら、エラーログを見てください.エラーログパスはmyに配置されています.cnfのc.すべてのコマンドが返す画面の出力をよく見て、肝心な出力内容dを無視しないでください.関連サービスであれば、関連サービスのLOGを同時に表示します.