MySQL シリーズ II マルチインスタンス構成

MySQL シリーズ II マルチインスタンス構成

チュートリアルシリーズ

MySQL シリーズ: MySQL リレーショナル データベースの基本概念
MySQLシリーズのMariaDBサーバーのインストール
MySQL シリーズ 3 基礎
MySQL シリーズ 4 SQL 構文
MySQLシリーズ5つのビュー、ストアド関数、ストアドプロシージャ、トリガー
MySQL シリーズ 6 のユーザーと認証
MySQL シリーズ 7 MySQL ストレージ エンジン
MySQL シリーズ 8 MySQL サーバー変数
MySQL シリーズ 9 MySQL クエリ キャッシュとインデックス
MySQL シリーズ 10 同時実行制御を実装するための MySQL トランザクション分離
MySQL シリーズ 11 ログ
MySQL シリーズ 12 バックアップとリカバリ
MySQL シリーズ 13 MySQL レプリケーション
MySQL シリーズ 14 MySQL 高可用性実装
MySQLシリーズ15 MySQL共通設定とパフォーマンスストレステスト

MySQL マルチインスタンスとは何ですか?

簡単に言うと、MySQL マルチインスタンスとは、サーバー上で複数の異なるサービス ポート (3306、3307 など) を同時に開き、複数の MySQL サービス プロセスを同時に実行することです。これらのサービス プロセスは、異なるサービス ポートをリッスンする異なるソケットを通じてサービスを提供します。

これらの MySQL の複数のインスタンスは、異なる my.cnf (同じでも可) 構成ファイル、起動プログラム (同じでも可)、およびデータ ファイルを使用して、一連の MySQL インストール プログラムを共有します。サービスを提供する際、複数の MySQL インスタンスは論理的に互いに独立しているように見え、構成ファイル内の対応する設定に基づいて、サーバーから対応する量のハードウェア リソースを取得します。

例を挙げると、複数の MySQL インスタンスは、家の複数の寝室に相当します。各インスタンスは寝室とみなすことができ、サーバー全体は家です。サーバーのハードウェア リソース (CPU、メモリ、ディスク) とソフトウェア リソース (CentOS オペレーティング システム) は、家のバスルーム、キッチン、リビングルームとみなすことができ、これらは家の共有リソースです。北京の出稼ぎ労働者で、友達と一緒に家を借りているなら、もっとよく分かると思います。みんな一緒に暮らし、自分の寝室で休み、外出するときは必ず上記の公共資源を共有することになります。これにより、MySQL の複数のインスタンスについて十分に理解できるようになります。

実際、nginx、Apache、haproxy、redis など、多くのネットワーク サービスは複数のインスタンスを使用して構成できます。ポータルサイトで広く使用されています。

1 台の物理マシンに複数のテスト環境が必要な場合は、データベースの複数のインスタンスを構築する必要があります。複数のインスタンスは複数のプログラムを実行することを意味し、インスタンス間に影響を与えません。リスニング ポートが異なる必要があることに注意してください。

環境: CentOS7.5、MariaDB-10.2.15 バージョンをコンパイルしてインストール、ソフトウェアのインストール ディレクトリ: /app/mysql/

1) 実行ディレクトリ環境を作成する

[root@centos7 ~]# mkdir -p /mysqldb/{3306,3307,3308}/{etc,socket,pid,log,data,bin}
[root@centos7 ~]# chown -R mysql:mysql /mysqldb/

2) データベースを初期化する

[root@centos7 ~]# cd /app/mysql/
[root@centos7 mysql]# scripts/mysql_install_db --datadir=/mysqldb/3306/data/ --user=mysql --basedir=/app/mysql/ 
[root@centos7 mysql]# scripts/mysql_install_db --datadir=/mysqldb/3307/data/ --user=mysql --basedir=/app/mysql/
[root@centos7 mysql]# scripts/mysql_install_db --datadir=/mysqldb/3308/data/ --user=mysql --basedir=/app/mysql/

上記はコンパイルしてインストールしたものです。インストールディレクトリは /app/mysql/ です。ソフトウェアのインストールディレクトリに入り、初期化スクリプトを実行する必要があります。yum でインストールしたパッケージの場合は、mysql_install_db コマンドを直接実行するだけです。

3) 設定ファイルを提供し、必要に応じて変更する

[root@centos7 mysql]# cp support-files/my-huge.cnf /mysqldb/3306/etc/my.cnf
[root@centos7 mysql]# cp support-files/my-huge.cnf /mysqldb/3307/etc/my.cnf
[root@centos7 mysql]# cp support-files/my-huge.cnf /mysqldb/3308/etc/my.cnf
[root@centos7 mysqldb]# cd /mysqldb/
[root@centos7 mysqldb]# vim 3306/etc/my.cnf
[mysqld]
ポート = 3306
データディレクトリ = /mysqldb/3306/data
ソケット = /mysqldb/3306/socket/mysql.sock
[root@centos7 mysqldb]# vim 3307/etc/my.cnf #上記の設定例に従って変更します [root@centos7 mysqldb]# vim 3308/etc/my.cnf

