数据库
首页 > 数据库> > MySQL主从复制我学废了

MySQL主从复制我学废了

作者:互联网

MySQL主从复制

数据库

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

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

主从复制

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

如何实现主从复制

  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持久化方式

  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