MySQL運行中被改權限測試
來自: http://ourmysql.com/archives/1420
今天一個接到一個朋友求助,說是數據在運行中,數據庫的目錄被改了權限。如: 數據庫目結構如下:
datadir = / data / mysql / mysql3306 / data log - bin = / data / mysql / mysql3306 / logs tmpdir = / data / mysql / mysql3306 / tmp |
被運維同步執行了:
chown - R root : root / data / mysql / mysql3306 |
1.構建主從環境
mysql ; 3306 主 / data / mysql / mysql3306 / { data , tmp , logs } mysql ; 3307 從 / data / mysql / mysql3307 / { data , tmp , logs } |
2. 在主的wubx庫里創建:
CREATE TABLE ` t2 ` ( ` id ` int ( 11 ) NOT NULL AUTO_INCREMENT , ` name ` varchar ( 32 ) DEFAULT NULL , PRIMARY KEY ( ` id ` ) ) |
確認復制正常。
3. 把主庫的目錄權限改成root
chown - R root : root / data / mysql / mysql3306 |
4. 弄出來大量的寫入
for i in ` seq ( 100000 ) ; do mysql wubx - e "insert into t2(name) vlaues('golang$i')" ; done |
5. 觀查主庫和從庫上數據
發現日志沒有切換時,數據都可以寫入,同步正常。 主庫上binlog還可以正常寫入。
6. 模擬日擬切換
主庫上執行: flush logs;
得到報錯:
從庫同步報錯:
1595錯誤


從這里看出來,從庫獲取到主庫日志切換指令,但主庫沒能創建出來新的日志,所以造成復制中斷。
7.結論
主庫上不影響數據寫入,但發生日志切換后,不能進行新的日志寫入,但沒卡住寫入。
從庫上在主庫日志發生切后,能得到新的日志文件名,但不能獲到新的日志,所以同步停掉。
8.修復建議:通過實驗說明,主庫上的數據是最全的,在后續日志切換失敗后,沒有影響數據的寫入。但數據沒有同步到從上。
思考:
這個有點是mysqld的一個bug的感覺了,日志已經無法寫入,但數據還可以寫入。 很容易造成同步有問題。 對于數據不同步怎么修復。多次給學生們講過,也能很快的把環境處理好。
Good luck!
</div>