デュアルマスターMySQLのホットスタンバイ+ keeepalived.md

 
 

レディ


1.デュアルマスターMASTER1 192.168.199.49 2 MASTER2 192.168.199.50 3 VIP 192.168.199.52 //仮想IP 4 2.環境マスタ:nginxの+ PHP + MySQLの+ keepalivedの 5 VIP:限り、あなたは、ローカル・エリア・ネットワークにマスターできるよう。 図6は、遮るもののないネットワークサーバ3との間で、お互いにpingを送信することができます。 一致すべき7 MySQLバージョン4.2サーバー。一貫性のあるデータベースのパスワード ファイアウォール8とは、マルチキャストVRRP(仮想ルータ冗長協会)通信の増加を許可するように資源回収スナッチにマスターサーバー 9 -A INPUTが182.148.15.0/24 -d 224.0.0.18はACCEPT -j -s 10 -AのINPUT -s 182.148.15.0/24 -p VRRP -j ACCEPT サービスのiptablesのリロード:有効にする11の再起動
コードをコピー

サーバの設定

コードをコピー
 1台のサーバ1:
 2 
 3 [mysqldを] my.cnfのファイル構成ゾーンを以下の内容を追加します。
 4ログ・ビン= mysqlのビン番号はバイナリファイルを記録します
 使用5 binlog_format =混合#mysqlデフォルトのバイナリ形式
 6サーバー-ID =#2のサービス番号は、一意である必要があり、一般的にIP-8
 7 expire_logs_days = 10 #binlogクリーンアップ時間の有効期限が切れ
 8 
 9ビンログ-DO-DB = DB1#データベースに必要なサービスを提供しています。
10#複製-無視-DB = DB3、mysqlの、テスト、INFORMATION_SCHEMA、performance_schema、transfer_new#データベースがレプリケーションを必要としません。
11#複製-野生無視-テーブル=ゴミ。%#は問題を抱えている、あなたは、この構成を使用しようとすることができます
12 sync_binlog = 1#すべての1一度、ハードディスクの同期設定、最も安全でスローを書き込んだ後、ビンログログを表し
13サーバの自動インクリメントインクリメント= 2#番号
14自動インクリメントオフセット= 2#増分オフセット、二組ある場合、一組が1で、他の組の2
15スレーブスキップエラー=すべての#は、時間データベースの複製からのすべてのエラーをスキップ
16サーバー2:
17 
18ログ・ビン= mysqlのビン
19 binlog_format混合=
20サーバID = 1
21 expire_logs_days = 10
22ビンログ-DO-DB = DB1
23#レプリケート-無視-DB = DB3は、MySQL、テスト、INFORMATION_SCHEMA、performance_schema、transfer_new
24#複製、野生無視-テーブル=ゴミ。%#は問題を抱えている、あなたは、この構成を使用しようとすることができます
25 sync_binlog = 1
26自動インクリメントインクリメント= 2     
27自動インクリメントオフセット= 1    
28スレーブスキップエラー=すべて
コードをコピー

2台のサーバは、mysqlのサービスを再起動されます。

1つのサービスMySQLの再起動

 

同期設定(2台のサーバが実行されます)

コードをコピー
図1は、権利を再現するために、互いの許可を与えます
2 
図3は、//他のサーバーに複製60.205.182.26このデータベース・サーバー、ユーザー名、パスワードを許可REPL示すocnt-123
4 MySQLの>のグラントレプリケーションスレーブ、*上の複製クライアント* repl@'60.205.182.26' へ "示すocnt-123" で識別されます。
5 //有効になります 
6 MySQLの>フラッシュ権限;     
7 //ロックテーブル
8 MySQLの>読み込みロックと同一平面のテーブル。
コードをコピー

同期データ

1.ロック・テーブル
2 MySQLの>読み込みロックと同一平面のテーブル。
2. 3同期データを使用してもよいNavicatは

 

同期操作(二つのサーバを実行します)

コードをコピー
 1 //各サーバーの現在のバイナリログファイル名とレコードの位置を確認してください
 2 MySQLの>マスター状態を表示。
 3 
 4 <!--------------------- -----------------------同期サーバ1 --------------->
 5 //テーブルのロックを解除
 6 MySQLの>アンロックテーブル。
 7 //ストップスレーブ
 8のMySQL>スレーブ停止;
 9 //同期の開始:IP、サーバ2だけで助成金の許可の設定、ログファイル、およびサーバー2に示すマスターのステータスを通してそれを見て位置pos分のユーザー名とパスワード
