基础知识

数据库日志的分类

1.二进制日志

2.错误日志

3.一般查询日志

4.中继日志

5.慢查询日志

二进制日志的格式:

statement:基于语句

row:基于行

mixed:混合方式

mysql的隔离级别:

readuncommitted:读未提交

readcommitted:读提交

repeatableread:可重读

serializable:可串行

二进制日志,默认放在数据库,名称为mysql-bin.xxxxx,当日志文件达到上限时,会不停的滚动,可以使用如下命令:

刷新日志

mysql>flush logs;

查看当前正在使用的二进制日志

mysql>show master status;

查看二进制日志的内容

mysql>show binarylogs;

二进制日志的用途:

二进制日志可以用来做即时点还原,因为里面记录了此前可以改变数据库的各种操作,这样,若数据库损坏,可以用二进制日志文件重新执行一遍

mysql的复制

A服务器把可能改变数据改变的操作,保存于二进制日志文件,A服务器把二进制日志文件的内容的事件随时通过本地服务器发送到B服务器,B服务器把事件保存至中继日志,通过读取中继日志的事件在B服务器执行操作,结果保存于数据库,同时会产生二进制日志,mysql的复制,这个流程就是mysql的复制,其中的A服务器就是主服务器,B服务器就称之为从服务器

主从服务器数据的传输方式

异步传输。因为从服务器的数据是从主服务器复制得到,所以从服务器的数据会比主服务器得到数据的速度要慢,从种种角度来讲从服务器比主服务器慢,所以主从服务器传输数据的方式是异步传输

传输方式:

异步传输:只要主服务器本地执行成功,就宣告执行成功,不管从服务器是否收到数据

半同步传输:对于主服务器来讲,只要最近一台的节点传输成功,就宣告成功

规定主从服务器的读写操作

从服务器是不允许写操作的,因为若从服务器写入数据,而又不能同步到主服务器,会导致主从服务器数据的不一致,会造成数据库崩溃,所以对于非主服务器的服务器都不允许写操作,就导致了主服务器允许读写操作,而从服务器只能允许读操作

从服务器有必要有二进制日志文件吗?

答案是:有,虽说从服务器无非就是同步主服务器的数据而已,多了二进制日志文件反而会降低存储速度,但是这个从服务器可以是别的从服务器的主服务器,可称为多级日志,中继日志是不能拿来发给别人的,所以就有了二进制日志存在的必要啦......那么为什么要用多级复制呢?如果主服务器忽然宕机,可以让这个从服务器做些简单修复,成为主服务器,这同时也就达到了服务器的高可用

复制数据的特点:(1)辅助实现备份。(2)高可用。(3)异地容灾

读写分离:

若规定各个服务器的操作,会出现负载不均衡现象,所以就在mysql服务器的前端出现了代理服务器,若是读操作,就发送至从服务器,若是写操作,就发送至主服务器。由于读操作较多与写操作。所以在众多可读的从服务器前端增加调度器,同时对主服务器、调度服务器、代理服务器做高可用.

mysql缓存服务器的好处:

若每次操作都到服务器上执行时,会发现速度很慢,所以建立共享式缓存(memcache),若下次访问memcache,若有所要查询的结果,就把结果返回至客户端,减少传输时间.

主从架构中,不使用mysql代理服务器,怎么实现数据同步?

使用双主模型,两个服务器都可以读写操作,A服务器的写操作的结果存储到二进制日志文件,将二进制日志文件发送至B服务器,存放于B服务器的中继日志,进行各种操作,保存二进制日志。B服务器执行各种操作,保存于二进制日志,传送至A服务器,保存于中继日志,执行各种操作,保存于二进制日志,但这样就称为了死循环,所以给各个服务器赋予server id,根据不同的server id来识别哪些内容是本地日志,同时对本地日志不进行操作,只操作非本地的日志,就完成了数据的同步

配置mysql复制的基本步骤

1. master

1.启用二进制日志

log-bin=master-bin

log-bin-index=master-bin.index

2.选择一个惟一server-id

serve r- id={0-2^32}

3.增加表空间

innodb_file_per_table = 1

4.创建具有复制权限的用户(require ssl)

mysql>grant replication slave on *.* to 'username'@'172.16.%.%'identified by 'password';

mysql> flush privileges;

2.slave

1.启用中继日志

relay-log=realy-log

relay-log.index=relay-log.index

(不需要时关闭二进制日志)

2.选择一个惟一的server-id

server-id={0-2^32}

3.增加表空间

innodb_file_per_table = 1

4.连接至主服务器,并开始复制数据(启动复制线程io_thread,sql_thread)

mysql> start slave ;

实例:

1.首先修改主服务器的配置文件,如下图

log-bin=master-bin

log-bin-index=master-bin.index

serve r- id=1

innodb_file_per_table = 1

2.在主服务器上创建用户

3.修改服务器的配置文件,同时连接柱服务器

#    vim/etc/my.cnf

relay-log=realy-log

relay-log.index=relay-log.index

serve r- id=11

innodb_file_per_table = 1

4.启动从服务器,查看线程时候启动

证明从服务器已经连接主服务器啦

5.在主服务器上创建数据库,看从服务器上是否可以查找到

查看从服务器

6.因为从服务器只能进行读操作,所以在从服务器上做一下修改

先查看从服务器上是否为只读

# vim/etc/my.cnf

read_only = ON

