MYSQLマスター+キープアライブ

MYSQLマスター


mysqlには自己成長フィールドがあり、データベースのメイン同期を実行するときに、自己成長の2つの関連する構成(auto_increment_offsetとauto_increment_increment)を設定する必要があります。

auto_increment_offsetは、自己インクリメントフィールドがその数値から始まり、その値の範囲が1であることを示します。65535
auto_increment_incrementは、毎回の自己インクリメントフィールドの増分を表します。デフォルト値は1で、値の範囲は1です。65535
マスター同期構成では、両方のサーバーのauto_increment_incrementの増加をそれぞれ2に構成し、auto_increment_offsetをそれぞれ1と2に構成する必要があります。

このようにして、2つのサーバーが同時に更新されているときに、自己インクリメントフィールドの値間の競合を回避できます。



init:ファイアウォールをオフにします
systemctl stopfirewalld

マスター1(最初にメインライブラリの構成ファイルを変更し、再起動して有効にし、次にスレーブライブラリの構成ファイルを実行し、再起動して有効にします)
vi /etc/my.cnf#[mysqld]このフィールド
サーバーID = 1         
log-bin = mysql-bin     
sync_binlog = 1
binlog_format =混合
自動インクリメント-インクリメント= 2     
自動インクリメントオフセット= 1    
スレーブスキップエラー=すべて 


1.ユーザーを作成します
*。*上のレプリケーションスレーブ、レプリケーションクライアントを '1qaz @WSX'で識別されるrepl @ '%'に付与します。
2.rootユーザーのパスワードを変更します
'1qaz @WSX'で識別されるユーザー 'root' @ 'localhost'を変更します。
3.ロックテーブル

MariaDB [(none)]>読み取りロックでテーブルをフラッシュします。
クエリOK、影響を受ける行は0(0.00秒)
4.ノードを表示します
MariaDB [(none)]>マスターステータスを表示します。
+ ------------------ + ---------- + -------------- + ---- -------------- +
| ファイル| 位置| Binlog_Do_DB | Binlog_Ignore_DB |
+ ------------------ + ---------- + -------------- + ---- -------------- +
| mysql-bin.000003 | 411 | | |
+ ------------------ + ---------- + -------------- + ---- -------------- +
5.同期を設定します

masterをmaster_host = '10 .211.55.172 '、master_user =' repl '、master_password =' 1qaz @ WSX '、master_log_file =' mysql-bin.000004 '、master_log_pos = 1064に変更します。  

MariaDB [(none)]>スレーブを開始します。

6、


MariaDB [(none)]>スレーブステータスを表示\ G;
*************************** 1。行******************** *******
               Slave_IO_State:マスターがイベントを送信するのを待っています
                  Master_Host:10.211.55.172
                  Master_User:repl
                  Master_Port:3306
                Connect_Retry:60
              Master_Log_File:mysql-bin.000004
          Read_Master_Log_Pos:411
               Relay_Log_File:mariadb-relay-bin.000002
                Relay_Log_Pos:529
        Relay_Master_Log_File:mysql-bin.000004
             Slave_IO_Running:はい
            Slave_SQL_Running:はい



 7、
 
MariaDB [(none)]>テーブルのロックを解除します。
クエリOK、影響を受ける行は0(0.00秒)         
================================================== ============





マスター2
vi /etc/my.cnf#[mysqld]このフィールド
サーバーID = 2       
log-bin = mysql-bin     
sync_binlog = 1
binlog_format =混合
自動インクリメント-インクリメント= 2     
自動インクリメントオフセット= 2   
スレーブスキップエラー=すべて 





1.ユーザーを作成します
*。*上のレプリケーションスレーブ、レプリケーションクライアントを '1qaz @WSX'で識別されるrepl @ '%'に付与します。
2.rootユーザーのパスワードを変更します
'1qaz @WSX'で識別されるユーザー 'root' @ 'localhost'を変更します。
3.ロックテーブル
読み取りロックでテーブルをフラッシュします。
MariaDB [(none)]>読み取りロックでテーブルをフラッシュします。
クエリOK、影響を受ける行は0(0.00秒)

4.ノードを表示します
MariaDB [(none)]>マスターステータスを表示します。
+ ------------------ + ---------- + -------------- + ---- -------------- +
| ファイル| 位置| Binlog_Do_DB | Binlog_Ignore_DB |
+ ------------------ + ---------- + -------------- + ---- -------------- +
| mysql-bin.000004 | 411 | | |
+ ------------------ + ---------- + -------------- + ---- -------------- +
セットの1行(0.00秒)


5.同期を設定します
masterをmaster_host = '10 .211.55.171 '、master_user =' repl '、master_password =' 1qaz @ WSX '、master_log_file =' mysql-bin.000003 '、master_log_pos = 411に変更します。  

