MySQLデータベース入門:マルチインスタンス構成方法の詳しい説明

MySQLデータベース入門:マルチインスタンス構成方法の詳しい説明

この記事では、例を使用して、MySQL データベースの複数のインスタンスを構成する方法について説明します。ご参考までに、詳細は以下の通りです。

関連する基本的なコマンド操作は上記で紹介されています: MySQL データベースの基礎: 基本コマンド入門

すべての操作は単一のインスタンスに基づいています。MySQL の複数のインスタンスは、習得する必要があるため、実際の運用環境では非常に実用的です。

1. マルチインスタンスとは

複数のインスタンスとは、サーバー上で複数の異なるサービス ポート (デフォルトは 3306) を開き、複数の MySQL サービス プロセスを実行することを意味します。これらのサービス プロセスは、異なるソケットを介して異なるサービス ポートをリッスンすることで、独自のサービスを提供します。すべてのインスタンスは MYSQL インストール プログラムのセットを共有しますが、それぞれが異なる構成ファイル、起動プログラム、およびデータ ファイルを使用し、論理的には比較的独立しています。

複数インスタンスの主な機能は、既存のサーバー ハードウェア リソースを最大限に活用して、さまざまなサービスにデータ サービスを提供することです。ただし、インスタンスの同時実行性が比較的高い場合、他のインスタンスのパフォーマンスにも影響します。

2. 複数インスタンスのインストールの準備

インストール前にMySQLをインストールする必要がありますが、make install(コンパイルとインストール)に進むだけで済みます。無料のインストールプログラムを使用する場合は、ソフトウェアパッケージを解凍するだけで済みます。今日の環境では、無料のインストールパッケージを介してMySQLメインプログラムをインストールします(他のインストールでは、以前のインストールプロセスを参照してセルフテストを行うことができます)。

システム環境

[root@centos6 ~]# cat /etc/redhat-release 
CentOS リリース 6.5 (最終)
[root@centos6 ~]# uname -r
2.6.32-431.el6.x86_64

インストーラ

mysql-5.5.52-linux2.6-x86_64.tar.gz

まずソフトウェアをローカルコンピュータにダウンロードします

http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.52-linux2.6-x86_64.tar.gz を取得します。

インストールユーザーを作成する

[root@centos6 ~]#グループ追加mysql
[root@centos6 ~]#useradd mysql -s /sbin/nologin -g mysql -M
[root@centos6 ~]#tail -1 /etc/passwd
mysql:x:500:500::/home/mysql:/sbin/nologin

複数のインスタンスのデータディレクトリを作成する

[root@centos6 ツール]# mkdir -p /data/{3306,3307}
[root@centos6 tools]# ツリー /data/
/データ/
+-- 3306
+-- 3307
2 ディレクトリ、0 ファイル

3. MYSQLの複数のインスタンスをインストールする

次に、MySQL の複数のインスタンスをインストールします。

解凍ソフトウェア

[root@centos6 ツール]# ll mysql-5.5.52-linux2.6-x86_64.tar.gz 
-rw-r--r--。1 ルート ルート 185855000 8月26日 21:38 mysql-5.5.52-linux2.6-x86_64.tar.gz
[root@centos6 ツール]# tar zxf mysql-5.5.52-linux2.6-x86_64.tar.gz

設定ファイルをコピーする

[root@centos6 mysql-5.5.52-linux2.6-x86_64]# cp サポートファイル/my-small.cnf /data/3306/my.cnf

[root@centos6 mysql-5.5.52-linux2.6-x86_64]# cp サポートファイル/mysql.server /data/3306/mysql

[root@centos6 mysql-5.5.52-linux2.6-x86_64]# cp サポートファイル/my-small.cnf /data/3307/my.cnf

[root@centos6 mysql-5.5.52-linux2.6-x86_64]# cp サポートファイル/mysql.server /data/3307/mysql

標準インストールパスの場合は、無料インストールパッケージをアプリケーションディレクトリにコピーします。

[root@centos6 ツール]# mv mysql-5.5.52-linux2.6-x86_64 /application/mysql

