MySQLのマルチインスタンス・データベース

MySQLののマルチインスタンスとは何ですか?
  簡単に言えば、Mysqlのマルチインスタンスは、単一のサーバ上の異なるサービスポートのサービスを提供するために、さまざまなリスニングソケットを介して、サービスプロセスを同時に(例えば3306,3307)は、複数の異なるサービスのポートを開き、複数のMySQLサービスのプロセスを実行することです。
マルチインスタンスMsyqlの特徴:
  これらは、設定ファイル(my.cnfファイル)のプログラムやデータファイルを起動を使用せずに、MySQLのMySQLのインストーラを共有しています。サービスを提供する際に、マルチインスタンスMySQLは別の論理だが、それらはコンフィギュレーションファイルに対応した設定値に応じてあり、サーバ応答は、ハードウェアリソースの数を取得します。

追加:
実際には、多くのWebサーバは、NginxはApacheのRedisのMemcacheのように、マルチインスタンス構成可能な複数のインスタンスを設定することができますが。

マルチロールインスタンスをのmysql:

1)サーバリソースの効率的な使用は、
単一のサーバがリソースを残り時間である場合、残りのリソースは、より多くのサービスを提供するという利点を取ることができ、そしてリソースが論理的な分離を達成することができます。
2)サーバーのリソースを節約
するとき、会社の財務の歪みが、独自のデータベースを必要とし、独立したサービスを提供しようとするが、すべての優れたマスター・スレーブレプリケーション、マルチインスタンスが必要です。
しかし、マルチインスタンス、ときに高い同時実行データベースインスタンスまたは完全なSQLクエリmysqlの欠点があり、お互いのリソースをつかむために問題があるでしょう。

MySQLの生産シナリオを例に、複数
1.金融株選択の企業
サーバのそれぞれが9-15に達することができるように、3台の9-15サーバは、クロスショットから分離コピーして、データのバックアップを作成し、インスタンスを展開し次のようながデータベース与える影響のみをインストールします。いわゆる独立性が相対的です。
2.同時アクセスは、大企業ではない
、SQL文の最適化をよりよく行うためにならば、それは、マルチインスタンスのアプリケーションに適しており、ビジネスのボリュームが大きすぎない場合には、サーバーのリソースは、基本的には廃棄物ですMySQLとより例は、技術の非常に価値のある使用が大幅にシステム資源の合理的な配分によって複雑にすることができますされるだろう、と良いサービスで、大きな問題がないでしょう。
3.ポータルMySQLのマルチインスタンスのアプリケーションのシナリオ
のような:Baiduの会社、IBMサーバー48コアCPUで、部門、メモリ96ギガバイト このような構成のサーバーは、インスタンス3-4を実行することがあり、シーナ複数のインスタンスのネットワークが使用されている、メモリは48Gについてです。
追加:シーナ単一のデータベース、ネットワークデータベースインスタンス1-4過半数、1-2までの大多数、大企業が機械以上かかるよう。また、シーナのウェブサイトは、一般的にインストールインストールと使用を調和させるためには、最適化した後、rpmパッケージを作るために、カスタマイズをコンパイルするために使用されるデータベースを、インストールします。DELL R510サーバは、CPU E5210 48Gメモリドライブは、12 * 300G SAS RAID10を行い、過半数です。

マルチ構成方式のMySQL例

1つのコンフィギュレーションファイル、単一インスタンスの展開シナリオよりプログラム起動
単一の構成ファイルに記載されたMySQLの公式文書を、プログラムの単一インスタンスのマルチインスタンスの展開は、このプログラムのために推奨されていない開始、知識ポイントと呼びます。次のように公式my.cnf設定ファイルの設定例は以下のとおりです。

