MySQL 主从复制

简介: 主从复制是 MySQL 实现数据冗余和高可用性的关键技术。主库通过 binlog 记录操作,从库异步获取并回放这些日志,确保数据一致性。搭建主从复制需满足:多个数据库实例、主库开启 binlog、不同 server_id、创建复制用户、从库恢复主库数据、配置复制信息并开启复制线程。通过 `change master to` 和 `start slave` 命令启动复制,使用 `show slave status` 检查同步状态。常见问题包括 IO 和 SQL 线程故障,可通过重置和重新配置解决。延时原因涉及主库写入延迟、DUMP 线程性能及从库 SQL 线程串行执行等,需优化配置或启用并行处理

主从复制

  1. 介绍一下 MySQL 主从复制?
  1. 主从复制是基于 binlog 来实现的;
  2. 主库发生新的操作,都会记录到 binlog 中;
  3. 从库取得主库的 binlog 进行回放;
  4. 主从复制的过程是异步的;
  1. 主从复制的前提(搭建主从复制)?
  1. 2 个或以上的数据库实例;
  2. 主库需要开启 binlog 日志文件;
  3. server_id 要不同,区分不同节点;
  4. 主库需要建立专门用于复制的用户(replication slave);
  5. 从库应该通过备份主库,恢复数据的方法进行补数据;
  6. 人为告诉从库一些复制信息(比如 IP、PORT、User、Password 等);
  7. 从库开启专门的复制线程;
  1. 从库如何告诉主库复制信息?
  • 执行 change master to 命令,例如:

mysql

代码解读

复制代码

CHANGE MASTER TO
  MASTER_HOST='172.21.0.3',
  MASTER_USER='repl',
  MASTER_PASSWORD='',
  MASTER_PORT=3307,
  MASTER_LOG_FILE='mysql-bin.000001',
  MASTER_LOG_POS=3596,
  MASTER_CONNECT_RETRY=10;
  1. 复制线程都有什么,如何开启?
  • 有 IO 线程和 SQL 线程;
  • 开启方式:从库执行 start slave;
  1. 如何检查主从同步是否成功?
  • 方法一:主库插入一条数据,看看从库是否有该条数据;
  • 方法二:从库执行 show slave status; 命令:
  • 查看 IO 线程和 SQL 线程的状态
  1. 主从复制涉及的文件有哪些?
  • 主库:
  • binlog
  • 从库:
  • relaylog:中继日志
  • master.info:主库信息文件
  • relaylog.info:relaylog 应用的信息
  1. 主从复制涉及到的线程有哪些?
  • 主库:
  • Binlog_Dump 线程
  • 从库:
  • SLAVE_IO 线程
  • SLAVE_SQL 线程
  1. 主从复制过程(原理)?
  1. 从库执行 change master to 命令(主库的连接信息 + 复制的起点);
  2. 从库会将以上信息记录到 master.info 文件中;
  3. 从库执行 start slave 命令,立马开启 IO 线程和 SQL 线程;
  4. 从库 IO 线程读取 master.info 文件里的信息,获取到 Host、Port、IP、User、Password、Binlog 的位置信息;
  5. 从库 IO 线程请求连接主库,主库专门提供一个 DUMP 线程,用于与 IO 线程交互;
  6. IO 线程根据 binlog 的位置信息(mysql-bin.000001),请求主库新的 binlog;
  7. 主库通过 DUMP 线程将最新的 binlog 通过网络传送给从库的 IO 线程;
  8. IO 线程接收到新的 binlog 日志,存储在 TCP/IP 缓存中,立即返回 ACK 给数据库,并更新 master.info 信息。
  9. IO 线程将 TCP/IP 缓冲区中的数据转存到 relaylog 中;
  10. SQL 线程读取 relaylog.info 信息,获取上次已经应用过的 relaylog 的位置信息;
  11. SQL 线程会按照上次的位置点回放最新的 relaylog,并在此更新 relaylog.info 信息
  12. 从库会对已经用过的 relaylog 自动清理;
  1. 从库如何知道主库有新的 binlog 日志产生?
  • 一旦主从复制建立成功,主库如果有任何更新,则会通过 DUMP 线程,给 IO 线程发送信号,让 IO 线程进行同步数据。
  1. 如何查看主从复制是否延迟?
  • 执行 show slave status; 命令,查看 Master_Log_FileRead_Master_Log_Pos 两个字段,和主库保持一致就是不延迟。
  1. 主从复制出现故障一般都是什么?如何排查?如何解决?
  • IO 线程(主要关注从库线程):
  • 可能出现的问题:
  • 无法连接主库;
  • 无法请求 binlog;
  • 解决方案:
  • 手动使用复制账号登录;
  • stop slave
  • reset slave all
  • change master to
  • start slave;
  • SQL 线程:
  • 具体看哪个 SQL 有问题,解决冲突即可
  1. 主从延时可能会有哪些原因?如何解决?
  • 主库方面:
  1. binlog 写入不及时:
  1. sync_binlog=1:写入日志必写磁盘
  1. DUMP 线程:默认情况下 DUMP 线程是串行传输 binlog,在并发事务量大时,由于 DUMP 线程是串行的,导致传输数据较慢。
  1. DUMP 并行执行(必须开启 GTID,使用 Group Commit 方式)
  1. 长事务(同上)
  2. 主库极其繁忙
  1. 慢 SQL
  2. 锁等待
  1. 从库较多
  2. 锁等待
  • 从库方面:
  1. SQL 线程串行执行:
  1. 5.6 版本,基于 GTID,实现 SQL 线程并行执行(针对多个数据库并行,同一数据库还是串行的)
  1. 主从延迟如何监控?
  • 查看从库状态,同步了多少,执行了多少,和主库日志位置对比。


