私の主な懸念は、一時的な停止よりも適切なバックアップを取得することです。データはゴールデンです。私はドキュメントを読んでいますが、バックアップ戦略の多くはそうであるようです。
mysqldump
または選択したw\eを実行します。これで問題はありませんが、スレーブが破損する可能性があるという理論的なチャンスはありますか(おそらくレプリケーションが正しく行われなかったか、スレーブがレプリカセットから切断されました)。もしそうなら、私は無意識のうちに破損した、または古いバックアップを取ります。これを回避するための最良の戦略は何ですか?私が考え得る唯一のことは:
mysqldump
を実行しますこれは非常に複雑なようですが、より良い解決策はありますか?マルチマスターは必要ありません。読み取りと書き込みは1台のサーバーで行われます。スレーブはフェイルオーバー専用です。
レプリケーションのステータスとラグは、注意すべき重要なモニターです。バックアップを開始する前に、スレーブが正常に動作するかどうかを確認する必要があります。
シンプルな show slave status
は必要な情報をすべて表示します。
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 172.30.40.61
Master_User: replica
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.021934
Read_Master_Log_Pos: 205924047
Relay_Log_File: relay-bin.004199
Relay_Log_Pos: 205924192
Relay_Master_Log_File: mysql-bin.021934
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 205924047
Relay_Log_Space: 205924384
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
1 row in set (0.00 sec)
メインの「カウンター」はSlave_IO_Running
およびSlave_SQL_Running
はレプリケーションステータス、Seconds_Behind_Master
ラグ(理想的には0秒)。
バックアップ専用のslaveがある場合(これは良い方法です)、mysqldumpの代わりに(またはさらに)datadirのバイナリコピーを作成することをお勧めします。復元ははるかに簡単かつ迅速になります。ただし、部分的なバックアップ(特にInnoDBテーブル)を復元する場合、またはクリーンな圧縮されたデータセットを復元する場合は、mysqldumpが適しています。
マスターとスレーブの間の破損またはデルタを恐れている場合は、Perconaツールpt-table-checksum(Percona Toolkitで利用可能)を使用して、「MySQLレプリケーションの整合性を検証できます。 「簡単に。
マックス。