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

推薦する

Apple 電卓の JS 実装

この記事の例では、Appleの電卓を実装するためのJSの具体的なコードを参考までに共有しています。具...

JavaScriptの原理と方向性

これが何を指しているのかをどのように判断するのでしょうか? ①グローバル環境で呼び出された場合はwi...

フロントエンドネットワーク、JavaScriptの最適化、開発のヒントについて簡単に説明します。

1. ネットワークの最適化YSlowには23のルールがあります。これら数十のルールは、主に、不要な...

MySQL コマンドライン操作中のエンコードの問題の詳細な説明

1. MySQLデータベースのエンコーディングを確認する mysql -u ユーザー名 -p パスワ...

VMware インストール エラー VMware Workstation が VMware 認証サービスを開始できませんでした

背景: SAP ECC サーバーをインストールし、XP をプレインストールしたいと考えています。XP...

Reactフックとzarmコンポーネントライブラリ構成に基づいてh5フォームページを開発するためのサンプルコード

最近、React Hooks を zarm コンポーネント ライブラリと組み合わせて使用​​し、js...

vue-cropper を使用して vue で写真をトリミングする方法をご存知ですか?

目次1. インストール: 2. 使用方法: 3. 組み込みメソッド: 4. 使用方法:要約する公式サ...

React+Antdはテーブルの追加、削除、変更の例を実装します

目次テーブル/index.jsテーブル/モデル/index.jsテーブル/モデル/モジュール/bas...

VueのTodoListケースの詳しい説明

<テンプレート> <div id="ルート"> <...

Dockerコンテナを使用する簡単な例

目次1. イメージをプルする2. イメージを実行する3. コンテナ内でアプリケーションをテストする4...

JavaScript による Web ページ カルーセルの超詳細な実装

目次HTML ページの作成js部分の機能を実装する1. 左ボタンと右ボタン2. 小さな円を動的に生成...

MySQL で MHA アーキテクチャのデプロイメントを構築する手順

目次マハ1. MAHアーキテクチャの概要2. 適用可能なシナリオ3. MHAの動作原理4. MHAの...

優れたウェブサイトのコピーライティングと優れたユーザーエクスペリエンス

ウェブサイトを見るというのは、実は美しい女性を評価するようなものです。見た目を見るとき、私たちは見た...

Linux における nohup と & の使い方と違いの詳細な説明

例:例として、Python コード loop_hello.py を使用します。このコードは、ループ回...

Reactの3つの主要属性における状態の使用の詳細な説明

目次クラスコンポーネント機能コンポーネントsetStateの落とし穴React では多くの場所でデー...