ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL主从复制我学废了

2020-12-05 20:30:15  阅读:328  来源: 互联网

标签:主从复制 持久 数据库 我学 线程 MySQL 日志


MySQL主从复制

数据库

数据库 DB: 内存,CPU,磁盘,带宽 这几个方面影响性能。那优化点在哪?
不要上来就说 不要使用 select* 要选择性的添加索引之类的

  1. 可以先说一下监控SQL 看它的执行时间 (SQL Server Profiler)
  2. 查看数据库连接 怎么查
  3. 数据库设计之初,索引怎么选择
  4. SQL语句的优化
  5. 设置MySQL的参数
  6. 分布式集群如何设计

主从复制

一个数据库不是很好么,为什么会涉及到主从复制

  • 如果一台数据库达到性能的瓶颈,那就要考虑,把请求做一个负载(代理层)所有请求转发到代理层,由代理层来分发,到底用哪个DB去查,那么这么多DB是否要保持数据一致呢?(根据业务)
    如果要做读写分离:那就有一台专门是写 其余负责读。数据要保持一致,要想数据一致,那就要主从复制。

如何实现主从复制

  1. master将DML1操作语句记录在binlog日志中
  2. slave开启两个线程 一个IO thread 一个 SQL thread,其中IO 线程负责读取master的binlog内容,写到中继日志relay log里;SQL线程读取relay log的内容,并更新到slave的数据库中。这样就保证了主从数据一致了
  3. MySQL复制至少需要两个MySQL的服务,MySQL服务也可以分布在不同的服务器上。也可以在一台

通俗点说:
第一台db叫master 第二台叫slave。主从复制时,操作对象都是master,会有DML1操作(客户端发送sql语句时),在DML操作时一定会保留日志(就是binlog),有个线程IO Thread
,传给slave(要不要持久化存储?要 通过中继日志 relay log), slave和master保持一致,需要将relay log进行重放执行操作(sql thread),根据日志进行恢复

网上有一个很清晰的流程图
流程图

主从延迟怎么处理

  • mysql集群

数据库持久化的两种实现方式

  • 快照
  • 日志

MySQL持久化方式

  1. MySQL快照 : MySQL的dump工具,可以将数据导出为.sql文件,通过这个sql文件,可以作数据恢复。
  2. Mysql的binlog

Redis持久化方式

  1. RDB持久化 :将Redis在内存中的数据库记录定时dump到磁盘上的RDB持久化
  2. AOF(append only file)持久化 :将Redis的操作日志以追加的方式写入文件

线程和进程区别

讲解

  • 进程-资源分配的最小单位
  • 线程-程序执行的最小单位

mysql存在几种日志

  1. binlog 二进制日志文件,需要手动开启,归属于mysql服务 用于记录用户对数据库操作的SQL语句 除了数据查询语句
  2. undo log,归属于innodb存储引擎的
  3. redo log,归属于innodb存储引擎的
    还有慢查询日志,错误日志,mysql执行日志,不管是mysam或者innodb共用的都是binlog

  1. DML:对表记录的增、删、改操作 DQL:查询操作 ↩︎ ↩︎

标签:主从复制,持久,数据库,我学,线程,MySQL,日志
来源: https://blog.csdn.net/jerryvd/article/details/110679156

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有