[root@centos6 ツール]# ll /application/mysql
合計 72
drwxr-xr-x. 2 ルート ルート 4096 12月9日 17:15 bin
-rw-r--r--. 1 7161 31415 17987 8月26日 19:24 コピー中
drwxr-xr-x. 3 ルート ルート 4096 12月9日 17:15 データ
drwxr-xr-x. 2 ルート ルート 4096 12月 9日 17:15 ドキュメント
drwxr-xr-x. 3 ルート ルート 4096 12月 9日 17:15 含む
-rw-r--r--. 1 7161 31415 301 8月26日 19:24 INSTALL-BINARY
drwxr-xr-x. 3 ルート ルート 4096 12月9日 17:15 lib
drwxr-xr-x. 4 ルート ルート 4096 12月9日 17:15 男
drwxr-xr-x. 10 ルート ルート 4096 12月9日 17:15 mysql-test
-rw-r--r--. 1 7161 31415 2496 8月26日 19:24 README
drwxr-xr-x. 2 ルート ルート 4096 12月 9日 17:15 スクリプト
drwxr-xr-x. 27 ルート ルート 4096 12月 9 17:15 シェア
drwxr-xr-x. 4 ルート ルート 4096 12月9日 17:15 sql-bench
drwxr-xr-x. 2 ルート ルート 4096 12月 9日 17:15 サポートファイル

設定ファイルと起動ファイルを変更する

マルチインスタンスなのでパラメータを変更する必要があります。変更した設定ファイルは以下のとおりです。設定ファイル my.cnf

[クライアント]
ポート = 3307
ソケット = /data/3307/mysql.sock

[mysql]
自動再ハッシュなし

[mysqld] ユーザー = mysql
ポート = 3307
ソケット = /data/3307/mysql.sock
ベースディレクトリ = /application/mysql
データディレクトリ = /data/3307/data
#ログ長形式
#ログエラー = /data/3307/error.log
# ログスロークエリ = /data/3307/slow.log
pid ファイル = /data/3307/mysql.pid
サーバーID = 3 

[mysqld_safe]
ログエラー=/data/3307/mysql3307.err
pidファイル=/data/3307/mysqld.pid

プログラムファイルmysqlを起動します

[root@backup 3307]# cat mysql
#!/bin/sh
初期化ポート=3307
mysql_user="root"
mysql_pwd="ミゴンゲ"
CmdPath="/application/mysql/bin"
mysql_sock="/data/${port}/mysql.sock"
#起動する
関数start_mysql() {
if [ ! -e "$mysql_sock" ];その後
 printf "MySQL を起動しています...\n"
/bin/sh ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf 2>&1 > /dev/null &
それ以外
 printf "MySQL が実行中です...\n"
出口
フィ
}
#stop関数
関数stop_mysql() {
if [ ! -e "$mysql_sock" ];その後
printf "MySQL は停止しています...\n"
出口
それ以外
printf "MySQL を停止しています...\n"
${CmdPath}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S /data/${port}/mysql.sock シャットダウン
フィ
}
#再起動機能
関数_restart_mysql() {
 printf "MySQL を再起動しています...\n"
 関数_stop_mysql
 睡眠2
 関数_start_mysql
}
ケース$1
始める)
関数_start_mysql
;;
停止)
関数_stop_mysql
;;
再起動)
関数_restart_mysql
;;
*)
printf "使用方法: /data/${port}/mysql {start|stop|restart}\n"
エサック

その他の設定については、設定ファイルを参照して変更してください。

複数インスタンスの初期化操作

[root@centos6 3306]# /application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/data/3306/data --user=mysql
MySQL システム テーブルをインストールしています...
161209 18:02:17 [警告] 'THREAD_CONCURRENCY' は非推奨であり、将来のリリースで削除される予定です。
161209 18:02:17 [注記] /application/mysql/bin/mysqld (mysqld 5.5.52-log) がプロセス 3336 として開始されました...
わかりました
ヘルプ テーブルに入力しています...
161209 18:02:17 [警告] 'THREAD_CONCURRENCY' は非推奨であり、将来のリリースで削除される予定です。
161209 18:02:17 [注記] /application/mysql/bin/mysqld (mysqld 5.5.52-log) がプロセス 3343 として開始されました...
わかりました
起動時にmysqldを起動するには、
support-files/mysql.server をシステムに適した場所にコピーします
MySQL ルート ユーザーのパスワードを設定することを忘れないでください。
これを行うには、サーバーを起動し、次のコマンドを発行します。
/application/mysql/bin/mysqladmin -u root パスワード '新しいパスワード'
/application/mysql/bin/mysqladmin -u root -h centos6 パスワード '新しいパスワード'
あるいは、以下を実行することもできます:
/application/mysql/bin/mysql_secure_installation
これにより、テストを削除するオプションも提供されます
デフォルトで作成されるデータベースと匿名ユーザー。これは
実稼働サーバーに強くお勧めします。
詳しい手順についてはマニュアルを参照してください。
MySQL デーモンは次のように起動できます。
cd /application/mysql; /application/mysql/bin/mysqld_safe &
mysql-test-run.plでMySQLデーモンをテストできます。
cd /application/mysql/mysql-test; perl mysql-test-run.pl
問題がありましたら、http://bugs.mysql.com/ までご報告ください。