10 MySQLの>変更マスタMASTER_HOSTし= '101.200.63.35'、master_user = 'REPL'、master_password = '123456'、MASTER_LOG_FILE = 'のMySQL-bin.000016'、MASTER_LOG_POS = 363。
11 //オープンスレーブ
12 MySQLの>開始スレーブ。
13 
14 <!--------------------- -----------------------同期サーバ2 --------------->
15 //はテーブルのロックを解除します
16 MySQLの>アンロックテーブル。
17 //ストップスレーブ
18 MySQLの>スレーブ停止。
19 <! - 同期の開始 - >
= '60 .205.182.26' 、master_user = 'REPL'、master_password = '123456'、MASTER_LOG_FILE = 'のMySQL-bin.000028' をMASTER_HOSTする20変更マスタ、MASTER_LOG_POS = 107。
21 <! - オープン奴隷 - >
22 MySQLの>開始スレーブ。
コードをコピー

 

ビューの同期状態は、「はい」2として表示され、その正常な同期を示します!(Slave_IO_RunningとSlave_SQL_Running)

1つのMySQLの>スレーブステータス\ Gを示す図です。

 

ここでは、完全な二重のホットスタンバイのマスターに設定されています。

自動的に障害の構成keepalivedの切り替え

コードをコピー
 1 MASTER1:192.168.199.49ホスト1
 2 MASTER2:192.168.199.50バックアップホスト2
 3 VIP:192.168.199.52仮想IP
 4台の### 2のサーバはkeepalivedのインストール
 5 
 6 [ルート@ localhostの] #yum -yのopenssl-develのインストール
 7 [ルート@ localhostのソース] #cdは/ usr / local / srcに/
 8 [ルート@ localhostのソース]#wgetのhttp://www.keepalived.org/software/keepalived-1.3.5.tar.gz
 9 [ルート@ localhostのソース]#タール-zvxf keepalivedの-1.3.5.tar.gz
10 [ルート@ localhostのソース]#のCDはkeepalivedの-1.3.5
11 [ルート@ localhostのkeepalivedの-1.3.5]#は./configure --prefix =は/ usr / local / keepalivedの
12 [ルート@ localhostのkeepalivedの-1.3.5]#メイク&& make installを
13      
14 [ルート@ localhostのkeepalivedの-1.3.5]#cpは/usr/local/src/keepalived-1.3.5/keepalived/etc/init.d/keepalived /etc/rc.d/init.d/の
15 [ルート@ localhostのkeepalivedの-1.3.5]#CPは/ usr / local / keepalivedのの/ etc /のsysconfig / keepalivedのは/ etc /のsysconfig /
16 [ルート@ localhostのkeepalivedの-1.3.5]#ます。mkdirは/ etc / keepalivedの/
17 [ルート@ localhostのkeepalivedの-1.3.5]#のCP /usr/local/keepalived/etc/keepalived/keepalived.confの/ etc / keepalivedの/
18 [ルート@ localhostのkeepalivedの-1.3.5]#CPは/ usr / local / keepalivedの/ sbinに/ keepalivedのは/ usr / sbinに/
19 [ルート@ localhostのkeepalivedの-1.3.5]#エコー "/etc/init.d/keepalivedスタート" >> /etc/rc.localの
コードをコピー

 

MASTER1サーバの設定

