我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql 面试(六)MySQL 架构类问题

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql 面试(六)MySQL 架构类问题

MySQL 主从复制实现原理

  • 开启二进制日志

  • 步骤一:主库 db 的更新事件 (update、insert、delete) 被写到 binlog

  • 步骤二:从库发起连接,连接到主库

  • 步骤三:此时主库创建一个 binlog dump thread,把 binlog 的内容发送到从库

  • 步骤四:从库启动之后,创建一个 I/O 线程,读取主库传过来的 binlog 内容并写入到 relay log

  • 步骤五:还会创建一个 SQL 线程,从 relay log 里面读取内容,从 Exec_Master_Log_Pos 位置开始执行读取到的更新事件,将更新内容写入到 slave 的 db

异步复制

  • master 修改后写入 binary_log(execute-binlog-commit)
  • slave 开启 io 线程,读取 master binlog_dump,写入 relaylog
  • slave 的 sql 线程,读取 relaylog,重新执行到从库

半同步复制

  • master 修改后写入 binary_log(execute-binlog)
  • slave 开启 io 线程,读取 master binlog_dump,写入 relaylog
  • slave 发送 ACK 到 master,master commit(阻塞) 提交
  • slave 的 sql 线程,读取 relaylog,重新执行到从库

MySQL 主从复制配置步骤

master 服务器操作

  1. 开启 binlog(必须) 开启 gtid(可选)
  2. 建立同步所用的数据库账号
  3. 使用 master_data 参数备份数据库
  4. 备份数据传到 slave 服务器

slave 服务器操作

  1. 开启 binlog(可选) 开启 gtid(可选)
  2. 恢复 master 上的备份数据库
  3. 使用 change master 配置链路
  4. 使用 startslave 启动复制

基于日志点的复制

定义

  • 传统的主从复制方式
  • slave 请求 master 的增量日志依赖于日志偏移量
  • 配置链路时需要指定 master_log_file 和 master_log_pos 参数

基于 GTID 的复制

定义

  • GTID=source_id:transaction_id
  • slave 请求 master 的增量日志依赖于其未同步的事务 ID
  • 配置复制链路时,slave 可以根据已经同步的事务 ID 继续自动同步

两种复制方式比较

基于日志点的复制 基于 GTID 的复制
兼容性好 同老版本的 MySQL 和 MariaDB 不兼容
支持 MMM 和 MHA 架构 仅支持 MHA 架构
主备切换后很难找到新的同步点 基于事务 ID 复制,很方便找到未完成的同步的事务 ID
可以方便地跳过复制错误 只能通过置入空事务的方式跳过错误

两种复制方式选择

基于日志点的复制 基于 GTID 的复制
需要兼容老版本 MySQL 和 MariaDB 其他各种情况
需要使用 MMM 架构

主从延迟

原因

  • 大事务:数万行的数据更新和对大表的DDL操作
  • 网络延迟
  • 由master多线程写入,slave单线程恢复引起的延迟

解决方法

  • 化大事务为小事务,分批更新数据
  • 使用pt-online-schema-change工具进行DDL操作
  • 减小单次事务处理的数据量以减少产生的日志文件大小
  • 减少master同步的slave数量
  • 使用MySQL5.7以后的多线程复制
  • 使用MGR复制架构

读写负载大

读负载大

  • 为原DB增加slave服务器
  • 进行读写分离,读分担到slave
  • 增加数据库中间层,进行负载均衡

写负载大

  • 分库分表

欢迎扫描下方二维码,持续关注:

互联网工程师(id:phpstcn),我们一起学习,一起进步

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql 面试(六)MySQL 架构类问题

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

mysql 面试(六)MySQL 架构类问题

MySQL 主从复制实现原理开启二进制日志步骤一:主库 db 的更新事件 (update、insert、delete) 被写到 binlog步骤二:从库发起连接,连接到主库步骤三:此时主库创建一个 binlog dump thread,把 binlog 的内容
mysql 面试(六)MySQL 架构类问题
2020-06-01

mysql架构类问题之MHA架构

MHA 架构适用的主从复制架构 主 / | 从1 从2 从3故障转移步骤选举具有最新更新的slave尝试从宕机的master保存二进制日志应用差异的中继日志到其他slave应用从master保存的二进制日志提升选举的slave为新的master配置其他slav
mysql架构类问题之MHA架构
2015-04-12

mysql 架构类问题之 MMM 架构

MMM 和 MHA 架构MMM 和 MHA 架构的作用对主从复制集群的 master 进行监控当 master 宕机后把写 VIP 迁移到新 master重新配置集群中其他 slave 对新的 master 同步MMM 架构适用的主从复制架构 主 -- 主
mysql 架构类问题之 MMM 架构
2014-12-31

