如何解决数据库崩溃.docx

上传人:b****8 文档编号:9359767 上传时间:2023-02-04 格式:DOCX 页数:10 大小:191.80KB
下载 相关 举报
如何解决数据库崩溃.docx_第1页
第1页 / 共10页
如何解决数据库崩溃.docx_第2页
第2页 / 共10页
如何解决数据库崩溃.docx_第3页
第3页 / 共10页
如何解决数据库崩溃.docx_第4页
第4页 / 共10页
如何解决数据库崩溃.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

如何解决数据库崩溃.docx

《如何解决数据库崩溃.docx》由会员分享,可在线阅读,更多相关《如何解决数据库崩溃.docx(10页珍藏版)》请在冰豆网上搜索。

如何解决数据库崩溃.docx

如何解决数据库崩溃

如何解决数据库崩溃,数据丢失?

  基础知识

  数据库日志的分类

  1.二进制日志 2.错误日志 3.一般查询日志4.中继日志5.慢查询日志

  二进制日志的格式:

  statement:

基于语句

  row:

基于行

  mixed:

混合方式

  mysql的隔离级别:

  readuncommitted:

读未提交

  readcommitted:

读提交

  repeatableread:

可重读

  serializable:

可串行

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

  刷新日志

  mysql>flushlogs;

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

  mysql>showmasterstatus;

  查看二进制日志的内容

  mysql>showbinarylogs;

  二进制日志的用途:

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

  mysql的复制

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

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

  异步传输。

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

  传输方式:

  异步传输:

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

  半同步传输:

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

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

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

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

  答案是:

有,虽说从服务器无非就是同步主服务器的数据而已,多了二进制日志文件反而会降低存储速度,但是这个从服务器可以是别的从服务器的主服务器,可称为多级日志,中继日志是不能拿来发给别人的,所以就有了二进制日志存在的必要啦......那么为什么要用多级复制呢?

如果主服务器忽然宕机,可以让这个从服务器做些简单修复,成为主服务器,这同时也就达到了服务器的高可用

  复制数据的特点:

(1)辅助实现备份。

(2)高可用。

(3)异地容灾

  读写分离:

  若规定各个服务器的操作,会出现负载不均衡现象,所以就在mysql服务器的前端出现了代理服务器,若是读操作,就发送至从服务器,若是写操作,就发送至主服务器。

由于读操作较多与写操作。

所以在众多可读的从服务器前端增加调度器,同时对主服务器、调度服务器、代理服务器做高可用.

  mysql缓存服务器的好处:

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

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

  使用双主模型,两个服务器都可以读写操作,A服务器的写操作的结果存储到二进制日志文件,将二进制日志文件发送至B服务器,存放于B服务器的中继日志,进行各种操作,保存二进制日志。

B服务器执行各种操作,保存于二进制日志,传送至A服务器,保存于中继日志,执行各种操作,保存于二进制日志,但这样就称为了死循环,所以给各个服务器赋予serverid,根据不同的serverid来识别哪些内容是本地日志,同时对本地日志不进行操作,只操作非本地的日志,就完成了数据的同步

  配置mysql复制的基本步骤

  1.master

  1.启用二进制日志

  log-bin=master-bin

  log-bin-index=master-bin.index

  2.选择一个惟一server-id

  server-id={0-2^32}

  3.增加表空间

  innodb_file_per_table=1

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

  mysql>grantreplicationslaveon*.*to'username'@'172.16.%.%'identifiedby'password';

  mysql>flushprivileges;

  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>startslave;

  实例:

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

  log-bin=master-bin

  log-bin-index=master-bin.index

  server-id=1

innodb_file_per_table=1

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

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

  #vim/etc/f

  relay-log=realy-log

  relay-log.index=relay-log.index

  server-id=11

innodb_file_per_table=1

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

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

查看从服务器

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

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

  #vim/etc/f

  read_only=ON

  重启服务器,就可以啦,

  *注:

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

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

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

现在主服务器上安装模块

在从服务器上也安装模块

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

分享来自多备份论坛转载请注明

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1