zoukankan      html  css  js  c++  java
  • MySQL设置从库只读模式

    常见现象

      运维工作中会经常维护MySQL主从服务器,当然Slave我们只是用于读操作。

    一般权限开通也只授权只读账号,但是有时候维护工作可能不是一个人在做,你不能保证其他同事都按照这个标准操作。

    有同事可能会授权Slave库MySQL账号为all或者select,update,insert,delete。还有一种情况是主从做了对所有数据的同步(包括用户信息),在Master库上面授权的账号也同步到了Slave库上面,当然Master账号中肯定会有select,update,insert,delete权限。

    存在的问题

      那么问题来了,当运维人员或者开发人员程序错误的连接了Mysql把Slave当成了Master等情况,那么就悲催了所有的数据修改就到Slave了,也会直接影响到主从的同步。

    为了避免上述问题,我们需要给MySQL的Slave设置为只读模式。

    解决方法

    演示如下:
    mysql> set global read_only=1; 
    Query OK, 0 rows affected (0.00 sec)

    #set global read_only=0 为取消普通账号的只读模式

    授权普通MySQL测试账号
    mysql> grant select,insert,update,delete on s18.* to 'test'@'127.0.0.1' identifi
    ed by '123456';
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    用测试账号登陆进行删除等操作,会提示--read-only错误
    复制代码
    mysql> delete from student where sid=14;
    ERROR 1290 (HY000): The MySQL server is running with the --read-only option so i
    t cannot execute this statement
    
    mysql> insert class values(5,三年级十班);
    ERROR 1290 (HY000): The MySQL server is running with the --read-only option so i
    t cannot execute this statement
    复制代码

    注意:set global read_only=1 对拥有super权限的账号是不生效的,所以在授权账号的时候尽量避免添加super权限

    那么我们在做数据迁移的时候不想发生任何数据的修改,包括super权限修改也要限制。

    可以用锁表:

    mysql> flush tables with read lock;
    Query OK, 0 rows affected (0.18 sec)
    使用root账号测试:
    mysql>  delete from student where sid=13;
    ERROR 1223 (HY000): Can't execute the query because you have a conflicting read
    lock
    解锁测试:
    mysql> unlock tables;
    Query OK, 0 rows affected (0.00 sec)
    mysql>  delete from student where sid=13;
    Query OK, 0 rows affected (0.00 sec)
  • 相关阅读:
    jquery扩展鼠标mousewheel事件
    addEventListener和attachEvent介绍, 原生js和jquery的兼容性写法
    HTML,CSS,font-family:中文字体的英文名称
    最好的Java和Android开发IDE---IntelliJ IDEA使用技巧
    《Thinking in Java》习题——吸血鬼数字
    Java学习之——JavaBeans
    Android 开源库——侧滑菜单栏(SlidingMenu)的导入和使用
    Android 布局学习之——Layout(布局)详解二(常见布局和布局参数)
    Android 布局学习之——Layout(布局)详解一
    Android 布局学习之——LinearLayout的layout_weight属性
  • 原文地址:https://www.cnblogs.com/sandea/p/9467176.html
Copyright © 2011-2022 走看看