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 個の概要

推薦する

DockerでMongoDBコンテナをデプロイする方法

目次Dockerとは展開する1. イメージをプルする2. 画像を表示する3. コンテナを実行する4....

nginx「504 ゲートウェイタイムアウト」エラーを解決する

ウェブサイトを作成する学生は、アクセス時に一部の nginx サーバーが 504 Gateway T...

jsドラッグ効果の原理と実装

ドラッグ機能は主に、ドラッグによる並べ替え、ポップアップ ボックスのドラッグと移動など、ユーザーがカ...

Vue3.xはコンポーネント通信にmitt.jsを使用します

目次クイックスタート使い方基本原則Vue2.x はコンポーネント通信に EventBus を使用しま...

ウェブページの読み込み速度を上げる簡単なヒント

Web ページの読み込み速度は、Web サイトの品質を評価するための重要な指標です。その理由は、ほと...

Centos7 から Centos8 へのアップグレードに関するチュートリアル (画像とテキスト付き)

正式な環境でアップグレードする場合は、データと重要な設定をバックアップしてください。アップグレードに...

MYSQL開発パフォーマンス調査:バッチデータ挿入の最適化方法

1. どのような問題に直面しましたか?標準 SQL では、通常、次の SQL 挿入ステートメントを記...

Nginx と GeoIP モジュールを使用して IP の地域情報を読み取る方法

LinuxにGeoIPをインストールする yum で nginx-module-geoip をインス...

ポップアップウィンドウの上下中央左右と透明な背景のロックウィンドウ効果を実現する CSS

クリック後にポップアップボックスを実現し、上下左右に中央揃えし、灰色の透明マスクを追加してウィンドウ...

HTMLページが3秒後に自動的にジャンプする3つの一般的な方法

実際には、N 秒後にページを自動的にジャンプさせるにはどうすればよいかという問題によく遭遇します。私...

MySQL トランザクション同時実行問題の解決

開発中にこのような問題に遭遇しましたビデオ視聴記録が 100 に更新されると、視聴されたことを意味し...

js を使用してファイルが UTF-8 でエンコードされているかどうかを判断する方法

従来の解決策FileReader を使用して UTF-8 形式のファイルを読み取り、ファイルの内容に...

React Router 5.1.0 はページジャンプナビゲーションを実装するために useHistory を使用します

目次1. withRouterコンポーネントを使用する2. ルートタグを使用するReactRoute...