レディ
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>停止スレーブ。