最近在整理 Percona XtraDB Server 將 Read Write 全部拆開,寫入部份只開一台 Node,讀取機器 Replica 則是越多越好,當然如果預計 write 都不會有任何 conflict 的話,那就不用拆開,read write 都可以在同一台即可,拆開的目的要解決 Innodb transaction locking
問題。今天遇到的是將機器讀寫都放在同一台,然後同時多台 Master 架構,結果跑在 CodeIgniter 上面出現底下錯誤訊息
The MySQL server is running with the –read-only option so it cannot execute this statement
出現這問題的時候,第一時間去看一下 Percona cluster mysql 版本,發現不是踩到 read-only blocks SELECT statements in PXC 雷,這雷在 Percona XtraDB Cluster 5.5.33-23.7.6 被解掉了
Server version: 5.5.34-55-log Percona XtraDB Cluster (GPL), wsrep_25.9.r3928
後來查到原因是 MySQL User 權限不足,請將 SUPER Privilege
權限開啟。這樣 MySQL 使用者就可以忽略 read_only = on
參數,執行 SQL Command。
GRANT SUPER ON *.* TO 'ustv'@'%'