MariaDB [(なし)]>スレーブを開始 

6.同期を表示します
MariaDB [(none)]>スレーブステータスを表示\ G;
*************************** 1。行******************** *******
               Slave_IO_State:マスターがイベントを送信するのを待っています
                  Master_Host:10.211.55.171
                  Master_User:repl
                  Master_Port:3306
                Connect_Retry:60
              Master_Log_File:mysql-bin.000003
          Read_Master_Log_Pos:411
               Relay_Log_File:mariadb-relay-bin.000002
                Relay_Log_Pos:529
        Relay_Master_Log_File:mysql-bin.000003
             Slave_IO_Running:はい
            Slave_SQL_Running:はい

7、

MariaDB [(none)]>テーブルのロックを解除します。
クエリOK、影響を受ける行は0(0.00秒) 






2、同期を確認します

主1操作:
MariaDB [(none)]>データベース1804bを作成します。
クエリOK、影響を受ける1行(0.00秒)

MariaDB [(none)]>データベースを表示します。
+ -------------------- +
| データベース|
+ -------------------- +
| information_schema |
| 1804b |
| mysql |
| performance_schema |
| テスト|
+ -------------------- +
セットで5行(0.00秒)

MariaDB [(なし)]> 1804bを使用します。
データベースが変更されました
MariaDB [1804b]> create table student(id int(10)PRIMARY KEY AUTO_INCREMENT、name varchar(50)NOT NULL、age int(2));
クエリOK、影響を受ける行は0(0.00秒)

MariaDB [1804b]>学生の値に挿入( '1'、 'zhangsan'、 '20');
クエリOK、影響を受ける1行(0.00秒)

MariaDB [1804b]>学生の値に挿入( ''、 'lisi'、 '20');
クエリOK、1行が影響を受け、1警告(0.00秒)



主2操作:

MariaDB [(なし)]>
MariaDB [(none)]>データベースを表示します。
+ -------------------- +
| データベース|
+ -------------------- +
| information_schema |
| 1804b |
| mysql |
| performance_schema |
| テスト|
+ -------------------- +
セットで5行(0.00秒)

MariaDB [(なし)]> 1804bを使用します。
テーブル名と列名を完成させるためのテーブル情報の読み取り
この機能をオフにすると、-Aを使用してすばやく起動できます。

データベースが変更されました
MariaDB [1804b]>テーブルを表示します。
+ ----------------- +
| Tables_in_1804b |
+ ----------------- +
| 学生|
+ ----------------- +
セットの1行(0.00秒)

MariaDB [1804b]>学生から*を選択
    ->;
+ ---- + ---------- + ------ +
| id | 名前| 年齢|
+ ---- + ---------- + ------ +
| 1 |張山| 20 |
| 3 | 溶解| 20 |
+ ---- + ---------- + ------ +
セットで2行(0.00秒)

MariaDB [1804b]>


キープアライブを構成する

キープアライブ




global_defs {
   Notification_email {
     [email protected]
   }
   notify_email_from [email protected] #alias root = "[email protected]"
   smtp_server 127.0.0.1 #smtp
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
#vrrp_strict#厳密なvrrpプロトコル、コメントがない場合、IPTABLESは毎回リリースする必要があり、デフォルトではVIPのデータパケットをドロップします
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_script chk_mysql_port {#mysqlサービスが実行されているかどうかを確認します。プロセス、スクリプト検出など、多くの方法があります。
    スクリプト "/opt/chk_mysql.sh"#ここではスクリプトによって監視されています
    interval 2 #Script実行間隔、2秒ごとにチェック
    weight -5#スクリプトの結果によって引き起こされる優先度の変更。検出が失敗した場合(スクリプトがゼロ以外を返す場合)、優先度は-5です。
    fall 2#検出が2回続けて失敗した場合、それは真の失敗と見なされます。優先度を下げるために重みを使用します(1〜255の間)
    rise 1#テストが1回成功した場合、成功したと見なされます。ただし、優先度は変更しないでください
}

vrrp_instance VI_1 {
    状態マスター
    interface eth0#仮想IPのネットワークカードインターフェイスを指定します
    virtual_router_id 51
    優先度100#マスタースレーブの重みの区別、値が大きいほど、重みが高くなり、VIPがどちら側にあるか
    advert_int 1
    認証{
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
   		10.211.55.180
    }
    track_script {               
        chk_mysql_port             
    }
}

       

[root @ master1〜] #vim /opt/chk_mysql.sh
#!/ bin / bash
counter = $(netstat -na | grep "LISTEN" | grep "3306" | wc -l)
if ["$ {counter}" -eq 0]; その後
    /etc/init.d/keepalived stop
あります


おすすめ

転載: blog.51cto.com/slapping/2601909