一、生产场景mysql主从复制读写分离授权方案及实战
当配置和好MySQL主从复制以后,所有对数据库内容的更新就必须在主服务器上进行。
那么,为什么所有的更新都要在主服务器上进行呢?这是因为数据复制是单向的,只有在主库上更新,才能避免用户对主服务器上数据库内容的更新与对从服务器上数据库内容的更新一致,而不会发生冲突。
那么,我们又如何确保用户在主服务器上更新呢?
通过发邮件或口头告诉开发人员约定好,不让其写从库?
通过授权用户控制?
其实可行的方法可以有很多,下面我们给大家一一道来。
1、生产MySQL复制环境用户授权方案
2、通过忽略授权表的方式防治数据写从库的方法及实践:
从技术手段上让开发人员写不了,而不是约定不让他写。
生产环境中老男孩老师一般会采取忽略授权表方式的同步,然后对从服务器(slave)上的用户仅授权select读权限。不同步mysql库,这样我们就保证主库和从库相同的用户可以授权不同的权限。
忽略mysql库和information_schema,performance_schema库的主从同步。
3、通过read-only参数防止数据写从库的方法
除了上面在从库仅做select的授权外,还可以在slave服务器启动选项增加参数或者在my.cnf配置文件中加read-only参数来确保从库只读,当然授权用户和read-only参数二者同时操作效果更佳,这也是我们生产环境中使用的方案。
read-only参数可以让slave服务器只允许来自slave服务器线程或具有super权限的用户的更新。可以确保slave服务器不接受来自普通用户的更新,slave服务器启动选项增加--read-only也是同样功能。