MySQLの高可用性アーキテクチャ:mysqlの+を実現keepalivedの

システム環境とアーキテクチャ

#ホスト名、システムバージョンのMySQLのバージョン、IPアドレス
 mysqlMasterのは<a href= "https://www.linuxprobe.com/" title= "centos" target= "_blank"> CentOSの</a>の7. 4 MYSQL5。7 192.168。 mysqlSlave centos7 1.42。4 MYSQL5。7 192.168.1.43 #vip:192.168.1.41

データベースは、それぞれ、マスタとスレーブに取り付け、

yumをインストールEPEL * -y && yumのクリーンすべて&& yumをmakecache 
のrpm -Uvh http://repo.mysql.com/mysql57-community- リリース-el7.rpm 
すべて&& yumをmakecache yumをきれい
にyum のgccはgcc-Cをインストールする++のopenssl-develのMySQLのはmysql-のサーバのmysql-develの-y

データベース・ファイル・ストレージ・パスを作成します。

ます。mkdir / データ/のmysql -p
 をchown - Rのmysql:mysqlの/ データ/ MySQLの

MySQLの構成プロファイル

mysqlMaster上の#MySQLの設定プロファイル

な/etc/my.cnf VI 

[mysqldを】サーバ上記= ID述べ1#グローバルに一意の、それぞれについて同じにすることはできません
 ログビン= MySQLのビン#ログビンは、MySQLビンログファイルの命名形式を表し、バイナリログに表示されます、ビン生成MySQLの様0.0001  relay-を(メインのMySQLログを引いた後、ライブラリーから生成されたログ)= MySQLのリレービンログ #のログフォーマット指定中継複製-野生無視テーブル= MySQLの%#MySQLのライブラリ名は、同期されていないテーブルまたはデータベースを指定%ことは以下の表の全て、mysql.userレプリケート-野生無視テーブル=示すユーザテーブル試験MySQLで異なるない。%レプリケート。-wild-INFORMATION_SCHEMA無視-表=%#-Wild-複製同期注意を表し表=%のは##ライブラリを-ボケん。binlog-のメインライブラリを使用しないでください。また、#やる-DBまたはbinlogの-無視-DBオプションライブラリからreplicate-使用しないでください、これはクロスデータベース更新の失敗のための問題を作成することとして、DB-行うかのオプション-無視-DBを複製します。Replicate_wild_do_tableとreplicate_wild_ignore_tableは、ろ過の問題を解決するために、ライブラリからコピーするための2つのオプションが推奨DATADIR = /データ/ mysqlのソケット= /データ/ mysqlの/にmysql.sockユーザ= mysqlのシンボリックリンク=
0 対数誤差=の/ var / / mysqldをログに記録します。ファイル、PID =の/ var / RUN / mysqldを/ mysqld.pid character-ログインSET- サーバーUTF8を= [MySQLの]ソケット= /データ/ MySQLの/にmysql.sock デフォルトCharacter- - SET = UTF8 [クライアント]ソケット= /データ/ MySQLの/にmysql.sock デフォルト-character- SET = UTF8 =ユーザーパスワード=ルート-NCYD天城@ 0791#このフィールドは、<HREFとのユニットで書かれていない場合= 「https://www.linuxcool.com/」タイトル= =「コマンド」ターゲット「_blank」>エラーになります</a>のmysqlコマンドを入力するには、デフォルトのプロンプトは、パス/var/lib/mysql/mysql.sockを見つけることができません

mysqlSlaveでMySQLの設定プロファイル

VIな/etc/my.cnf 

[mysqldを】
サーバID = 2 
ログビン= MySQLのビン
リレーログ= MySQLのリレービン
複製-野生無視テーブル= MySQLの%
レプリケート-野生無視テーブル=試験%
反復-野生無視テーブル= INFORMATION_SCHEMA%
DATADIR = /データ/ MySQLの
ソケット= /データ/ MySQLの/にmysql.sock 
ユーザ= MySQLの
シンボリックリンク= 0 
対数誤差=は/ var / log / mysqld.log 
PIDファイル=の/ var /実行/ mysqldを/ mysqld.pid 
character- セット- サーバー= UTF8 

[mysqlの] 
ソケット= / データ/ mysqlの/にmysql.sock
 default- character- セット= UTF8 [ クライアント]ソケット= / データ/ MySQLの/mysql.sock default- character-= UTF8の設定ユーザー=ルートパスワード= NCYD-天城は@ 0791

あなたがユニットには、このフィールドには書いていない場合は#  コマンド  のmysqlを入力するには、(データベースを初期化し、/var/lib/mysql/mysql.sockは、デフォルトのパスを見つけることができません示唆、文句を言うでしょうに/データ/ mysqlのディレクトリに生成初期化する必要があります必要な情報)

初期化方法の後に#1 mysql5.7.7 
mysqldを--user = --initialize --datadir =のMySQL /データ/ MySQLの初期化のため#mysql5.7.7従来の方法
mysql_install_dbの--user = --datadir =のMySQL /データ/ MySQLは 、それぞれ主に活性化データベースからmysqldを起動しないでいるかどうか、それ自体<a href="https://www.linuxprobe.com/" title="linux" target="_blank"> Linuxの</a>をオフにする必要がありcentos7で# systemctlをmysqldが起動し 、主のmysqlからセキュリティ強化をしていた前のステップ、最初のスタートのmysqlで見つかった#、システムが自動的にパスワード(CATの/var/log/mysqld.log | grepのパス)を生成mysql_secure_installationの#はランダムrootのパスワードを変更するには、このコマンドを使用する(修正NCYD-天城0791 @)現在の環境場合は、手動で(データを同期するには、新しいからメインデータとなっている場合)







1:レプリケーション用のマスター・ユーザー・データベース上で作成され、承認さ
REPLICATION SLAVEの付与> mysqlのON *。* 'tongbu' @ '192.168.1.43'で識別される'123456789'; 2:最初のメインのmysqlロックテーブルの上に(すべてのテーブルが読み取り専用になるように)MySQLの>テーブルをフラッシュ読み取りロック;#が失敗した場合に、ロック中かどうか、ターミナルを終了していない3:再オープン、別のコマンド・ライン・ターミナル(例えば、myqldumpエクスポートデータなどのツールを使用したり、ディレクトリに格納マシンから送信されたmysqlの直接パックされたデータ、)4:輸出は(デュアルマスターモードを達成するために、マシンからデータをコピーし、各セットから新しいライブラリとインポートデータを作成し、メインの各セットします)

mysqlMaster mysqlSlaveでは、独自のプライマリサーバの役割を設定します

MySQLは>マスターステータスを表示します。	 #はmysqlSlave(ファイル名レコード、および位置)の状態を表示するために

変更マスターをする
MASTER_HOST = '192.168.1.43'、
MASTER_USERは= 'tongbu'、 master_password = '123456789'、 MASTER_LOG_FILE = 「MySQLの-bin.000002 」、MASTER_LOG_POS = 1006; MySQLの>は、スレーブを起動する; #は(いくつかのバージョンがあります:スレーブを開始;)複製プロセスのスレーブ側を開始MySQLの>スレーブステータス表示\ GのI / O処理の#ビュースレーブ側、およびプロセスのSQLを

mysqlMasterから自分のプライマリサーバの役割を設定します

MySQLは>マスターステータスを表示します。	 #はmysqlMaster(ファイル名レコード、および位置)の状態を表示するために

変更マスターをする
MASTER_HOST = '192.168.1.42'、
MASTER_USERは= 'tongbu'、 master_password = '123456789'、 MASTER_LOG_FILE = 「MySQLの-bin.000002 」、MASTER_LOG_POS = 1006; MySQLの>は、スレーブを起動する; #は、スレーブ上のコピー処理は、MySQLを終了スタート>ステータススレーブ表示\ Gの#の端面図スレーブI / Oプロセス、およびプロセスのSQLを

同期を確認します

1:最初の認証myssqlMasterにmysqlSlaveの存在をライブラリーを作成します。

2:、第2検証mysqlSlaveにmysqlMasterの存在をライブラリーを作成します。

インストールは、高可用性を実現するためにVIPの切り替えを実現keepalivedの

-Yは、インストールyumのkeepalivedの

#はMySQLのmysqlMasterとmysqlSlaveで検査チェックを作成します。< HREF = "https://www.linuxcool.com/" タイトル= "スクリプト" ターゲットは= "_blank">スクリプト</ 、A>そして、実行権限を与える触れ/etc/keepalived/mysql_check.shます。chmod + xの/etc/keepalived/mysql_check.sh
/etc/keepalived/mysql_check.sh VI #/ binに/ bashの!
 #1 slave_is =($(MySQLの-uroot - pNCYD-天城0791 -e "の表示スレーブステータスの\ G" @ |。grepを"スレーブ_ * _実行" | awkの安全のためのヒントを行います、直接コマンドラインでパスワードを書き、myqlの新バージョンでは)「){$ 2印刷}、解決策は、MySQL上記参照を書いて、[クライアント]フィールドに、MySQLの設定ファイルにそれを書くことですプロフィール
= slave_isを($(MySQLの-e "の表示スレーブステータスの\ G" | grepを。 "スレーブを_ * _実行" | awkの'){$ 2印刷}')IF [ " $ {slave_is [0]}" = 「はい" -a " $ slave_is [1] "= "はい「] その後、出口0 他の出口。1 Fiの

#(注)、keepalivedの検査の  スクリプト  のみの通常のための2つの値が、0を返す識別vrrp_script、非ゼロが異常を示し、関連するスイッチを行うには、通常ではありません(このスクリプトを書くには注意を払うことです)

高可用性を実現するために、keepalivedの設定

/etc/keepalived/keepalived.conf VI 

global_defs { 
   {notification_email 
     [email protected] 
     [email protected] 
     [email protected] 
   } 
   notification_email_from [email protected] 
   SMTP_SERVER 192.168。200.1 
   smtp_connect_timeout 30 
   LVS_DEVELのROUTER_ID 
   vrrp_skip_check_adv_addrの#vrrp_strictノート# :あなたは仮想VIPを通じてpingを実行できない場合、この行は推奨されコメントアウト vrrp_garp_interval 0  vrrp_gna_interval 0} {vrrp_script mysql_checkスクリプトが「/etc/keepalived/mysql_check.sh」#このスクリプトは、実行されることが判明した場合、あなたは彼の権威を確認することができます777は、ログが不安を促し、可能ではないライン上の直接のchmod + Xの/etc/keepalived/mysql_check.shすることができ
   #script "シャットダウン-r今"あるいは#、直接デバッグコマンド間隔2重量VI_1 vrrp_instance 2} { 状態MASTER MASTERには#mysqlMasterあり; mysqlSlaveはBACKUP virtual_router_id ens192インターフェースさ52は、優先度である100 #mysqlMaster 100に、mysqlSlaveにadvert_intは90である1 nopreempt。#configureコンVIP(注:フェイルオーバープリエンプションモード、できるだけ閉として、デフォルトで有効になって、このパラメータは唯一の高優先度に提供する必要がある)PASSのAUTH_PASS認証{AUTH_TYPE 1111} {track_scriptの上記で定義した通り#コールをmfsmasterスクリプトvirtual_ipaddressをチェック} {mysql_check 192.168。1.41 / 24}} DEV ens192

keepalivedの開始

keepalivedの開始systemctl

おすすめ

転載: www.cnblogs.com/L10086/p/11366281.html
おすすめ