【mysqld_multil] 
のmysqld =は/ usr / binに/ mysqld_safeを
mysqladminの=は/ usr / binに/のmysqladminの
ユーザのMySQL = 
[mysqld1】
ソケット= /var/lib/mysql/mysql.sockの
ポート= 3306 
、PIDファイル=の/ var / libに/のMySQL /mysql.pid 
DATADIR =の/ var / libに/ MySQLの/ 
ユーザー= MySQLの
[mysqld2] 
ソケット= / MNT /データ/ DB1 /にmysql.sockの
ポート= 3302 
、PIDファイル= /mnt/data/db1/mysql.pid 
DATADIR = / MNT /データ/ DB1 / 
ユーザー= MySQLの
スキップ名前解決
サーバID = 10 
dafaultストレージエンジン= InnoDBは
innodb_buffer_pool_size = 512M 
innodb_additional_mem_pool = 10M 
DEFAULT_CHARACTER_SET = UTF8 
character_set_server = UTF8 
#読み取り専用
リレーログ・スペース限界= 3G 
expire_logs_day = 20

コマンドを起動し、次のとおりです。
mysqld_multi --config-file=/data/mysql/my_multi.cnf start 1,2
この方式では、不利な点は、カップリングには、均一な原則と運用・保守を開発し、結合を低減するために、設定ファイル、悪い管理、作業高すぎるです
2.マルチプロファイルマルチブート展開計画
複数の設定ファイル、マルチスタート展開計画は、推奨されるソリューションです。ビューの次の設定例:

[MySQLの@ルート/]ツリー/データ
/データ
| - 3306 
| | --data "データファイルの3306例== 
| | --my.cnf"設定ファイルの== 3306例
| | --mysql「= = 3306インスタンスの起動ファイル
--3,307 
| | --data "== 3307個のインスタンス・データ・ファイル
| | --my.cnf" == 3307インスタンス構成
| | --mysql「== 3307インスタンスの起動ファイル

MySQLのマルチインスタンス構成プロセス。

  1. Msyql必要な依存関係をインストールし
  たMySQLのインストールが必要なソフトウェアコンパイラ2. 
  3.インストールのMysql 
  4.設定し、複数のインスタンス
  5.初期のMySQLデータベース
  6.スタートのMySQL 
  7.ログのMySQL 
  8.トラブルシューティングの指示
  開始から9ブートを

MySQLの複数インスタンスのデータベースのインストール

1. Msyql必要な依存関係をインストールします。

YUMのncurses-develののlibaio-develの-yインストールし
ます。rpm -qaのncurses-develののlibaio-develの
のlibaio-develの-0.3.107-10.e16x86_64 
のncurses-develの-5.7-3.20090208.c16x86_64を

データベース:

サーバー名ホストのIPアドレス
C3-MySQLデータベース172.16.1.52/24 DB02

2. MySQLのコンパイルに必要なソフトウェアをインストールします

LS -lh cmakeの-2.8.8.tar.gz 
タールXFのcmakeの-2.8.8.tar.gz 
CDのcmakeの-2.8.8 
./configureを
gmakeの
gmakeをインストール
cmakeの
は/ usr / local / binに/ cmakeのの
CDを../

それとも、yumを(yumをインストールを推奨)をインストールし使用することができます
yum install cmake -y
インストールMySQLを起動します3.

#mysqlユーザを作成します。
useraddのmysqlの-s / sbinに/ nologinに-M 
上記のID MySQLの言及
ダウンロードパスを入力するように#を
CD /ホーム/ Oldboy /ツール
のwget http://downloads.mysql.com/archives/get/file/mysql-5.5を。 32.tar.gz

MySQLのソースパッケージとバイナリパッケージ名

MySQLのソフトウェアの名前
(ここでインストールパッケージを使用されるように)Msyqlソースインストールパッケージのmysql-5.5.32.tar.gz 
MySQLのバイナリパッケージのmysql-5.5.32-linuxの-x86_64.tar.gz

#インストールパッケージを解凍します

タールXFのmysql-5.5.32.tar.gzの
CDのmysql-5.5.32 
[ルート@ DB02のmysql-5.5.32]#のcmakeの。-DCMAKE_INSTALL_PREFIX = /アプリケーション/ MySQLの-5.5.32 \ 
-DMYSQL_DATADIR = /アプリケーション/ MySQLの-5.5.32 /データ\ 
-DMYSQL_UNIX_ADDR = /アプリケーション/ MySQLの-5.5.32 / TMP /にmysql.sock \ 
-DDEFAULT_CHARSET = UTF8 \ 
- DDEFAULT_COLLATION = utf8_general_ci \ 
-DEXTRA_CHARSETS = GBK、GB2312、UTF8、ASCII \ 
-DENABLED_LOCAL_INFILE = ON \ 
-DWITH_INNOBASE_STORAGE_ENGINE = 1 \ 
-DWITH_FEDERATED_STORAGE_ENGINE = 1 \ 
-DWITH_BLACKHOLE_STORAGE_ENGINE = 1 \ 
-DWITHOUT_EXAMPLE_STORAGE_ENGINE = 1 \ 
-DWITHOUT_PARTITION_STORAGE_ENGINE = 1 \ 
-DWITH_FAST_MUTEXES = 1 \ 
同梱-DWITH_ZLIB = \  
-DENABLED_LOCAL_INFILE = 1 \
-DWITH_READLINE = 1 \
-DWITH_EMBEDDED_SERVER = 1 \ 
-DWITH_DEBUG = 0 
[ルート@ DB02のmysql-5.5.32]#作る&&作るインストールし
ます。[root @のDB02のmysql-5.5.32]#LN -s /application/mysql-5.5.32/ /アプリケーション/ mysqlの
[ルート@ DB02 mysqlの-5.5.32]#のCD /アプリケーション/ mysqlの
[ルート@ DB02のmysql]#LSは
ビンのデータが含まれ、LIBのmysql-テストスクリプトのsql-ベンチ
COPYINGドキュメントINSTALL-BINARY男のREADMEを共有のサポート、ファイル

複数のインスタンスを設定します

[ルート@ DB02のMySQLの]#ます。mkdir -p /データ/ {3306,3307} /データ
[ルート@ DB02〜]#ツリー/データ/ 
/データ/ 
├──3306 
├──│データ
│├──のmy.cnf 
│└──mysqlの
└──3307の
    ├──データ
    ├──my.cnfの
    └──mysqlの
4つのディレクトリ、ファイル4

3306フォルダ説明:
#### vimのmy.cnfファイル####

[クライアント] 
ポート= 3306 
ソケット= /data/3306/mysql.sock 
[MySQLの】
なし自動焼き直し
[mysqldを】
ユーザ= MySQLの
ポート= 3306 
ソケット= /data/3306/mysql.sock 
BASEDIR = /アプリケーション/ MySQLの
DATADIR = /データ/ 3306 /データ
open_files_limit = 1024 
back_log = 600 
MAX_CONNECTIONS = 800 
てmax_connect_errors = 3000 
table_cacheの= 614 
外部ロック= FALSE 
のmax_allowed_pa​​cket = 8M 
sort_buffer_size = 1M 
join_buffer_size = 1M 
thread_cache_size = 100 
thread_concurrency = 2 
query_cache_size = 2M  
query_cache_limit = 1M
query_cache_min_res_unitの= 2K
#default_table_type = InnoDBの
thread_stack = 192K 
#transaction_isolation = READ-COMMITTED 
tmp_table_size = 2M 
max_heap_table_size = 2M 
long_query_time = 1 
#log_long_format 
#ログ・エラー= /data/3306/error.log 
#対数スロークエリ= /データ/ 3306 /スロー.logの
PIDファイル= /data/3306/mysql.pid 
ログ-binが= /データ/ 3306 / mysqlのビン
リレーログ= /データ/ 3306 /リレービン
リレー-ログ情報ファイル= /データ/ 3306 /relay-log.info 
binlog_cache_size = 1M 
max_binlog_cache_size = 1M 
max_binlog_size = 2M 
expire_logs_days = 7 
key_buffer_sizeは= 16M 
read_buffer_size = 1M  
read_rnd_buffer_size = 1M
bulk_insert_buffer_size = 1M 
#myisam_sort_buffer_size = 1M
#myisam_max_sort_file_size = 10G 
#myisam_max_extra_sort_file_size = 10Gの
#myisam_repair_threads = 1 
#myisam_recover 
はlower_case_table_names = 1 
スキップ-名前解決
スレーブ・エラーをスキップ= 1032,1062 
複製-無視-DB = mysqlの
サーバー-ID = 1 
innodb_additional_mem_pool_size = 4M 
innodb_buffer_pool_size = 32M 
innodb_data_file_path = ibdata1と:128M:自動拡張
innodb_file_io_threads = 4 
innodb_thread_concurrency = 8 
innodb_flush_log_at_trx_commit = 2 
innodb_log_buffer_size = 2M 
innodb_log_file_size = 4M 
innodb_log_files_in_group = 3 
innodb_file_per_tableを= 0 
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120 
[mysqldumpを】
クイック
のmax_allowed_pa​​cket = 2M 
[mysqld_safeを】
対数誤差= /データ/ 3306 / mysql_oldboy3306.errの
PIDファイル= /データ/ 3306 / mysqld.pid

#### Vimのmysqlの####

#!/ binに/ shの
############################################ ####は、
2016年12月9日にliuliyaによって作成されたスクリプト#この
#oldboyのQQを:865205026 
#siteます。http://www.liuliya.com 
################ ################################ 
#init 
ポート= 3306 
mysql_user = "ルート" 
MYSQL_PWD = "oldboy" 
CmdPath =」 /アプリケーション/ mysqlの/ binに」
mysql_sock = "/データ/ $ {ポート} /mysql.sock" 
#startup関数
function_start_mysql()
{ 
    [あれば!-e "$のmysql_sock"];その後
      のprintfは、 "MySQLの... \ n個の開始" 
      / binに/のsh $ {CmdPath} / mysqld_safeを--defaults-ファイル= /データ/ $ {ポート} /my.cnf 2>&1> / dev / null&
#STOP関数 
#STOP機能
function_stop_mysql()
function_stop_mysql()
{ 
{ 
    [あれば!-e "$のmysql_sock"];その後、
       printfの"MySQLが停止されています... \ n"は
       終了し
    、他
       のprintf "ストーピングMySQLの... \ n"は
       $ {CmdPath} / mysqladminの-u $ {} mysql_user -p $ {} MYSQL_PWD -S /data/${port}/mysql.sockシャットダウン
   Fiの
} 
#restart関数
function_restart_mysql()
{ 
    printfの"再起動のMySQL ... \ n"は
    function_stop_mysqlの
    睡眠2 
    function_start_mysql 
} 
の場合$ 1 
スタート)
    function_start_mysql 
;; 
ストップ)
    function_stop_mysql 
;;
    [あれば!-e "$のmysql_sock"];その後、
       printfの"MySQLが停止されています... \ n"は
       終了し
    、他
       のprintf "ストーピングMySQLの... \ n"は
       $ {CmdPath} / mysqladminの-u $ {} mysql_user -p $ {} MYSQL_PWD -S /data/${port}/mysql.sockシャットダウン
   Fiの
} 
#restart関数
function_restart_mysql()
{ 
    printfの"再起動のMySQL ... \ n"は
    function_stop_mysqlの
    睡眠2 
    function_start_mysql 
} 
の場合$ 1 
スタート)
    function_start_mysql 
;; 
ストップ)
    function_stop_mysqlの
再起動)
    function_restart_mysql 
;; 
*)
    のprintf "使い方:/データ/ $ {ポート} / mysqlの{開始|停止|再起動} \ n"は
