MySQLマスターレプリケーションクラスタ構築—binlogバイナリファイル方式の詳細


お兄さんがくどくど言う
上の文章では、MySQL主従複製とは何かを大まかに紹介し、主従複製のいくつかの 図にはどのようなものがあるのか、今日はMySQL の構築を実現する方法について説明します.主従レプリケーションには2つの方法があり、binlogGTIDがあります.今期はbinlogの方法で実現し、次のbinlogの原理と注意事項について説明します. 時に起きて、 にブラシをかけます.もしあなたがお兄さんの文章を通じていくつかの知識を学ぶことができると思ったら、お兄さんの をあなたの友达にあげてください.分かち合うのは楽しいことで、私たちは一緒にJavaを游びました.
一主一はクラスタから構築する
binlogの概要Mysqlには、binlogのすべての修正された 文が記録され、SQLはプライマリサーバ上の のバイナリログを、指定された場所でbinlogのすべての修正された文をコピーし、 で実行します.
簡単に言えば、 文をバイナリファイル(binlog)に記録し、create、update、deleteはこのファイルを読み取り、ファイルに記録された 文を1回実行します.これにより、プライマリ・スレーブ・データの同期が実現されます.
準備作業
  • サーバ3台:192.168.216.111、192.168.216.222、192.168.216.333
  • 主従と主主私たちは111と222の2台の機械を使って、111人の主、222人の従.メインタイムは2台の機械がメインです.ダブルマスターマルチスレーブ時、333は
  • から
  • サーバ環境:Windowsを採用しています.多くのパートナーはWindowsシステムを使っているので、みんなが勉強するのに便利です.実際の企業ではLinuxを使っています.
  • 3台のマシンはそれぞれMySQLデータベースをインストールし、互いにpingすることができます.

  • マスタースレーブmyを構成します.iniかmy.cnfファイルcreate、update、delete、今回は主にWindowsシステムを例に
  • は111と222のmyにあります.iniの[mysqld]ノードでの構成
  • server-id=my.ini Windows ,my.cnf Linux :プライマリサーバ一意ID、一般的にマシンIPアドレス後3ビット
  • に設定
  • log-bin= ID:binlogログ
  • を起動して記録します.
  • log-err= (オプション):エラーログ
  • を起動
  • read-only= :0は読み書きでも良い(メインライブラリ)、1は読み取り専用(スレーブライブラリ)
  • binlog-lgnore-db=0(オプション):レプリケーションされたデータベースからプライマリに移行しない
  • を設定します.
  • binlog-do-db= (オプション):レプリケーションが必要なデータベース名

  • 111マスターライブラリ構築許可ユーザは222スレーブライブラリ
    メインライブラリとスレーブライブラリの構成が完了したらmy.iniファイルの後、マスターライブラリからマスターライブラリにログインできるように、マスターライブラリに許可されたユーザーを作成する必要があります.
  • 構文
  • 111    :
    GRANT REPLICATION SLAVE ON *.* TO '   '@'  IP' IDENTIFIED BY '  ';(      )
    FLUSH PRIVILEGES;(  MySQL        )
    
    222    :
    mysql -h   IP -usally -pilovesally
    
    • , , IP

    • master 111
    show master status;
    

    Fileの2つのパラメータ、Positionはどのログファイルからデータを するかを し、Fileはこのファイルのどこからデータを するかを し、binlog-do-dbとbinlog-lgnore-dbはどのデータベースと のいくつかのデータライブラリを することを します.

  • ライブラリ マスタライブラリから データファイル
  • を する.
    に データを した は、まず してください(stop slave;)、さもないと いを します.
    222  :
    MASTER_HOST='  IP',
    MASTER_USER='     ',
    MASTER_PASSWORD='    ',
    MASTER_LOG_FILE='File  ',
    MASTER_LOG_POS=Position  ; 
    Positionライブラリからマスターライブラリに し、
    start slave;
    
    show slave status\G;
    

    YES, ! , !

    , ( 111 222 ), 222111の2つのライブラリが いにマスタースレーブであることを し、 からない は の のマスターレプリケーションアーキテクチャ を ることができます.
    ライブラリからマスターライブラリへの

  • 222をライブラリからメインライブラリに し、222で の を します. のスレーブIPは222のIPです.
    GRANT REPLICATION SLAVE ON *.* TO '   '@'  IP' IDENTIFIED BY '  ';(      )
    FLUSH PRIVILEGES;(  MySQL        )
    
    111

    my.ini

    • [mysqld]
    auto_increment_increment=2   #   auto_imcrement。   n  MySQL  n
    auto_increment_offset=1  #   。    n  MySQL
    

    111 222

    • master 222
    show master status;
    
    • 111データファイル
    • を .
      に データを した は、まず してください(stop slave;)、さもないと いを します.
      MASTER_HOST='  IP',
      MASTER_USER='     ',
      MASTER_PASSWORD='    ',
      MASTER_LOG_FILE='File  ',
      MASTER_LOG_POS=Position  ;
      
      222ライブラリ
      show slave status\G;
      
      • 111

        YES, ! , 111の2つのライブラリは、データを いに できません.
        デュアルプライマリマルチスレーブクラスタ
        たちは のデュアルプライマリクラスタに づいて、デュアルプライマリマルチスレーブクラスタを し、222マシンが するはずです.333111の がすべて であるため、222の は として、そのうちの1つのホストに に けておけばよい.ここでは333を びましょう.
        は、 のプライマリ・スレーブ・レプリケーション・クラスタと に、 の に います.
        すべての が したら、111ホストにデータを してテストし、111222がデータを していることがわかりました.しかし、333でデータテストが されると、222が していることがわかりますが、111は していません.333333の に けられたスレーブライブラリであるため、すべての111ホストがデータを した 、222333のデータを していないので、これは らかにだめです.ソリューションは で、2 のホスト111と222のプロファイルに の を えて すればよい.

        log-slave-updates=on
        
        222

        , 。111は いに の であり、222333の であるため、111111はこのパラメータを えなければならないので、この をよく してください.
        お さんの の 222 は、 を し、MySQLを できる であるため、この を につけなければならない.
        ITお さんMySQL
        に :ITお さん
        Java 、Java web、JavaEEのすべての を け ることができて、spring bootなどを みます
        : テンプレート、100 の しい を ることができます
        Java は、 の も な を することができます
        Java は、トップクラスのプログラマー 13 を け ることができますMySQL Java