青鱼292 2023-11-01 10:40 采纳率: 89.3%
浏览 3

请介绍mysql数据库的主从架构和读写分离

请介绍mysql数据库的主从架构和读写分离,包括复制原理,状态检查,数据备份

  • 写回答

1条回答 默认 最新

  • 谐云 谐云官方账号 2023-11-01 10:43
    关注

    主从架构— —概念
    binlog日志

    MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间。

    复制原理

    1. 主库操作保留binlog日志

    2. 从库的IO线程从主库拉取binlog日志,并生成中继日志(relay log)

    3. 从库的SQL线程解析中继日志,并在本身回放

    状态检查

    主要通过判断IO线程和SQL线程是否处于Running判断复制是否正常,判断Seconds_Behind_Master参数代表数据同步是否延迟:

    mysql> show slave status\G
    ...       
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
    Seconds_Behind_Master: 0
    ...
    
    

    主从架构— —衍生各种扩展的主从架构

    1. 一主多从
    2. 双主复制
    3. 级联复制
    4. 等等

    读写分离

    大部分场景下,读的频率比写的频率会高很多。所以可以通过扩展多个SLAVE节点提高整体的使用性能。

    数据备份

    传统的备份包括三种方式:

    1. lvm snapshot(LVM快照备份)

    2. mysqldump

    3. Xtarbackup

    那么要如何实现数据的一致性备份呢(一致性备份是所有数据/文件/磁盘 需要在同一个时间点进行备份)

    LVM SNAPSHOT

    1. 执行FTWRL(FLUSH TABLES WITH READ LOCK)

    1.1上全局读锁(lock_global_read_lock)
    1.2清理表缓存(close_cached_tables)
    1.3上全局COMMIT锁(make_global_read_lock_block_commit)
    2. 执行lvcreate 创建lv快照.

    1. UNLOCK TABLES解锁
    评论

报告相同问题?

问题事件

  • 创建了问题 11月1日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?