4) サービス起動スクリプトを提供する

[root@centos7 ~]# cat mysqld #スクリプト例#!/bin/bash

port=3306 #現在のインスタンスのポート番号に変更する必要がありますmysql_user="root"
mysql_pwd=""
cmd_path="/app/mysql/bin" #インストールディレクトリ内のbin
mysql_basedir="/mysqldb" #インスタンスデータベースファイルが配置されているディレクトリmysql_sock="${mysql_basedir}/${port}/socket/mysql.sock"

関数_start_mysql()
{
    if [ ! -e "$mysql_sock" ];その後
      printf "MySQL を起動しています...\n"
      ${cmd_path}/mysqld_safe --defaults-file=${mysql_basedir}/${port}/etc/my.cnf &> /dev/null &
    それ以外
      printf "MySQL が実行中です...\n"
      出口
    フィ
}


関数_stop_mysql()
{
    if [ ! -e "$mysql_sock" ];その後
       printf "MySQL は停止しています...\n"
       出口
    それ以外
       printf "MySQL を停止しています...\n"
       ${cmd_path}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} シャットダウン
   フィ
}


関数_restart_mysql()
{
    printf "MySQL を再起動しています...\n"
    関数_stop_mysql
    睡眠2
    関数_start_mysql
}

ケース$1
始める)
    関数_start_mysql
;;
停止)
    関数_stop_mysql
;;
再起動)
    関数_restart_mysql
;;
*)
    printf "使用方法: ${mysql_basedir}/${port}/bin/mysqld {start|stop|restart}\n"
エサック
[root@centos7 ~]# cp mysqld /mysqldb/3306/bin/
[root@centos7 ~]# cp mysqld /mysqldb/3307/bin/
[root@centos7 ~]# cp mysqld /mysqldb/3308/bin/
[root@centos7 ~]# vim /mysqldb/3306/bin/mysqld
ポート=3306
[root@centos7 ~]# vim /mysqldb/3307/bin/mysqld
ポート=3307
[root@centos7 ~]# vim /mysqldb/3308/bin/mysqld
ポート=3308

5) スクリプトファイルの権限を変更して、パスワードが他人に見られないようにする

[root@centos7 ~]# chmod 700 /mysqldb/3306/bin/mysqld 
[root@centos7 ~]# chmod 700 /mysqldb/3307/bin/mysqld  
[root@centos7 ~]# chmod 700 /mysqldb/3308/bin/mysqld 

6) サービスを開始する

[root@centos7 ~]# service mysqld stop #元のサービスが停止していることを確認し、ポート 3306 を解放します [root@centos7 ~]# /mysqldb/3306/bin/mysqld start #サービスを開始します [root@centos7 ~]# /mysqldb/3307/bin/mysqld start
[root@centos7 ~]# /mysqldb/3308/bin/mysqld を起動します
[root@centos7 ~]# ss -tnl #3つのインスタンスがリッスンしているポートがすべて開いていることがわかったら、サービスが正常に起動していることを意味します LISTEN 0 80 :::3306 :::*
聞く 0 80 :::3307 :::*
聞く 0 80 :::3308 :::*

7) 接続テスト

[root@centos7 ~]# mysql -S /mysqldb/3306/socket/mysql.sock #ソケットファイルを指定するには -S を使用します サーバーバージョン: 10.2.15-MariaDB-log ソース配布
MariaDB [(なし)]> show variables like '%port'; #ポートが3306かどうか確認
+---------------------+-------+
| 変数名 | 値 |
+---------------------+-------+
| 追加ポート | 0 |
| 大容量ファイルサポート | オン |
| ポート | 3306 |
| レポートポート | 3306 |
+---------------------+-------+
セット内の 4 行 (0.00 秒)

[root@centos7 ~]# mysql -S /mysqldb/3307/socket/mysql.sock # 再接続して3307と3308をテストします
サーバーバージョン: 10.2.15-MariaDB-log ソース配布
MariaDB [(なし)]> '%port' のような変数を表示します。
+---------------------+-------+
| 変数名 | 値 |
+---------------------+-------+
| 追加ポート | 0 |
| 大容量ファイルサポート | オン |
| ポート | 3307 |
| レポートポート | 3307 |
+---------------------+-------+
セット内の 4 行 (0.00 秒)

[root@centos7 ~]# mysql -S /mysqldb/3308/socket/mysql.sock
サーバーバージョン: 10.2.15-MariaDB-log ソース配布
MariaDB [(なし)]> '%port' のような変数を表示します。
+---------------------+-------+
| 変数名 | 値 |
+---------------------+-------+
| 追加ポート | 0 |
| 大容量ファイルサポート | オン |
| ポート | 3308 |
| レポートポート | 3308 |
+---------------------+-------+
セット内の 4 行 (0.00 秒)