ESAC

3307フォルダ説明:
####のvimのmy.cnf

[クライアント] 
ポート= 3307 
ソケット= /data/3307/mysql.sock 
[MySQLの】
なし自動焼き直し
[mysqldを】
ユーザ= MySQLの
ポート= 3307 
ソケット= /data/3307/mysql.sock 
BASEDIR = /アプリケーション/ MySQLの
DATADIR = /データ/ 3307 /データ
open_files_limit = 1024 
back_log = 600 
MAX_CONNECTIONS = 800 
てmax_connect_errors = 3000 
table_cacheの= 614 
外部ロック= FALSE 
のmax_allowed_pa​​cket = 8M 
sort_buffer_size = 1M 
join_buffer_size = 1M 
thread_cache_size = 100 
thread_concurrency = 2 
query_cache_size = 2M 
query_cache_limit = 1M
query_cache_min_res_unitの= 2K 
#default_table_type = InnoDBの
thread_stack = 192K 
#transaction_isolation = READ-COMMITTED 
tmp_table_size = 2M 
max_heap_table_size = 2M 
#long_query_time = 1 
#log_long_format 
#対数誤差= /data/3307/error.log 
#対数スロークエリ= /データ/3307/slow.log 
PIDファイル= /data/3307/mysql.pid 
#ログ・ビン= /データ/ 3307 / mysqlのビン
リレーログ= /データ/ 3307 /リレービン
リレー-ログ情報ファイル= /data/3307/relay-log.info 
binlog_cache_size = 1M 
max_binlog_cache_size = 1M 
max_binlog_size = 2M 
expire_logs_days = 7 
key_buffer_sizeは= 16M 
read_buffer_size = 1M 
read_rnd_buffer_size = 1M 
bulk_insert_buffer_size = 1M 
#myisam_sort_buffer_size = 1M
#myisam_max_sort_file_size = 10G 
#myisam_max_extra_sort_file_size = 10Gの
#myisam_repair_threads = 1 
#myisam_recover 
はlower_case_table_names = 1 
スキップ-名前解決
スレーブ・エラーをスキップ= 1032,1062 
複製-無視-DB = mysqlの
サーバー-ID = 3 
innodb_additional_mem_pool_size = 4M 
innodb_buffer_pool_size = 32M 
innodb_data_file_path = ibdata1と:128M:自動拡張
innodb_file_io_threads = 4 
innodb_thread_concurrency = 8 
innodb_flush_log_at_trx_commit = 2 
innodb_log_buffer_size = 2M 
innodb_log_file_size = 4M 
innodb_log_files_in_group = 3 
innodb_file_per_tableを= 0 
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
[mysqldumpを] 
素早い
するmax_allowed_pa​​cket = 2M 
[mysqld_safeを] 
ログインエラー= /データ/ 3307 / mysql_oldboy3307.errの
PIDファイル= /データ/ 3307 / mysqld.pid

#### Vimのmysqlの####

#!/ binに/ shの
############################################ ####は、
2016年12月9日にliuliyaによって作成されたスクリプト#この
#oldboyのQQを:865205026 
#siteます。http://www.liuliya.com 
################ ################################ 
#init 
ポート= 3307 
mysql_user = "ルート" 
MYSQL_PWD = "oldboy" 
CmdPath =」 /アプリケーション/ mysqlの/ binに」
mysql_sock = "/データ/ $ {ポート} /mysql.sock" 
#startup関数
function_start_mysql()
{ 
    [あれば!-e "$のmysql_sock"];その後
      のprintfは、 "MySQLの... \ n個の開始" 
      / binに/のsh $ {CmdPath} / mysqld_safeを--defaults-ファイル= /データ/ $ {ポート} /my.cnf 2>&1> / dev / null&
      終了 
;;
#STOP関数
function_stop_mysql()
{ 
    [あれば!-e "$のmysql_sock"];その後、
       printfの"MySQLが停止されています... \ n"は
       終了し
    、他
       のprintf "ストーピングMySQLの... \ n"は
       $ {CmdPath} / mysqladminの-u $ {} mysql_user -p $ {} MYSQL_PWD -S /data/${port}/mysql.sockシャットダウン
   Fiの
} 
#restart関数
function_restart_mysql()
{ 
    printfの"再起動のMySQL ... \ n"は
    function_stop_mysqlの
    睡眠2 
    function_start_mysql 
} 
の場合$ 1 
スタート)
    function_start_mysql 
;; 
ストップ)
    function_stop_mysqlの
再起動)
    function_restart_mysql 
