设为首页 - 加入收藏 91站长网 (http://www.91zhanzhang.com)- 国内知名站长资讯网站,提供最新最全的站长资讯,创业经验,网站建设等!
热搜: 数据 如何 京东 公司
当前位置: 首页 > 站长学院 > MySql教程 > 正文

关于MySQL数据库的备份方案

发布时间:2018-08-27 18:08 所属栏目:[MySql教程] 来源:佚名
导读:分享点自己近年来接触MySQL数据备份这一块的小经验。数据是一个互联网公司的命脉,数据库的安全以及备案的完整性是至关重要的,所以我们需要在工作中要很熟练的掌握数据的备份与恢复,这也是一个合格的运维DBA必须具有的职业技能。 我这里简单总结MySQL的备

关于MySQL数据库的备份方案

分享点自己近年来接触MySQL数据备份这一块的小经验。数据是一个互联网公司的命脉,数据库的安全以及备案的完整性是至关重要的,所以我们需要在工作中要很熟练的掌握数据的备份与恢复,这也是一个合格的运维DBA必须具有的职业技能。

我这里简单总结MySQL的备份分为3种:分为冷备份,逻辑备份,热备份。

1、冷备份:

一般主要用于非核心业务,这类业务一般都是允许业务中断的,冷备份的特点就是数度快,恢复时也最为简单。通常直接复物理文件来实现冷备份。

1.1备份过程:

第一关闭mysql服务

第二步就是把datas数据目录(包含ibdata1)和日志目录(包含ib_logfile0,ib_logfile1,ib_logfile2)复制到磁盘,或者本地的另一块磁盘里

1.2恢复过程:

第一使用复制的数据目录和日志目录替换原有的目录

第二就是启动mysql

2、逻辑备份MySQLdump

生产场景备份的命令:

生产场景不同引擎mysqldump备份命令

myisam引擎企业生产备份命令(适合所有引擎或混合引擎):

  1. mysqldump?-uroot?-p123456?-A?-B?-F?-R?--master-data=2?-x?--events|gzip?>/opt/all.sql.gz?

提示:-F也可以不用,与--master-data有些重复。

innodb引擎企业生产备份命令:推荐使用的

  1. mysqldump?-uroot?-p123456?-A?-B?-F?-R?--master-data=2??--default-character-set=utf8??--events?--single-transaction?|gzip?>/opt/all.sql.gz?

提示:-F也可以不用。与--master-data有些重复。

--default-character-set=utf8 指定备份出的sql数据的字符集为utf8,当然,这个要提前知道线上的mysql库全部采用的字符集都是utf8,否则在恢复到线上的库会出现字符集不一致的问题出现乱码

提示:逻辑备份一般是数据迁移或者数据量很小时采用,逻辑备份采用的是数据导出的方式

2.1mysqldump库表等备份说明:

全备:

  1. Mysqldump?–uroot?–p??-q?–single-transaction?–A?>>all.sql?

导出多个数据库:

  1. Mysqldump?–uroot?–p??-q?–single-transaction?–B??test01?wjw01?test02?>test01_wjw01_test02.sql?

导出一个test库的某张wjw01表:

  1. Mysqldump?–uroot?–p??-q?–single-transaction?–b??test??wjw01>>test_wjw01.sql?

只导出表结构:

  1. Mysqldump?–uroot?–q?–d??--skip-triggers?

只需要导出储存过程时:

  1. Mysqldump?–uroot?–q?-Rtdn??--skip-triggers?

只需要导出触发器:

  1. Mysqldump?–uroot?–p?–q?–tdn?–triggers?

只需要导出事件:

  1. Mysqldump?–uroot?–p?–q?–Etdn?–skip-triggers

只需要导出数据:

  1. Mysqldump?–uroot?–p?–q??--skip-transaction?--skip-triggers?–t?

要想在线上建立一台新的slave,则在master上执行如下命令:

  1. Mysqldump?–uroot?–p?–q?–single-transaction?–master-data=2?-A?>>all.sql?

提示:在mysql5.5里增加了一个新的参数:--dump-slave,使用该参数可在slave端dump数据,建立新的slave,其目的是为了防止对主库造成过大的压力。

在slave上执行以下命令:

  1. Mysqldump??-uroot?–p??-A?–dump-slave=2?–q?–single-transaction?>/tmp/all.sql?

查看alls.sql 里面会记录slave上的那个点。

注意:--dump-slave用于在slave上dump数据,建立新的slave

2.2Mysqldump优缺点以及使用场景

优点:

  1. 恢复简单,可以使用管道将他们输入到mysql
  2. 与存储引擎无关,因为是从MySQL服务器中提取数据而生成的,所以消除了底层数据存储的不同
  3. 有助于避免数据损坏。若磁盘驱动器有故障而要复制原始文件时,此时将得到一个损坏的备份

缺点:

  1. 必须有数据库服务器完成逻辑工作,需要更多地cpu周期
  2. ?逻辑备份还原速度慢:需要MySQL加载和解释语句、转化存储格式、重建引擎

使用场景:对于MySQL数据库数据量不是很大的场景,建议使用。因为备份方便,简单灵活,易操作

当数据库特别的时候,比如30G以上时,备份MySQL数据时,也就建议不要采用mysqldump了,因为备份的时间以及恢复数据库的时间太长了,会对库表造成锁,对线上的业务影响还是比较大的

2.3简单介绍下MySQL全量备份+增量备份binlog

注意:生产上强烈建议MySQL开启Row格式来记录binlog,尽管这样对磁盘的IO以及磁盘的空间的消耗是比较大,但是和数据的安全性、完整性相比,磁盘资源那都是小事

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章
随机内容