亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

【MySQL運維】事物隔離級別和行日志格式設置不當導致故障案例

標簽:
MySQL


最近刚接手个新项目的测试平台采用了spring的事务机制,在用户认证登录时总是提示认证超时,于时查看相应的各应用服务器日志,发现报了异常:

Binary logging not possible. Message: Transaction level 'READ-COMMITTED' in InnoDB is not safe for binlog mode 'STATEMENT'...

......

前端某台应用服务器报如下错:

{"returnNo":0,"listField":[{"userCode":"admin","newPassword":"","sessionKey":"","password":"670b14728ad9902aecba32e22fa4f6bd","ip":"192.168.1.75"}],"returnObject":null,"commondId":"8000"}

java.io.IOException: Server returned HTTP response code: 500 for URL: http://xxxxx/xxxxxx

at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1313)

其实通过最上面那条错误可以判断问题出在哪了.由于innodb 和 binlog不兼容引起的...MySQL推荐:当设置隔离级别为READ-COMMITED必须设置行日志格式为ROW,现在MySQL官方也明确说明STATEMENT 这个已经不建议用了!

当前系统的事务隔离级别是: READ-COMMITTED,行日志格式是:STATEMENT

这里可以有两种解决办法:

一种是提升事物隔离级别为 REPEATABLE-READ,这是MySQL默认的事务隔离级别;

mysql> set global transaction isolation level repeatable read;

一种是保持当前的事务隔离级别,修改行日志格式为 MIXED 或 ROW.

这里修改配置文件:

binlog_format = row

#binlog_format = MIXED

重启服务

有个特别要注意的问题,如果 binlog_format 为 MIXED,而且使用的是默认隔离级别REPEATABLE-READ,那么会导致主从数据不一致。

参考贺总博客:http://hcymysql.blog.51cto.com/5223301/1021174

©著作权归作者所有:来自51CTO博客作者qzhijun的原创作品,如需转载,请注明出处,否则将追究法律责任

row事物隔离MySQL


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消