mysql授权管理和主从复制以及读写分离

授权管理

太过于使用root用户,会风险,通产规建立一些低权限用户,只负责一部分库。
--创建了一个名为:test 密码为:1234 的用户 create user 'test'@'localhost' identified by '1234';

  • 格式:grant 权限列表 on 数据库名.表名 to 用户名@来源地址 【identified by ‘密码’】;

  • 权限列表:用于列出授权的各种数据库操作,通过逗号分割:select,inster,update,all表示所有权限

  • 库名.表名:通配符(*)表示所有

  • 用户名@来源地址:用于指定用户和允许访问的客户机地址;来源地市可以是ip,域名,%通配符表示所有

  • mysql通配符::任一单个字符 192.168.1.
    %:任意长度的任意字符 192.168.1.%

grant select on whml.* to 'mm'@'localhost' identified by'密码'; #给mm用户对库whml下的所有有select(查看)的权限
对grant语句授权的用户记录保存到mysql库的user中。
使用select * from user\G查看user的详细信息

  • 查看用户权限:show grants for 'mm@localhost';

  • 撤销用户权限:revoke all on whml.* from 'mm'@'localhost';

主从复制

  • mysql replication(mysql ab复制):从数据库会实时读取主数据库的二进制日志文件

  • 优点:

    • 可以通过增加服务器提高数据库平台的可靠性,在主服务器上执行写入和更新,在从服务器提供读写功能,可以动态的调整主从服务器的数量,从而调整高性能

    • 安全性

    • 可以在从服务器上分析数据,缓解主服务器的压力

  • mysql复制类型

mysql复制是指从一个mysql服务器(MASTER)将数据通过日志的方式经过网络传送到另一台或多台mysql服务器(SLAVE),然后在slave上重放(replay或redo)传送过来的日志,以达到和master数据同步的目的。

官方文档:https://dev.mysql.com/doc/refman/5.7/en/replication.html

  • 异步复制(默认复制):主数据库在完成后会立即返回给客户端,不管从数据库有没有同步上,这也就导致如果主数据库在返回后down掉时,从数据库有可能没有数据,导致从数据库替代后,没有上一条数据

  • 全同步复制:指当主库执行完一个事务,所有的从库都执行了该事务才返回给客户端。因为需要等待所有从库执行完该事务才能返回,所以全同步复制的性能必然会收到严重的影响。

  • 半同步复制:要mysql5.7以上,是介于全同步复制与全异步复制之间的一种,主库只需要等待至少一个从库节点收到并且 Flush Binlog 到 Relay Log 文件即可,主库不需要等待所有从库给主库反馈。同时,这里只是一个收到的反馈,而不是已经完全完成并且提交的反馈,如此,节省了很多时间。

  • 步骤:

    • 数据修改写入master数据库的binlog中。
    • slave的IO线程复制这些变动的binlog到自己的relay log中。
    • slave的SQL线程读取并重新应用relay log到自己的数据库上,让其和master数据库保持一致。

mysql支持的复制方式

通过设置服务器的系统变量binlog_format来制定要使用的格式

  • 基于sql语句的复制(sbr):之主服务器中执行sql语言,同时在从服务器中执行

  • 基于行的复制(rbr):主服务器把表的行变化作为事件写入到二进制日志中,主服务器把代表了行变化的事件写入从服务器中

  • 混合模式复制(mbr):先试用sql语言,若是无法精确则使用事件

  • rbr优点:任何情况都可以复制且安全可靠

  • rbr缺点:binlog文件较大,有大量数据,且当主服务执行多个update语句时,都会记录到binlog上有可能导致并发写问题,且不能查看执行过的sql语句

  • sbr优点:binlog文件小,可以实时还原,且主从版本可以不一样

  • sbr缺点:不是所有的update语句都会复制,且有一些函数不能复制,而且大量的行级锁表(在扫描执行时,会将表先锁起来,无法使用)

posted @ 2021-10-08 19:19  whml  阅读(97)  评论(0编辑  收藏  举报