コードをコピー
 1 [ルート@ MASTER1〜]#cpは/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
 2 [ルート@ MASTER1〜]#vimの/etc/keepalived/keepalived.conf#次のように再設定され、すべてのコンテンツを削除します
 3 
 4!keepalivedのための設定ファイル
 5 global_defs {
 6 notification_email {
 7 [email protected]
 8}
 9            
10 notification_email_from [email protected]
11 SMTP_SERVER 127.0.0.1 
30 smtp_connect_timeout 12
13 ROUTER_ID MASTER-HA
14}
15        
16 vrrp_script chk_mysql_port {#は、MySQLサービスが実行され検出します
監視することにより、ここ17スクリプト「/opt/chk_mysql.sh」#スクリプト
すべての3S一度テストした18インターバル3#スクリプトの実行間隔、
19重量-5#スクリプトの結果を変更する優先順位、検出失敗(スクリプトが非ゼロを返す)優先-5
20秋2#2の連続した検出障害は真の故障を判定するために考えられています。優先順位は、重量削減されます(1〜255)
21上昇1#1にも成功した成功した場合の検出。しかし、優先順位を変更しません
22}
23        
24 vrrp_instance VI_1 {
25状態MASTER    
指定された仮想ネットワークインタフェースの26インターフェースeth0のIP#
マシンマスターの27のmcast_src_ip 192.168.199.49#IPアドレス
識別、MASTERとBACKUPルータ28 virtual_router_id 100位一致している必要があります
29優先順位100位の優先順位を定義し、より多く、より高い優先度は、同じvrrp_instance下、MASTER優先度は、バックアップの優先度よりも高くなければなりません。この後MASTER回復、もう一度VIPリソースを取り戻すことができます
30 advert_int 1         
31認証{#暗号化プロトコル
32 AUTH_TYPEのPASS 
1111 auth_pass 33     
34}
35 virtual_ipaddress {    
36 192.168.199.52#仮想IPアドレスVIP
37}
38       
39 track_script {               
40 chk_mysql_port             
41}
42}
コードをコピー

 

マスター2サーバー構成がmcast_src_ip優先度を変更します

コードをコピー
 1 global_defs {
 2 notification_email {
 3 [email protected]
 4}
 5            
 6 notification_email_from [email protected]
 7 SMTP_SERVER 127.0.0.1 
 30 smtp_connect_timeout 8
 9 ROUTER_ID MASTER-HA
10}
11            
12 vrrp_script chk_mysql_port {
13スクリプト "/opt/chk_mysql.sh"
14間隔3            
15重量-5                 
16秋2                 
17上昇1               
18}
19        
20 vrrp_instance VI_1 {
21状態のバックアップ
22インターフェイスeth0    
23 mcast_src_ip 192.168.199.50
24 virtual_router_id 100    
25優先90         
26 advert_int 1         
27認証{   
28 AUTH_TYPEのPASS 
1111 auth_pass 29     
30}
31 virtual_ipaddress {    
32 192.168.199.52
33}
34     
35 track_script {               
36 chk_mysql_port             
37}
38}
コードをコピー

 

2台のサーバは、スクリプトmysqlの検出スイッチで書かれています

コードをコピー
1 keepalivedのは、マスターのMySQLサーバは(3306ポートがハングアップ)ハングアップした場合、それは自殺を選ぶだろう、ハートビートを行います。keepalivedののスレーブは、ハートビートによって、この状況を見つけ、引き継ぐVIPの要求になります
 2 vimの/opt/chk_mysql.sh
 3 
 4#!/ binに/ bashの
 5 CHECK_TIME = 3
 6 
 7 #Mysql
 8ホスト= 'localhost' の
 9ポート= '3306'
10ユーザー=「ルート」
11パスワード= '示すocnt-123'
12はmysqlclient = "mysqlの"
13 
14 #mysqlはMYSQL_OKが1で動作している、MYSQL_OKダウンMySQLは0であります
15関数check_mysql_helth(){
16#NEW = $ MYSQL -h $ MYSQL_HOST -u $ MYSQL_USER -p $ {MYSQL_PASSWORD} -e "表示状態;" >を/ dev / null 2>&1
17 $はmysqlclient --host = $ホスト--port = $ポート--user = $ユーザー--password = $パスワード-e "ショーのデータベース;" >を/ dev / null 2>&1
18 
19 [$場合は?== 0]
その後、20
21 MYSQL_OK = 1
他の22
23 MYSQL_OK = 0
24 BE
25#エコー$ MYSQL_OK
26リターン$ MYSQL_OK
27}
28 
29しばらく[$ CHECK_TIME -ne 0]
30 DO
31う "CHECK_TIME  -  = 1"
32 check_mysql_helth
33もし[$ MYSQL_OK == 1]; それから
34 CHECK_TIME = 0
35出口0
36と
37場合は、[$ MYSQL_OK -eq 0] && [$ CHECK_TIMEは0を-eq]
その後、38
39 pkillはkeepalivedの
40 1番出口
41 BE
42スリープ1
43が行わ
コードをコピー

 

フー権

1はchmod 755 /opt/chk_mysql.sh

サービス開始

ファイアウォールの電源を切ります 
2つのサービスのiptablesの停止
3サービス開始
4 /etc/init.d/keepalived開始

 

データベースのテスト

