常见现象
运维工作中会经常维护MySQL主从服务器,当然Slave我们只是用于读操作。
一般权限开通也只授权只读账号,但是有时候维护工作可能不是一个人在做,你不能保证其他同事都按照这个标准操作。
有同事可能会授权Slave库MySQL账号为all或者select,update,insert,delete。还有一种情况是主从做了对所有数据的同步(包括用户信息),在Master库上面授权的账号也同步到了Slave库上面,当然Master账号中肯定会有select,update,insert,delete权限。
存在的问题
那么问题来了,当运维人员或者开发人员程序错误的连接了Mysql把Slave当成了Master等情况,那么就悲催了所有的数据修改就到Slave了,也会直接影响到主从的同步。
为了避免上述问题,我们需要给MySQL的Slave设置为只读模式。
1、开启只读模式
mysql> show global variables like "%read_only%";
mysql>flush tables with read lock;
mysql> set global read_only=1;
mysql> show global variables like "%read_only%";
关闭只读
mysql>unlock tables;
mysql> set global read_only=0;
2.对于需要保证master-slave主从同步的salve库
mysql> set global read_only=1;
改为读写模式
mysql> set global read_only=0;