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 内のすべてのテーブルをすばやく削除...

MySQLでテーブルを接続するいくつかの方法

MySQL テーブルでの接続方法は実は非常に簡単なので、ここではその特徴を簡単にリストします。テーブ...

CentOS での MySQL ログイン 1045 問題を解決する

アプリケーション全体を CentOS にデプロイする必要があるため、当然ながらデータベース操作は不可...

HTML ウェブページのブラウザタイトルバーに小さなアイコンを表示する方法

この効果と同様に、方法も非常に簡単です。ヘッダーに次のように記述します: <link rel=...

TomcatのmaxPostSize属性を設定する際に注意する必要がある問題を解決する

必要:近い将来、大容量ファイルのアップロード機能を実装します。フロントエンドフレームワークのアップロ...

Linux での MySQL データベースのマスター スレーブ同期レプリケーション構成

Linux での MySQL データベースのマスター/スレーブ同期構成の利点は、この方法をバックアッ...

Nginx Rewrite の使用シナリオとコード例の詳細な説明

Nginx Rewriteの使用シナリオ1. URL アドレスジャンプ。たとえば、ユーザーが pm....

HTML onfocus gain focus および onblur lose focus イベントの詳細な説明

HTML onfocus イベント属性定義と使用法onfocus 属性は、要素がフォーカスを受け取っ...

HTMLにおける絶対パスと相対パスの違いの分析

図に示すように: 1 つのページには多数のファイルが接続されているため、ファイルを参照するときには、...

Elementのメッセージポップアップウィンドウが繰り返しポップアップする問題の解決

目次1. 使用2. メッセージポップアップウィンドウが繰り返し表示される問題を解決する1. 使用Vu...

WeChatアプレットがログインインターフェースを実装

WeChatアプレットのログインインターフェースは参考までに実装されています。具体的な内容は次のとお...

将来人気が出るであろういくつかのナビゲーション方向

<br />今は情報爆発の時代であるだけでなく、サービス爆発の時代でもあります。それはす...

node.js グローバル変数の具体的な使用法

グローバルオブジェクトすべてのモジュールは呼び出すことができますglobal: ブラウザの wind...

CSS を使用して画像の色を変更する 100 の方法 (収集する価値あり)

序文「画像処理というと、PhotoShop などの画像処理ツールを思い浮かべることが多いです。フロン...