MySQL マルチインスタンス構成ソリューション

MySQL マルチインスタンス構成ソリューション

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

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

これらの Mysql インスタンスは、一連の Mysql インストール プログラムを共有し、異なる my.cnf 構成ファイル、起動プログラム、およびデータ ファイルを使用します。サービスを提供する際、複数の Mysql インスタンスは論理的に互いに独立しています。構成ファイル内の対応する設定に従って、サーバーの対応するリソースを取得します。

1.2 マルチインスタンス構成のアイデア:

1. 複数の独立したディレクトリ
2. 各インスタンスは独立したデータ(初期化データ)を持つ
3. 複数のポート
4. 複数のソケット
5. 複数のスタートアッププログラム
6. 複数のログファイル

1.3 マルチインスタンス構成プロセス:

1.3.1 別のディレクトリを作成します。

mkdir -p /data/{3307,3308}
chown –R mysql.mysql /データ

1.3.2 各インスタンスの設定ファイルを記述します。

[root@db01 ~]# cat /data/3307/my.cnf
[mysqld]
ベースディレクトリ=/application/mysql
データディレクトリ=/data/3307
ソケット=/data/3307/mysql.sock
ログエラー=/data/3307/mysql.log
log_bin=/data/3307/mysql-bin
binlog_format=行
スキップ名解決=1
サーバーID=3307
ポート=3307

1.3.3 初期化データ:

./mysql_install_db --defaults-file=/data/3307/my.cnf --basedir=/application/mysql --datadir=/data/3307 --user=mysql

1.3.4 インスタンスを起動します。

sh mysqld_safe --defaults-file=/data/3307/my.cnf --pid-file=/data/3307/3307.pid &

マルチインスタンス サービスを管理するためのシェル スクリプト:

#!/bin/bash
 
. /etc/init.d/functions
./etc/プロファイル
 
開始='/application/mysql/bin/mysqld_safe --defaults-file=/data/3307/my.cnf --pid-file=/data/3307/3307.pid'
停止='mysqladmin -uroot -S /data/3307/mysql.sock シャットダウン'
ポート=`ss -tunlp|grep 3307|wc -l`
 
関数START(){
 [ $Port -ne 1 ]の場合
  $開始 >/dev/null 2>&1 &
  睡眠3
  [ $? -eq 0 ]の場合;
   アクション 'MySQL 3307 開始' /bin/true
  フィ
 それ以外
  アクション 'MySQL 3307 はすでに存在します' /bin/true
 フィ
}
関数STOP(){
 [ $Port -ne 0 ]の場合
  $停止
  [ $? -eq 0 ]の場合;
   アクション 'MySQL が正常に停止しました' /bin/true
  フィ
 それ以外
  アクション 'MySQL はすでに停止しています' /bin/true
 フィ
}
関数RESTART(){
 停止
 睡眠1
 始める
}
ケース$1
始める)
 始める
 ;;
停止)
 停止
 ;;
再起動)
 再起動
 ;;
*)
 echo "使用法: $0 {start|stop|restart}"
 ;;
エサック

以下もご興味があるかもしれません:
  • MySQLマルチインスタンスインストールに基づく詳細な分析
  • MySQLデータベース入門:マルチインスタンス構成方法の詳しい説明
  • mysqld_multi を使用して単一のマシンに複数のインスタンスをデプロイする方法に関する MySQL チュートリアル
  • MySQL マルチインスタンス インストール ブート自動起動サービス設定プロセス

<<:  Element UI を使用してページにページング ナビゲーション バーを追加する方法

>>:  UbuntuにProtobuf 3をインストールするための詳細なチュートリアル

推薦する

測定画像HTTPリクエスト

一般的なブラウザでテスト ページを開き、Fiddler で http リクエストを表示してください。...

Ubuntu 16.04 カーネルのアップグレード手順

1. 環境仮想マシン上で実行されているUbuntu 16.04では、コマンドuname -rを使用し...

Vueプロジェクトがグラフィック検証コードを実装

この記事の例では、グラフィック検証コードを実装するためのVueプロジェクトの具体的なコードを参考まで...

IE6 スペースバグ修正方法

コードを見てみましょう:コードをコピーコードは次のとおりです。 < !DOCTYPE html...

Vueを使用してタイマー機能を実装する

この記事の例では、タイマー機能を実装するためのVueの具体的なコードを参考までに共有しています。具体...

yumコマンドの使い方

1. yumの紹介Yum (フルネームは Yellow dogUpdater、Modified) は...

TypeScript インターフェース定義ケースチュートリアル

インターフェースの役割:インターフェース (英語: interface) の機能は、簡単に言えば、コ...

CentOS 7 はネットワークカードを変更した後、インターネットにアクセスできません

不明なドメイン名 www.baidu.com を Ping するホストのIPアドレスを変更する右クリ...

dockerでマウントされたディレクトリが読み書きできない問題を解決する

次のコマンドを使用してコンテナを作成し、ローカルの /home/dock/Downloads ディレ...

vue の v-bind を理解する

目次1. v-bindの主要ソースコードの分析1. v-bind属性はどこに均一に保存されるか: a...

Linux サーバーに Java Web プロジェクトをデプロイするための完全なチュートリアル

この記事は主にインターネット上の他のチュートリアルを参考にしています。実際に操作した上でのまとめです...

React 手書きタブ切り替え問題

親ファイル React をインポートし、{useState} を 'react' か...

JavaScript を使用して文字列内の最も繰り返しの多い文字を取得する方法

目次トピック分析する使用目的解決:コードは次のように実装されます。分析:配列とポインタ解決:コードは...

Java は Excel から MySQL にデータをインポートします

実際の業務では、Excel からデータベースにデータをインポートする必要がある場合があります。データ...

CSS3 で translate と transition を使用する方法

translate と transition は非常に強力で、習得するのは不可能だといつも感じていま...