一、生產場景mysql主從復制讀寫分離授權方案及實戰
當配置和好MySQL主從復制以后,所有對數據庫內容的更新就必須在主服務器上進行。
那么,為什么所有的更新都要在主服務器上進行呢?這是因為數據復制是單向的,只有在主庫上更新,才能避免用戶對主服務器上數據庫內容的更新與對從服務器上數據庫內容的更新一致,而不會發生沖突。
那么,我們又如何確保用戶在主服務器上更新呢?
通過發郵件或口頭告訴開發人員約定好,不讓其寫從庫?
通過授權用戶控制?
其實可行的方法可以有很多,下面我們給大家一一道來。
1、生產MySQL復制環境用戶授權方案
2、通過忽略授權表的方式防治數據寫從庫的方法及實踐:
從技術手段上讓開發人員寫不了,而不是約定不讓他寫。
生產環境中老男孩老師一般會采取忽略授權表方式的同步,然后對從服務器(slave)上的用戶僅授權select讀權限。不同步mysql庫,這樣我們就保證主庫和從庫相同的用戶可以授權不同的權限。
忽略mysql庫和information_schema,performance_schema庫的主從同步。
3、通過read-only參數防止數據寫從庫的方法
除了上面在從庫僅做select的授權外,還可以在slave服務器啟動選項增加參數或者在my.cnf配置文件中加read-only參數來確保從庫只讀,當然授權用戶和read-only參數二者同時操作效果更佳,這也是我們生產環境中使用的方案。
read-only參數可以讓slave服務器只允許來自slave服務器線程或具有super權限的用戶的更新。可以確保slave服務器不接受來自普通用戶的更新,slave服務器啟動選項增加--read-only也是同樣功能。