複数のインスタンスが正常に構築されました。

8) このコマンドを使用してインスタンスを停止します

[root@centos7 ~]# /mysqldb/3306/bin/mysqld を停止します

9) 最後のステップ: ルートユーザーのパスワードを追加します~

[root@centos7 ~]# mysql -S /mysqldb/3307/socket/mysql.sock 
サーバーバージョン: 10.2.15-MariaDB-log ソース配布

MariaDB [(なし)]> update mysql.user set password=PASSWORD("your_password") where user='root';
クエリは正常、4 行が影響を受けました (0.00 秒)
MariaDB [(なし)]> 権限をフラッシュします。
クエリは正常、影響を受けた行は 0 行 (0.00 秒)
MariaDB [(なし)]> mysql.user からユーザー、ホスト、パスワードを選択します。
+------+-----------+--------------------------------------------------------+
| ユーザー | ホスト | パスワード |
+------+-----------+--------------------------------------------------------+
| ルート | ローカルホスト | *9E72259BA9214F692A85B240647C4D95B0F2E08B |
| ルート | centos7 | *9E72259BA9214F692A85B240647C4D95B0F2E08B |
| ルート | 127.0.0.1 | *9E72259BA9214F692A85B240647C4D95B0F2E08B |
| ルート | ::1 | *9E72259BA9214F692A85B240647C4D95B0F2E08B |
| | ローカルホスト | |
| | centos7 | |
+------+-----------+--------------------------------------------------------+
セット内の 6 行 (0.00 秒)

[root@centos7 ~]# mysql -S /mysqldb/3307/socket/mysql.sock -uroot -p'your_password' #パスワードを指定して再度ログインすればOK~

最後に、サービスの起動に失敗しないように、bin/mysqldスクリプトファイルにパスワードを追加します。

これで、MySQL シリーズ 2 マルチインスタンス構成に関するこの記事は終了です。MySQL マルチインスタンス構成の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQLデータベース入門:マルチインスタンス構成方法の詳しい説明
  • MySQL マルチインスタンス構成ソリューション
  • mysqld_multi を使用して単一のマシンに複数のインスタンスをデプロイする方法に関する MySQL チュートリアル
  • MySQLの導入と1台のマシンでのマルチインスタンス導入を迅速に実装
  • MySQLマルチインスタンスインストールに基づく詳細な分析

<<:  ウェブサイトを黒、白、グレーにする4つのコードの詳細な説明

>>:  ウェブサイト標準の検証方法を通じてFlashページを共有する方法

推薦する

MySQLインデックスの基本構文

インデックスはソートされたデータ構造です。 where 条件での検索や order by 条件での並...

ノードスクリプトで自動サインインと抽選機能を実現

目次1. はじめに2. 準備3. スクリプトプロジェクトの構築4. コードの作成と実行5. まとめと...

Navicat PremiumはMySQLデータベースを操作します(SQL文を実行します)

1. Navicatの紹介1. Navicat とは何ですか? Navicat は強力な MySQ...

Tomcat でのコネクタ構成

JBoss は Tomcat を Web コンテナとして使用するため、JBoss の Web コンテ...

MySQL ログイン エラーを解決する: 'ユーザー 'root'@'localhost' へのアクセスが拒否されました

まず、コマンドラインまたはワークベンチを使用して MySQL にログインできず、「ユーザー '...

Day.js をベースにした JavaScript での日付処理のよりエレガントな方法

目次day.js を使用する理由モーメントデイ.js day.js がなければどうなるでしょうか? ...

node.js の require メソッドの読み込みルールの詳細な説明

require メソッドの読み込みルールキャッシュからの読み込みを優先するコアモジュールパス形式のモ...

IE8 開発者ツール メニューの説明

<br />この記事では、開発者ツールのさまざまなメニューについて簡単に説明しました。こ...

スライド階段効果を実現するjQuery

この記事では、階段スライド効果を実現するためのjQueryの具体的なコードを参考までに紹介します。具...

nginx プロキシ サーバーで双方向証明書検証を構成する方法

証明書チェーンを生成するスクリプトを使用して、ルート証明書、中間証明書、および 3 つのクライアント...

mysql 5.7.20 win64 のインストールと設定方法

mysql-5.7.20-winx64.zipインストール手順のないインストール パッケージ: ht...

MySQL 結合クエリ構文と例

接続クエリ:これは、2 つのクエリ (またはテーブル) の各行をペアで接続した結果です。つまり、1 ...

CentOS7 環境で gcc (バージョン 10.2.0) をアップグレードする詳細な手順

目次簡単な紹介1. 現在のgccバージョンを確認する2. gccインストールパッケージ(バージョン1...

Linux 上の MariaDB は root ユーザーで起動します (推奨)

最近、セキュリティ製品をテストする必要があったため、mariadb の起動ユーザーを root に調...

docker ベースの mariadb のインストール構成プロセスの分析

1. インストール dockerhub を通じてインストールする mariadb のバージョンを検索...