mysql面试(一)版本类问题

各个发行版区别及优缺点MySQLPercona MySQLMariaDB服务器特性开源开源开源支持分区表支持分区表支持分区表InnoDBXtraDBXtraDB企业版监控工具,社区版不提供Percon MonitorMonyog高可用特性基于日志点复制基于日志
mysql面试(一)版本类问题
2021-08-14

mysql面试(五)存储引擎类问题

MySQL常用存储引擎引擎名称事务说明MYISAMNMySQL5.6之前的默认引擎,最常用的非事务型存储引擎CSVN以CSV格式存储的非事务型存储引擎ArchiveN只运行查询和新增数据不允许修改的非事务型存储引擎MemoryN是一种易失性非事务型存储引擎In
mysql面试(五)存储引擎类问题
2020-02-27

mysql面试(二)用户管理类问题

如何定义MySQL数据库账号用户名@可访问控制列表% 可以从所有外部主机访问192.168.1.%可以从192.168.1网段访问localhost 从服务器本地访问使用CREATE USER 建立用户MySQL常用用户权限语句说明AdminCreate Us
mysql面试(二)用户管理类问题
2020-08-02

mysql面试(七)备份恢复类问题

备份方式逻辑备份(DB 备份到文件)物理备份(DB 备份到 DB)全量备份和增量备份以及差异备份常用备份工具名称特点mysqldump最常用的逻辑备份工具,支持全量备份和条件备份mysqlpump多线程逻辑备份工具,mysqldump 增强版本xtraback
mysql面试(七)备份恢复类问题
2018-03-22

mysql面试(八)管理及监控类问题

性能类指标名称说明QPS数据库每秒处理的请求数量TPS数据库每秒处理的事务数量并发数数据库实例当前并行处理的会话数量连接数连接到数据库会话的数量缓存命中率Innodb 缓存命中率功能类指标名称说明可用性数据库是否可正常对外提供服务阻塞当前是否有阻塞的会话死锁当
mysql面试(八)管理及监控类问题
2014-08-15

mysql面试(三)服务器配置类问题

SQL_MODE配置MySQL处理SQL方式set [session/global/persisi] sql_model="xxxx"[mysqld] sql_model=xxxSQL_MODE说明ONLY_FULL_GROUP_BY对于GROUP BY聚合操
mysql面试(三)服务器配置类问题
2019-02-18

常见 MYSQL 面试问题

A. 初级MySQL问题:什么是 MySQL?MySQL 是一个开源关系数据库管理系统 (RDBMS),它使用结构化查询语言 (SQL) 来访问、管理和操作数据库中存储的数据。MySQL 有哪些主要特性?开源、跨平台支持、高性能、支持复杂查
常见 MYSQL 面试问题
2024-10-18

mysql面试(九)异常处理问题

数据库服务器负载过大原因服务器磁盘 IO 超负荷存在大量阻塞线程存在大量并发慢查询存在其他占用 CPU 的服务服务器硬件资源原因解决方案服务器硬件(硬件监控)其他服务占用(ps, top)IO 超负荷(iostat -dmx 1, lsof)阻塞线程(show
mysql面试(九)异常处理问题
2016-01-27

最新Mysql大厂面试必会的34问题

1、mysql的隔离级别2、MYSQL性能优化常用5种方式3、索引详解1、何为索引,有什么用?2、索引的优缺点4、什么情况下需要建索引?5、什么情况下不建索引?6、索引的底层数据结构1、hash表Hash 冲突 问题既然哈希表这么快, 为什么MySQL 没有使
最新Mysql大厂面试必会的34问题
2018-12-18

MySQL 8.0.23中复制架构从节点自动故障转移的问题

接触MGR有一段时间了,MySQL 8.0.23的到来,基于MySQL Group Replicaion(MGR)的高可用架构又提供了新的架构思路。 灾备机房的slave,如何更好的支持主机房的MGR? MGR 到底可以坏几个节点? 这次我
2022-05-29

在线考试系统的MySQL表结构设计中的试题分类管理方法

在线考试系统的MySQL表结构设计中的试题分类管理方法在设计在线考试系统的MySQL表结构时,试题分类管理是一个重要的环节。试题分类的合理设计可以提高系统的可维护性和扩展性,方便管理员对试题进行管理。本文将介绍一种基于MySQL的表结构设计
在线考试系统的MySQL表结构设计中的试题分类管理方法
2023-10-31

编程热搜

目录