美文网首页
MySQL使用集群提供的读写分离地址

MySQL使用集群提供的读写分离地址

作者: ppclouder | 来源:发表于2020-05-21 14:08 被阅读0次

    环境:

    AWS的MySQL数据库集群服务

    问题描述:
    MySQL数据库的master数据库,某天忽然变得没有写权限了,爆出如下错误:

    ### Cause: java.sql.SQLException: The MySQL server is running with the --read-only option so it cannot execute this statement

    ; uncategorized SQLException for SQL []; SQL state [HY000]; error code [1290]; The MySQL server is running with the --read-only option so it cannot execute this statement; nested exception is java.sql.SQLException: The MySQL server is running with the --read-only option so it cannot execute this statement

    问题分析:

    查看数据库读写权限情况:

    show global variables like "%read_only%"

    结果如下:

    innodb read only 

    启动server 在read-only模式。对于分布在数据库应用或者数据设置为只读介质。

    innodb read only 为 on, 数据库为完全只读,任何用户都无法写数据。

    如果是super privilege用户设定的话,一般会设定read only的值,这样的情况下,super privilege用户还可以写数据。

    问题原因:

    1,AWS RDS提供了主从自动切换的功能,主数据库崩溃后,从数据库会自动选出合适的一个充当主库。2,项目没有使用RDS提供的集群读写proxy地址,而是使用了mysql实例的服务器地址,于是在主从自动切换后,指向了错误的读写服务器。

    这又一个蠢到家的问题!!!

    相关文章

      网友评论

          本文标题:MySQL使用集群提供的读写分离地址

          本文链接:https://www.haomeiwen.com/subject/fcoightx.html