2つのサーバーにマスターマスターレプリケーションをセットアップしました。さて、私の質問は、2番目のマスターを読み取り専用にする必要がある場合、どうすればよいですか?やってみた
_mysql> flush tables with read lock;
_ Query OK, 0 rows affected (0.00 sec)
_mysql> set global read_only=ON;
_ Query OK, 0 rows affected (0.00 sec)
しかし、これにより、2番目のマスター(スレーブ1)に読み取りロックが作成されます。マスター1で行った変更がマスター2に反映されません(読み取り専用)。
マスター1の変更がマスター2に更新されますが、マスター2は書き込みモードではないはずです、マスター-マスター(アクティブ/パッシブ)。これは可能ですか?
Regds
1最初のマスターのスレーブを停止します
mysql> STOP SLAVE;
2番目のマスターが読み取り専用になると、最初のマスターは複製されなくなります。
2 2番目のマスターの設定を読み取り専用に変更します。
mysql> SET GLOBAL READ_ONLY=1;
次の再起動のためにmy.cnfにread_only = 1を追加します
3 2番目のマスターのテーブルのロックを解除します
UNLOCK TABLES;
2番目のマスター(現在はスレーブ)のテーブルをロックする必要はありません。
4安全な権限
2番目のマスターの権限を再定義し、ここでこの回答に従います。 MySQLレプリケーションスレーブを読み取り専用に設定する必要がありますか?
5 2番目のマスター(現在はスレーブ)でスレーブのステータスを確認します。
mysql> show slave status \G;
Slave_IO_State: Waiting for master to send event
Master_Host: 10.11.128.52
2番目のマスターが複製していない場合は、最初のマスターへの複製を再初期化する必要があります。
A.最初のマスターで、現在のログと位置を特定します
SHOW MASTER STATUS;
+------------------+----------+--------------------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------------------+------------------+
| mysql-bin.000001 | 107 | base1, base2 | |
+------------------+----------+--------------------------+------------------+
1 row in set (0.00 sec)
B. 2番目のマスターがスレーブになり、レプリケーションを再初期化する
Stop SLAVE ;
CHANGE MASTER TO MASTER_Host = '10.11.128.52',
MASTER_USER = 'repli', MASTER_PASSWORD = 'repli',
MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 107;
Start SLAVE;
C. 2番目のマスター(現在はスレーブ)のステータスを表示する
mysql> show slave status \G;
Slave_IO_State: Waiting for master to send event
Master_Host: 10.11.128.52