web-dev-qa-db-ja.com

テーブルをロックしないデータベースレプリケーション

マスターデータベースとスレーブデータベース間のレプリケーションのセットアップを求められました。目的は、データベースのダンプ中にテーブルをロックしないことです。

レプリケーションをセットアップしたことがありませんが、このガイドを見つけました。

https://plusbryan.com/mysql-replication-without-downtime 彼はこれらの設定を使用しています。

マスター:

server-id=1
binlog-format   = mixed
log-bin=mysql-bin
datadir=/var/lib/mysql
innodb_flush_log_at_trx_commit=1
sync_binlog=1

スレーブ上:

server-id               = 101
binlog-format       = mixed
log_bin                 = mysql-bin
relay-log               = mysql-relay-bin
log-slave-updates = 1
read-only               = 1

次の設定が何を意味し、それらが設定全体にどのような影響を与えるかを教えてください(データベースは約35GBです)

もう一つ。このレプリケーションは「行ベース」にする必要があるため、代わりにマスター設定で行オプションを使用します

innodb_flush_log_at_trx_commit=1
sync_binlog=1
log-slave-updates = 1
read-only               = 1

継続的なディスク書き込みのため、パフォーマンスの問題や高I/Oに悩まされたくない。先ほど申し上げましたように、これまでの設定経験はありませんので、よろしくお願いします。どうもありがとう

2
LukeJ

これはあなたがポイントしたパラメータの意味です:

  • server-id:サーバーが他のサーバーと通信するために一意のIDを持っていることを意味します。IDの範囲は1から2 ^ 32である必要があります。指定されていない場合、サーバーIDは0(スタンドアロン)であり、他のサーバーと通信します。
  • binlog-format:バイナリログ形式で、3つの値があります。STATEMENTはロギングをステートメントベースに、ROWはロギングを行ベースに、MIXEDはロギングに混合形式を使用します。
  • log-bin:これにより、バイナリロギングが有効になります( https://dev.mysql.com/doc/refman/5.7/en/replication-options.html
  • datadir:データを保存する場所。
  • innodb_flush_log_at_trx_commit:コミット操作の厳密なACIDコンプライアンスと、コミット関連のI/O操作が再配置されてバッチで実行される場合に可能なより高いパフォーマンスとの間のバランスを制御します。デフォルト値を変更することでパフォーマンスを向上させることができますが、クラッシュで最大1秒のトランザクションが失われる可能性があります。 ( innodb_flush_log_at_trx_commit = 2 を使用しても安全ですか)
  • sync_binlog:このパラメーターは、あるサーバーから別のサーバーにbinlogを同期するために使用されます。
  • relay-log:リレーログは、バイナリログと同様に、データベースの変更を説明するイベントを含む一連の番号付きファイルと、使用されるすべてのリレーログファイルの名前を含むインデックスファイルで構成されます。( https:/ /dev.mysql.com/doc/refman/5.7/en/slave-logs-relaylog.html
  • log-slave-updates:自動配置メカニズムをアクティブにするには、このオプションを有効にする必要があります。
  • 読み取り専用:このオプションは、スレーブが読み取り専用に使用されるようにします(マスターサーバーからのもの以外の)更新は許可されず、競合がないことを確認します
2
Ahmad Abuhasna