重启服务器,就可以啦,

*注:这里重启服务后,查看两个线程都是启动的,但这一次没有提供账号、密码啊,怎么可以自动识别啊?

很简单,切换到/mydata/data目录下,有一个文件名称为master.info,进行查看一下

实现主从服务器的半同步数据传输

现在主服务器上安装模块

在从服务器上也安装模块

重启服务,这样就可以实现主从服务器半同步复制啦!

mysql防止数据查找不到_为了防止数据库崩溃使数据丢失的解决方案相关推荐

  1. mysql提交数据时会丢失一部分_技术|MYSQL数据丢失讨论

    1.   概述 很多企业选择MySQL都会担心它的数据丢失问题,从而选择Oracle,但是其实并不十分清楚什么情况下,各种原因导致MySQL会丢失部分数据.本文不讨论Oracle和MySQL的优劣,仅 ...

  2. java中数据池有哪些_什么是数据库的 “缓存池” ?(万字干货)

    1.Buffer Pool 概述 Buffer Pool 是什么?从字面上看是缓存池的意思,没错,它其实也就是缓存池的意思.它是 MySQL 当中至关重要的一个组件,可以这么说,MySQL的所有的增删 ...

  3. mysql+缓冲池脏块率高_什么是数据库的 “缓存池” ?(万字干货)

    原标题:什么是数据库的 "缓存池" ?(万字干货) 1.Buffer Pool 概述 Buffer Pool 是什么?从字面上看是 缓存池 的意思,没错,它其实也就是 缓存池 的意 ...

  4. mysql 导出表数据到另一张表_yz-Mysql数据库中一个表中的数据导出来到另外一个数据库的表格...

    -----------方式一-------------------------------------------------------------------------------------- ...

  5. Mysql表数据如何导入到微信云开发数据库中

    文章目录 1.方法1 2.方法2 3.小结 思路:打开微信云开发控制平台,可以利用.json文件导入数据,所以重点是如何将mysql表数据导出为json文件 1.方法1 使用Navicat Premi ...

  6. mysql中储存过程的作用_存储过程在数据库中的作用是什么

    存储过程在数据库中的作用:1.存储过程可接受参数.输出参数.返回单个或多个结果集及返回值:2.存储过程运行比较稳定,不会有太多的错误:3.存储过程主要是在服务器上运行,减少对客户机的压力. 存储过程在 ...

  7. c 读取mysql另一个窗体中显示出来_二级ACCESS数据库4窗体的笔试题考点分析

    注意的考点: 1.窗体的概念: a.窗体的主要作用是接收用户输入的数据或命令,编辑.显示数据库中的数据,构造方便. 美观的输入/输出界面. b.窗体本身没有存储数据,其数据可以来源于表.查询或SQL语 ...

  8. MySQL导出数据反单引号_使用mysqldump导出数据时对字段中包含的单引号的处理

    最近在做一个日志统计项目,有一个辅助表是在MySQL数据库的,现在要将其迁移到Postgresql,自然是先用mysqldump将MySQL里面的数据导出,然后再导入到Postgresql即可.但在实 ...

  9. 几百万的数据查找重复值_如何快速查找出Excel中的重复数据,多角度分析

    如何多角度查找出重复数据,是数据分析中必不可少的一项.办公中经常遇到重复数据,想要标识出来,再进一步分析,避免数据出错.像人事部门,经常遇到同名不同人这种情况,如果工资发错了,很容易出现大问题,如何来 ...

最新文章

  1. c 语言socket粘包,C# Socket粘包处理讲解示例
  2. 如何用html制作心,html – 如何创建CSS心脏? /为什么这个CSS创造一个心脏的形状?...
  3. 电脑装windows和ubuntu,如何卸载ubuntu系统
  4. 大厂首发!java敏捷开发模式面试题
  5. 将数据、代码、栈放入不同的段
  6. JSP——JavaBean应用
  7. 安装vsphere update manager及注意事项
  8. openmv 神经网络 超出内存_【openmv】openmv各种bug问题记录
  9. plsa java代码_LDA主题聚类学习小结
  10. Spring相关面试题总结
  11. SIP呼叫中关于PRACK的使用
  12. S32K1xx 系列安全手册
  13. java实现来电弹屏_客服系统如何实现1秒来电弹屏?
  14. 单侧置信上限matlab,单侧置信限.PPT
  15. esp32拍照传输到手机android,esp32-cam拍照上传云平台教程
  16. 计算机速度由CPU决定,电脑CPU的计算速度由什么决定
  17. VMware ESX 4.1版本,浏览器无法访问问题【已解决】
  18. python一切皆对象 对象都有类_Python小世界:彻底搞懂Python一切皆对象!!!
  19. 一些版本管理常用的文档链接
  20. 解读电力调度、电力市场、技术创新,国网南网新型电力系统行动方案

热门文章

  1. MySQL助手_java 8.0Mysql 助手类
  2. devops对大会的看法_哪条建议对您在DevOps的职业生涯影响最大?
  3. 五一假期四天_假期在家上班的12天
  4. onenote组织知识体系_如何提升组织的安全专业知识
  5. 什么是git_什么是Git?
  6. 插槽的使用_思维导图
  7. Bootstrap3 引入插件的方法
  8. CSS 设置列表格式
  9. 伺服电机三环控制系统 一
  10. c语言图片base64编码,C语言实现Base64编码