Mysql
如何:: 主-主複製
我已經在兩台伺服器上設置了 Master-Master 複製。現在,我的問題是,如果我需要將第二個 master 設置為只讀,我該怎麼辦?我試著做
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)
但是因為這會在我的第二個主控(從屬設備 1)中創建一個讀鎖。我在 Master 1 中所做的更改不會傳播到 Master 2(只讀)。
我應該怎麼做 - Master 1 中的更改正在更新到 Master 2 但 Master 2 不應該處於寫入模式,Master-master(主動/被動)。是否有可能做到這一點?
系統資料庫
1 停止第一個主站上的從站
mysql> STOP SLAVE;
如果第二個 master 變為只讀,則第一個 master 不應再從它複製。
2 將第二個主設備的配置更改為只讀。
mysql> SET GLOBAL READ_ONLY=1;
將 read_only=1 添加到 my.cnf 以便下次重新啟動
3 解鎖第二個主機上的表
UNLOCK TABLES;
您不需要在第二個主機(現在是從機)上鎖定表
4 安全特權
重新定義第二個主伺服器的權限,請在此處遵循以下答案:MySQL 複製從伺服器是否應設置為只讀?
5 驗證第二個主站上的從站狀態,現在是從站。
mysql> show slave status \G; Slave_IO_State: Waiting for master to send event Master_Host: 10.11.128.52
如果第二個 master 沒有複製,那麼您可能必須重新初始化到第一個 master 的複制。
A. 在第一個 master 上,辨識目前日誌和位置
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. 在第二個 master 現在是 slave,重新初始化複製
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. 在第二個主機上顯示狀態(現在是從機)
mysql> show slave status \G; Slave_IO_State: Waiting for master to send event Master_Host: 10.11.128.52