初期化が成功すると、データディレクトリデータといくつかのファイルがデータディレクトリに生成されます。

[root@centos6 3306]# ll /data/3306/data/
合計 1136
drwx------. 2 mysql ルート 4096 12月 9日 18:02 mysql
-rw-rw----。1 mysql mysql 27693 12月9日 18:02 mysql-bin.000001
-rw-rw----。1 mysql mysql 1114546 12月9日 18:02 mysql-bin.000002
-rw-rw----。1 mysql mysql 38 12月 9 18:02 mysql-bin.index
drwx------. 2 mysql mysql 4096 12月9日 18:02 performance_schema
drwx------. 2 mysql ルート 4096 12月9日 18:02 テスト

別のインスタンスを初期化する場合は、上記の操作を参照してください。操作手順は個別に紹介されません。

[root@centos6 3307]# ll /data/3307/data/
合計 1136
drwx------. 2 mysql ルート 4096 12月 9日 18:40 mysql
-rw-rw----. 1 mysql mysql 27693 12月9日 18:40 mysql-bin.000001
-rw-rw----. 1 mysql mysql 1114546 12月9日 18:40 mysql-bin.000002
-rw-rw----。1 mysql mysql 38 12月 9 18:40 mysql-bin.index
drwx------. 2 mysql mysql 4096 12月9日 18:40 performance_schema
drwx------. 2 mysql ルート 4096 12月9日 18:40 テスト

4. 複数のインスタンスを起動してログインする

サービスを開始する

[root@backup 3307]# /data/3306/mysql を起動します
MySQL を起動しています...
[ルート@バックアップ 3307]# lsof -i :3306
コマンド PID ユーザー FD タイプ デバイス サイズ/オフ ノード名
mysqld 19986 mysql 10u IPv4 90967 0t0 TCP *:mysql (LISTEN)
[root@backup 3307]# /data/3307/mysql
開始 MySQL を起動しています...
[ルート@バックアップ 3307]# lsof -i :3307
コマンド PID ユーザー FD タイプ デバイス サイズ/オフ ノード名
mysqld 21648 mysql 11u IPv4 92899 0t0 TCP *:opsession-prxy (LISTEN)

ポートを確認する

[root@backup 3307]# netstat -lntup|grep mysql
tcp 0 0 0.0.0.0:3307 0.0.0.0:* LISTEN 21648/mysqld
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 19986/mysqld

マルチインスタンスデータベースにログインする

[root@backup ~]# mysql -S /data/3306/mysql.sock
MySQL モニターへようこそ。コマンドは ; または \g で終わります。
MySQL接続IDは1です
サーバーバージョン: 5.5.51-log ソース配布
Copyright (c) 2000, 2016, Oracle およびその関連会社。無断複写・転載を禁じます。Oracle は Oracle Corporation およびその関連会社の登録商標です。その他の名称は各所有者の商標である場合があります。
ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。
mysql> データベース data3306 を作成します。
クエリは正常、1 行が影響を受けました (0.00 秒)
mysql> データベースを表示します。
+--------------------+
| データベース |
+--------------------+
| 情報スキーマ |
|データ3306|
|mysql |
| パフォーマンススキーマ |
| テスト |
+--------------------+
セット内の行数は 5 です (0.00 秒)
mysql>終了
さよなら

[root@backup ~]# mysql -S /data/3307/mysql.sock
MySQL モニターへようこそ。
コマンドは ; または \g で終わります。
MySQL接続IDは1です
サーバーバージョン: 5.5.51 ソース配布
Copyright (c) 2000, 2016, Oracle およびその関連会社。無断複写・転載を禁じます。Oracle は Oracle Corporation およびその関連会社の登録商標です。その他の名称は各所有者の商標である場合があります。
ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。
mysql> データベースを表示します。
+--------------------+
| データベース |
+--------------------+
| 情報スキーマ |
|mysql |
| パフォーマンススキーマ |
| テスト |
+--------------------+
セットに4行(0.05秒)

