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

推薦する

Django 2.2 を MySQL データベースに接続する方法

1. プロジェクトの実行時に報告されるエラー情報は次のとおりです。 ファイル "/home...

Ubuntu システムログで /var/log/messages を設定する方法

1. 問題の説明今日、システム ログ ファイルを確認する必要がありますが、/var/log/mess...

TypeScript 名前空間のマージの説明

目次同じ名前の名前空間をマージする名前空間とその他の種類のマージ同じ名前の名前空間とクラスをマージす...

Alibaba Cloud ServerにMySQLデータベースをインストールする方法の詳細な説明

序文学習中に Zookeeper をインストールする必要があったため、仮想マシンに常に問題が発生した...

CSS でよく発生する問題の整理 (ロゴのハッキング/コンテナの固定/画像の垂直方向の中央揃え)

1. IEブラウザモードハックロゴ1. CSSハックロゴコードをコピーコードは次のとおりです。 ie...

Nginx ロケーションマッチングルールの例

1. 文法 場所 [=|~|~*|^~|@] /uri/ { ... } 2. 説明上記の構文から、...

スネークゲームのアイデアを実現するためのJavaScript

JavaScriptゲームSnakeの実装アイデア(完全なコード実装)を参考までに説明します。具体...

ウェブデザインでよくある間違いのまとめ

Web ページを設計する過程で、デザイナーが間違いを犯すのは必然です。特に新人は、新しいアイデアを実...

JavaScript初心者がよく犯す間違い

目次序文undefined と null の混同紛らわしい数値の加算と文字列の連結戻り文の改行の問題...

centos7.2 オフラインインストール mysql5.7.18.tar.gz

ネットワークが分離されているため、MySQL は yum を使用してインストールできません。ここでは...

CentOS 7 構成 Tomcat9+MySQL ソリューション

Tomcatの設定まずTomcatをインストールするTomcatのインストールは、Tomcatのイン...

MySQLオンラインログライブラリの移行例

最近の事例をお話ししましょう。オンライン Alibaba Cloud RDS 上のゲーム ログ ライ...

Windows 上で Nginx+Tomcat クラスタを実装するプロセスの分析

導入: Nginx (エンジン エックスと同じ発音) は、BSD のようなプロトコルに基づいてリリー...

フィボナッチ数列のJavaScript出力を実装する方法

目次トピック分析する基本的な解決策基本的な再帰再帰最適化要約するトピック私たちが答えなければならない...

Windowsにmysql5.7をインストールする方法

まずmysqlの圧縮バージョンをダウンロードします。公式ダウンロードアドレスは123WORDPRES...