[MySQL]マスタースレーブレプリケーションとその構成

1.マスタースレーブレプリケーションが必要なのはなぜですか?

  • 複雑なビジネスのシステムでは、そのようなシナリオがあります。SQLステートメントが必要な場合锁表、一時的な不能使用读サービスが発生し、実行中のビジネスに大きな影響を与えます。マスタースレーブレプリケーションを使用すると、マスターライブラリが書き込みを担当し、スレーブライブラリが読み取りを担当します。このように、マスターライブラリがテーブルをロックしている場合でも、スレーブライブラリを読み取ることでビジネスの正常な動作を保証できます。

  • データ用热备

  • 業務量が増加し、I / Oアクセスの頻度が高すぎて、1台のマシンでは対応できない場合、ディスクI / Oアクセスの頻度を減らして改善するために、マルチデータベースストレージが実行されます。単一のマシンのI/Oパフォーマンス。

2.マスター/スレーブレプリケーションとは何ですか?

MySQLマスタースレーブレプリケーションとは、 MySQLデータベースサーバーのマスターノードからスレーブノードにデータをレプリケートできることを意味します一个多个

MySQLは异步复制デフォルトでこの方法を採用しているため、スレーブノードはマスターサーバーにアクセスして自身のデータを更新する必要がなく、データの更新はリモート接続で実行でき、スレーブノードはマスターデータベース内のすべてのデータベースをコピーできます。または特定のデータベース、または特定のテーブル。

3.原則

  • master服务器データの変更はバイナリbinlog日志に記録され、マスター上のデータが発生する改变と、変更はバイナリログに書き込まれます。
  • slave服务器マスターバイナリログは、変更されたかどうかを確認するために特定の時間間隔で検出され、変更がある場合は、I/OThreadマスターバイナリの要求イベントが開始されます。
  • 同時に、マスターノードは各I / Oスレッドのダンプスレッドを開始して、バイナリイベントを送信し、スレーブノードのローカルリレーログに保存します。
  • スレーブノード启动SQL线程は、リレーログからバイナリログを読み取り、ローカルで再生して、データがマスターノードと一致するようにします。
  • 最後に、I / OThreadとSQLThreadはスリープ状態になり、次のウェイクアップを待ちます。

要約:

  • 从库2つのスレッド、1つのI / Oスレッドと1つのSQLスレッドを生成し、これら2つが状態になっていることを確認してください开启
  • I/O线程メインライブラリのbinlogを要求し、取得したbinlogをローカルrelay-log(リレーログ)ファイルに書き込みます。
  • メインライブラリは、binloglog dump线程スレーブライブラリのI/Oスレッドに渡すために生成します。
  • SQLスレッドは、ファイル内のログを読み取りrelay log、それをSQLステートメントに解析して、1つずつ実行します。

ここに画像の説明を挿入

4.構成

4.1 2台のサーバーを準備します(MySQLがインストールされています)

master:xxx
slave:xxx

4.2構成を変更する

2台のマシンが同時に同じ名前のデータベースを作成します。

create database test_db charset=utf8mb4;

4.2.1マスターマスターサーバー

  • 現れるmy.cnf
sudo vim /etc/mysql/my.cnf

ここに画像の説明を挿入

  • この情報を追加する
#在mysqld模块中添加如下配置信息
[mysqld]
log-bin=master-bin #二进制文件名称
binlog-format=ROW  #二进制日志格式,有row、statement、mixed三种格式,row指的是把改变的内容复制过去,而不是把命令在从服务器上执行一遍,statement指的是在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。mixed指的是默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。
server-id=1            # 要求各个服务器的id必须不一样
binlog-do-db=test_db   # 同步的数据库名称
  • マスターサーバーにログインするためのスレーブサーバーのアカウント認証を構成します
grant replication slave on *.* to 'root'@'%' identified by 'root';
  • 権限の更新
flush privileges;
  • マスターサーバーを再起動します
service mysql restart
  • mysqlmasterで表示status
show master stataus

ここに画像の説明を挿入

4.2.2スレーブスレーブサーバー

  • my.cnfファイルを探す

ここに画像の説明を挿入

  • 構成情報

これserver-idはメインサーバーで覚えておく必要があります不一样
ここに画像の説明を挿入

  • mysqlサービスを再起動します
service mysqld restart
  • メインサーバーに接続します
change master to master_host='主服务地址',master_user='root',master_password='root',master_port=3306,master_log_file='master-bin.000001',master_log_pos=154;

これmaster_log_fileshow master stataus上記の情報です。
これmaster_log_posshow master stataus上記の情報です。

  • スレーブを開始
start slave
  • スレーブを表示
show slave status \G(注意没有分号)

ここに画像の説明を挿入

これらの2つを見るとき、それはYES大丈夫です、他にならないように注意してくださいCONNECTING

  • 奴隷を止めろ
stop slave

4.2.3検証

  • masterメインサーバー
    ここに画像の説明を挿入

  • slaveサブサーバー

ここに画像の説明を挿入
両方のサーバーの状態

まず、master节点ステートメントを挿入できます

ここに画像の説明を挿入
次に、slave节点それ
ここに画像の説明を挿入
を見て、実装されていることを確認します主从复制

おすすめ

転載: blog.csdn.net/weixin_45304503/article/details/121255955