3306インスタンスにログインしてデータベースを作成しましたが、3307インスタンスにはデータが作成されませんでした。これは、2つのインスタンスが独立していることを示しています。

注: 別のインスタンスを追加する必要がある場合、基本的な構成手順は上記と同じです。構成ファイルと起動プログラム ファイルでポート番号とデータ ディレクトリ パスを適宜変更するだけです。最後に、起動時の自動起動にマルチインスタンス データベース起動コマンドを追加できます。

MySQL 関連のコンテンツに興味のある読者は、このサイトの次のトピックをチェックしてください: 「MySQL クエリ スキル」、「MySQL 共通関数の概要」、「MySQL ログ操作スキル」、「MySQL トランザクション操作スキルの概要」、「MySQL ストアド プロシージャ スキル」、および「MySQL データベース ロック関連スキルの概要」

この記事が皆様のMySQLデータベース設計に役立つことを願っています。

以下もご興味があるかもしれません:
  • MySQLマルチインスタンスインストールに基づく詳細な分析
  • MySQL マルチインスタンス構成ソリューション
  • mysqld_multi を使用して単一のマシンに複数のインスタンスをデプロイする方法に関する MySQL チュートリアル
  • MySQL マルチインスタンス インストール ブート自動起動サービス設定プロセス

<<:  Vueは透かし効果を簡単に実現します

>>:  一般的な HBase 運用および保守ツール 10 個の概要

推薦する

MySQLサーバのスレッド数を表示する方法の詳細な説明

この記事では、例を使用して、MySQL サーバーのスレッド数を表示する方法について説明します。ご参考...

VPSサーバーでよく使われるパフォーマンステストスクリプトの概要

これは、VPS サーバー用の一般的なワンクリック パフォーマンス テスト スクリプトです。マシンの構...

MySQL 5.7.21 履歴データディレクトリからデータを復元するチュートリアルの解凍バージョン

状況の説明: データベースが異常に起動およびシャットダウンしたため、サービスを再度起動したときに「起...

Nginx プロキシ axios リクエストと注意事項

序文最近、小さなデモを作成しました。大規模な工場のオンライン データを使用したため、インターフェイス...

Windows 10 システムに mysql-8.0.13 (zip インストール) をインストールする詳細なチュートリアル

インストール環境の説明•システムバージョン: windows10 •MySQL バージョン: mys...

ブラウザ内でHTMLタグを中央に配置するCSSスタイル

CSS スタイル:コードをコピーコードは次のとおりです。 <スタイル タイプ="te...

暗号化における https の Apache 展開の概要

目次目的実験環境実験原理実験手順1. 独立したCAを生成する2. サーバーの秘密鍵と署名要求ファイル...

JSで実施された機雷掃海プロジェクトの概要

この記事では、JS掃海プロジェクトの概要を参考までに紹介します。具体的な内容は次のとおりです。プロジ...

Linux サーバー上の hosts ファイル構成の詳細な説明

Linux サーバーのホスト ファイルの構成hosts ファイルは、Linux システム内の IP ...

TomcatをダウンロードしてLinuxにインストールする詳細な手順

Linux に触れたばかりの方には、この内容が役に立つかもしれません。Linux にしばらく触れてい...

Nginx で Angular プロジェクトを展開する際の落とし穴

コンパイル後にAngularプロジェクトをNginxにデプロイする方法をオンラインで検索すると、ほと...

Vue3.0 は虫眼鏡効果のケーススタディを実装します

達成される効果は、固定ズームが 2 倍になり、マウスが左側の画像領域に入るとマスク レイヤーが表示さ...

MySQL8インストーラーバージョングラフィックチュートリアル

インストール必要な書類は下部に記載されていますステップ1 mysql-installer-web-c...

MySQL 5.7.17 のインストールと使用方法のグラフィックチュートリアル

MySQL は、スウェーデンの会社 MySQL AB によって開発され、現在は Oracle が所有...

WeChat アプレットのカスタム タブバー コンポーネント

この記事では、WeChatアプレットのカスタムタブバーコンポーネントの具体的なコードを参考までに紹介...