yii2 配合 mysql-MGR 配置高可用鏈接

yii2 db 單機配置

'db' => [
        'class' => 'yii\db\Connection',
        'dsn' => 'mysql:host=localhost;dbname=newplan',
        'username' => 'root',
        'password' => 'root',
        'charset' => 'utf8',
        'tablePrefix' => 's_',//前綴
]
...

配合mgr 多主配置 (本地docker 下起來3臺mysql 服務(wù)端組了mgr,如何組建mgr集群請看docker mysql mgr 集群)

'db' => [
        'class' => 'yii\db\Connection',
        'shuffleMasters' => true,  // 隨機選擇數(shù)據(jù)庫鏈接

        'masterConfig' => [
            'username' => 'root',
            'password' => 'root',
            'charset' => 'utf8',
            'tablePrefix' => 's_',//前綴
            'attributes' => [
                // use a smaller connection timeout
                PDO::ATTR_TIMEOUT => 10,
            ],
        ],
        'masters' => [
            ['dsn' => 'mysql:host=localhost;port=3306;dbname=newplan'],
            ['dsn' => 'mysql:host=localhost;port=3307;dbname=newplan'],
            ['dsn' => 'mysql:host=localhost;port=3308;dbname=newplan']
        ],
]

可能出現(xiàn)的報錯

  1. yii2 None of the master DB servers is available 極少數(shù)出現(xiàn),按照錯誤提示是沒有找到可以鏈接的主機, 首先排除當前配置的主機是非能夠鏈接的上,先使用但數(shù)據(jù)庫的配置鏈接查看是否有問題
  2. Server sent charset unknown to the client. Please, report to the developers 在我數(shù)據(jù)庫設(shè)置完成之后,使用yii鏈接單個數(shù)據(jù)庫做測試發(fā)現(xiàn)了這個錯誤,原因是:MySQL 8將默認字符集更改為utfmb4。但有些客戶并不知道這個規(guī)則。因此,當服務(wù)器向客戶端報告其默認字符集時,客戶端不知道服務(wù)器是什么意思,就會拋出此錯誤。
    解決方案,修改mysql配置加上:
[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
collation-server = utf8_unicode_ci
character-set-server = utf8
default_authentication_plugin = mysql_native_password

3.注意,如果集群中有mysql節(jié)點出現(xiàn)故障下線,雖然yii自己會處理不去連接故障服務(wù)器,但是故障處理完成的時候要小心,如果你的mgr集群沒有開啟 loose-group_replication_start_on_boot=ON #是否隨服務(wù)器啟動而自動啟動組復(fù)制 的話,當你的mysql回復(fù)正常能夠正常連接,yii 有可能連上這臺沒有加入集群沒有開啟組復(fù)制的mysql節(jié)點,這個節(jié)點是沒有寫入能力的(super_read_only),所以寫入操作會導(dǎo)致報錯(mgr的機制),
解決方案:
1.因為不是很建議loose-group_replication_start_on_boot開啟,所以在集群節(jié)點發(fā)生故障下線的時候,直到節(jié)點恢復(fù)加入集群之前,都先將配置文件中的該節(jié)點去除。
2.開啟loose-group_replication_start_on_boot

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • feisky云計算、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 4,388評論 0 5
  • Group Replication [TOC] 關(guān)于 Group Greplication 異步復(fù)制 半同步復(fù)制 ...
    saup007閱讀 6,019評論 0 4
  • 一直覺得兩個相戀的人,在步入婚姻殿堂之前應(yīng)該做一次兩個人的旅行,是否合適基本可知。 旅行不單是看沿途的風(fēng)景,其實也...
    江南茱兒閱讀 373評論 2 3
  • 有很多時候在想,一個人去旅行是什么樣的。想要一場轟轟烈烈的愛情,不受限制的學(xué)習(xí),但最后還是屈服于這個現(xiàn)實的世界。
    冰淇淋哇閱讀 112評論 2 1
  • 我所做的第一件事是打開音樂。 音樂開始流淌出來了,我聽了一會,前奏結(jié)束的時候我打開筆袋。 我剛才要做什么? 我拿出...
    Bread桑閱讀 217評論 0 0

友情鏈接更多精彩內(nèi)容