1を使用するLANクライアント接続VIP
2 MySQLの-h192.168.199.52 -uroot -pocnt-123
3テストが可能です

 

フェイルオーバー検出

コードをコピー
デフォルトでは1、VIPはMASTER1です。ビューVIPスイッチケースに「IP ADDR」コマンドを使用します
 2 IP ADDR
 3検索
 4 INET 192.168.199.49/32範囲グローバルにeth0 //この32ビットサブネットマスクVIPアドレスは、リソースがマシン上ではなく、MASTER2マシン上で依然としてMASTER1あることを示し
 5は、tail -fは/ var / logを見ながら/メッセージが見つかります
 6 12月13日夜05時52分38秒ローカルホストKeepalived_vrrp [65545]:VRRP_Instance(VI_1)入力マスタ状態
 7 12月13日夜05時52分38秒ローカルホストKeepalived_vrrp [65545]:プロトコルVIPを設定VRRP_Instance(VI_1)。
 8 12月13日夜05時52分38秒ローカルホストKeepalived_vrrp [65545]:192.168.199.51ためにeth0に無償ARPを送信します
 9 
MySQLのサービスMASTER1オフ10電源を入れます
11サービスMySQLの停止
-fは/ var / log /メッセージが見つかります12 Viewが尾を記録MASTER1
13 Keepalived_vrrpローカルホスト12月13日夜06時52分44秒[65545]:停止
14 12月13日午後06時52分44秒ローカルホストkeepalivedの[65542]:停止keepalivedのにv1.3.5(03 / 19,2017)は、v1.3.5-6-g6fa32f2コミットGIT
15 
16ビューMASTER2ログ
17 12月13日18時52分45秒ローカルホストKeepalived_vrrp [28451]:VRRP_Instance(VI_1)遷移マスタ状態に
18 12月13日午後6時52分46秒ローカルホストKeepalived_vrrp [28451]:VRRP_Instance(VI_1)入力マスタ状態
19 12月13日午後6時52分46秒ローカルホストKeepalived_vrrp [28451]:プロトコルVIPを設定VRRP_Instance(VI_1)。
20 12月13日午後6時52分46秒ローカルホストKeepalived_vrrp [28451]:192.168.199.51ためにeth0に無償ARPを送信します
21 
図22は、この時点でMASTER2に転送されています、
23復旧はMySQLのサービスをMASTER1
24サービスのmysql開始
キープアライブの25回復MASTER1
26 /etc/init.d/keepalived開始
27 
28ビューMASTER1ログ
マスタ状態にVRRP_Instance(VI_1)遷移:Keepalived_vrrp [71002]ローカルホスト29 12月13日夜06時54分41秒
30 12月13日午後6時54分42秒ローカルホストKeepalived_vrrp [71002]:VRRP_Instance(VI_1)入力マスタ状態
31 12月13日午後6時54分42秒ローカルホストKeepalived_vrrp [71002]:プロトコルVIPを設定VRRP_Instance(VI_1)。
32 12月13日午後6時54分42秒ローカルホストKeepalived_vrrp [71002]:192.168.199.51ためにeth0に無償ARPを送信します
33 
34ビューMASTER2ログ
より高い優先度100、我々90とVRRP_Instance(VI_1)を受信広告:Keepalived_vrrp [28451]ローカルホスト35 12月13日夜6時54分41秒
36 12月13日午後6時54分41秒ローカルホストKeepalived_vrrp [28451]:VRRP_Instance(VI_1)入力BACKUP状態
37 12月13日午後6時54分41秒ローカルホストKeepalived_vrrp [28451]:プロトコルVIPを除去VRRP_Instance(VI_1)。
38 
39説明サービスマスター2アップに転送されています。
40が完成しました
コードをコピー

 

完成

その他:削除マスタースレーブのレプリケーション

1つのMySQLの>停止スレーブ。
2 MySQLの>スレーブリセット。 
3 MySQLの>リセットマスタ。

keepalivedの

1 [スタート]
2 /etc/init.d/keepalived開始

異常なソリューション

1あなたが適切に複製できない場合は、ステータスを表示します
2 SQL>ショースレーブ状態\ G。
3あなたは奴隷のようにそれを再起動し、通常の状況下では、エラーメッセージを見ることができます
4 SQL>停止スレーブ。

おすすめ

転載: www.cnblogs.com/guarderming/p/11947563.html