转载来源:https://juejin.cn/post/7019692584373059621

相关文章
|
7天前
|
机器学习/深度学习 人工智能 自然语言处理
PAI Model Gallery 支持云上一键部署 DeepSeek-V3、DeepSeek-R1 系列模型
DeepSeek 系列模型以其卓越性能在全球范围内备受瞩目,多次评测中表现优异,性能接近甚至超越国际顶尖闭源模型(如OpenAI的GPT-4、Claude-3.5-Sonnet等)。企业用户和开发者可使用 PAI 平台一键部署 DeepSeek 系列模型,实现 DeepSeek 系列模型与现有业务的高效融合。
|
7天前
|
人工智能 搜索推荐 Docker
手把手教你使用 Ollama 和 LobeChat 快速本地部署 DeepSeek R1 模型,创建个性化 AI 助手
DeepSeek R1 + LobeChat + Ollama:快速本地部署模型,创建个性化 AI 助手
2687 112
手把手教你使用 Ollama 和 LobeChat 快速本地部署 DeepSeek R1 模型,创建个性化 AI 助手
|
2天前
|
云安全 边缘计算 人工智能
对话|ESA如何助力企业高效安全开展在线业务?
ESA如何助力企业安全开展在线业务
1015 7
|
5天前
|
人工智能 自然语言处理 JavaScript
宜搭上新,DeepSeek 插件来了!
钉钉宜搭近日上线了DeepSeek插件,无需编写复杂代码,普通用户也能轻松调用强大的AI大模型能力。安装后,平台新增「AI生成」组件,支持创意内容生成、JS代码编译、工作汇报等场景,大幅提升工作效率。快来体验这一高效智能的办公方式吧!
1345 5
|
14天前
|
Linux iOS开发 MacOS
deepseek部署的详细步骤和方法,基于Ollama获取顶级推理能力!
DeepSeek基于Ollama部署教程,助你免费获取顶级推理能力。首先访问ollama.com下载并安装适用于macOS、Linux或Windows的Ollama版本。运行Ollama后,在官网搜索“deepseek”,选择适合你电脑配置的模型大小(如1.5b、7b等)。通过终端命令(如ollama run deepseek-r1:1.5b)启动模型,等待下载完成即可开始使用。退出模型时输入/bye。详细步骤如下图所示,轻松打造你的最强大脑。
9442 86
|
2天前
|
人工智能 自然语言处理 API
DeepSeek全尺寸模型上线阿里云百炼!
阿里云百炼平台近日上线了DeepSeek-V3、DeepSeek-R1及其蒸馏版本等六款全尺寸AI模型,参数量达671B,提供高达100万免费tokens。这些模型在数学、代码、自然语言推理等任务上表现出色,支持灵活调用和经济高效的解决方案,助力开发者和企业加速创新与数字化转型。示例代码展示了如何通过API使用DeepSeek-R1模型进行推理,用户可轻松获取思考过程和最终答案。
|
6天前
|
API 开发工具 Python
阿里云PAI部署DeepSeek及调用
本文介绍如何在阿里云PAI EAS上部署DeepSeek模型,涵盖7B模型的部署、SDK和API调用。7B模型只需一张A10显卡,部署时间约10分钟。文章详细展示了模型信息查看、在线调试及通过OpenAI SDK和Python Requests进行调用的步骤,并附有测试结果和参考文档链接。
1393 9
阿里云PAI部署DeepSeek及调用
|
1月前
|
供应链 监控 安全
对话|企业如何构建更完善的容器供应链安全防护体系
阿里云与企业共筑容器供应链安全
171378 18
|
1月前
|
供应链 监控 安全
对话|企业如何构建更完善的容器供应链安全防护体系
随着云计算和DevOps的兴起,容器技术和自动化在软件开发中扮演着愈发重要的角色,但也带来了新的安全挑战。阿里云针对这些挑战,组织了一场关于云上安全的深度访谈,邀请了内部专家穆寰、匡大虎和黄竹刚,深入探讨了容器安全与软件供应链安全的关系,分析了当前的安全隐患及应对策略,并介绍了阿里云提供的安全解决方案,包括容器镜像服务ACR、容器服务ACK、网格服务ASM等,旨在帮助企业构建涵盖整个软件开发生命周期的安全防护体系。通过加强基础设施安全性、技术创新以及倡导协同安全理念,阿里云致力于与客户共同建设更加安全可靠的软件供应链环境。
150313 32
|
6天前
|
缓存 自然语言处理 安全
快速调用 Deepseek API!【超详细教程】
Deepseek 强大的功能,在本教程中,将指导您如何获取 DeepSeek API 密钥,并演示如何使用该密钥调用 DeepSeek API 以进行调试。

热门文章

最新文章