;; 
*)
    のprintf "使い方:/データ/ $ {ポート} / mysqlの{開始|停止|再起動} \ n"は
ESAC

#MySQLの実行許可増加するコマンドを起動する
find /data -type f -name "mysql"|xargs chmod +x
グループ/データディレクトリされた#変更を
chwon -R mysql.mysql /data/
5. MySQLデータベースを初期化する(mysqlのライブラリとその管理テーブルをロード)

[ルート@のDB02〜]#のCD /アプリケーション/ mysqlの/スクリプト/ 
[ルート@ DB02スクリプト]#件のls 
mysql_install_dbの

#3306は、インスタンスの初期化
[root@db02 scripts]# ./mysql_install_db --basedir=/application/mysql --datadir=/data/3306/data --user=mysql
に成功実績のリターン2 OK
#3307のインスタンスの初期化
[root@db02 scripts]# ./mysql_install_db --basedir=/application/mysql --datadir=/data/3307/data --user=mysql
を返す2つの実証済みの成功OK
6.スタートのMysql

[ルート@のDB02スクリプト]#/データ/ 3306 / mysqlの開始
[ルート@のDB02スクリプト]#/データ/ 3307 / mysqlの開始

#のビューポート
netstat -lntup|grep 330
#mysqlの設定環境変数
cp /application/mysql/bin/* /usr/local/sbin/
#ビューの環境変数
echo $PATH
7.ログのmysql(靴下を開発する必要があります)

mysqlの-S /data/3306/mysql.sock 
mysqlの-S /data/3307/mysql.sock

8.トラブルシューティング手順
1. [ログの表示
cat mysql_oldboy3306.err
、示されていない対応するポートMsyql例を開始するために発見された場合2.、サービスはいくつかの他のWebより遅いMySQLを起動し、少しの検査では、数秒待ってください。
PS:常に良い習慣ですが、また、マスターになるための唯一の方法は、ログを実行しているサービスを確認してください。
開始から9ブート
固有のコマンド:

エコー"// MySQLのインスタンスmutil" >>は/ etc / rc.localに
エコー"/データ/ 3306 / mysqlの開始" >>は/ etc / rc.localに
エコー"/データ/ 3307 / mysqlの開始" >>は/ etc / rcの。地元

どのようにMySQLインスタンスを追加するには
、コマンドの特定のセットを:

ます。mkdir -p /データ/ 3308 /データ
\ CP /data/3306/my.cnf /データ/ 3308 / 
\ CP /データ/ 3306 / mysqlの/データ/ 3308 / 
CD 3308 / 
SED -iさん/ 3306/3308 / G」/data/3308/my.cnf 
SED -iの/サーバID = 1 /サーバID = 8 / G '/data/3308/my.cnf 
SED -i 'S / 3308分の3306 / G' /データ/ 3308 /のMySQL 
のchown -R mysql.mysql /データ/ 3308 
のchmod 700 /データ/ 3308 / MySQLの

#MySQLデータベースインスタンスの初期化3308

[ルート@のDB02〜]#のCD /アプリケーション/ mysqlの/スクリプト/

#3306は、インスタンスの初期化し
[root@db02 scripts]# ./mysql_install_db --basedir=/application/mysql --datadir=/data/3308/data --user=mysql
、データベース・インスタンスを起動するために#3308を
/data/3308/mysql start

おすすめ

転載: www.cnblogs.com/flytor/p/11415128.html