精华内容
下载资源
问答
  • 数据库备份和恢复

    2017-12-19 21:17:25
    数据库备份和恢复数据库备份和恢复数据库备份和恢复数据库备份和恢复数据库备份和恢复
  • 《Oracle Database 11g RMAN备份恢复》PDF版本下载
  • thinkphp3.2数据库备份下载恢复删除,在网上也是搜索了大量的信息,才弄出适合自己的数据库管理功能,提取出所需文件,大家学习进步
  • MySql练习5:myschool数据库的备份和恢复.zip MySql练习5:myschool数据库的备份和恢复.zip MySql练习5:myschool数据库的备份和恢复.zip
  • 《IT名人堂:大话Oracle RAC集群、高可用性、备份恢复》PDF版本下载
  • Mysql备份恢复

    2018-05-29 13:14:23
    生产中Mysql备份恢复的形式,基于mysqldump备份及原理,基于Xtrabcackup备份及原理,表空间传输,binlog备份(增量),基于mysql全备+增备的恢复Tips
  • 可配置多个AD域、office365租户Exchange组织以进行备份,并在一个仪表板中管理它们。管理您的通知配置文件,并选择您希望通过电子邮件接收通知的操作。授权非管理员用户启动备份操作审计他们的行动。简单高效,...
  • CGI备份恢复

    2018-04-11 15:47:13
    CGI备份软件,更方便,系统备份一键还原更简单,硬盘备份,一键还原系统
  • 到此这篇关于php如何实现数据库的备份和恢复的文章就介绍到这了,更多相关php数据库备份和恢复内容请搜索软件开发网以前的文章或继续浏览下面的相关文章希望大家以后多多支持软件开发网! 您可能感兴趣的文章:PHP...
  • 尽管表明可以备份和还原Nexus,但还原后从UI下载工件时出现500个错误,因此似乎无法完全还原数据。 也有可能某些步骤没有按原计划发出。 除此之外,还原还可以还原Nexus配置。 N3DR排除了组存储库的备份,并且能够...
  • 资源名称:Oracle Database 11g RMAN备份恢复   内容简介: 《Oracle Database llgRMAN备份恢复》提供了在硬件、软件、操作发生故障时保护数据库的详细信息。详细解释了如何配置数据库,创建精确的...
  • RDS for MySQL 物理备份文件恢复到自建数据库 RDS for MySQL 逻辑备份文件恢复到自建数据库
  • 本篇文章详细记录了Gitlab备份和恢复操作过程,可作为线上实操手册。在此分享,希望能帮助到有用到的朋友。
  • NBU对Oracle数据库的本地/异机备份恢复操作,主要针对初入NBU备份的小白,里面也有脚本,更改该参数即可使用。不想花积分下载的可以留言邮箱私发。
  • 备份和恢复mysql数据库的命令,mysqldump --add-drop-table -u用户名 -p密码 数据库名 > 备份名,mysql -u用户名 -p密码 数据库名 备份
  • 为了规范公司重要数据备份清单的建立、备份的职责、备份的检查、以及系统受到破坏后的恢复工作,合理防范计算机及信息系统使用过程中的风险,特制定本制度
  • gitlab备份恢复手册

    2019-01-10 09:41:22
    非常详细的gitlab备份恢复手册,该手册用于公司代码云备份恢复紧急救援使用,不可多得,需要的亲,请下载
  • 用标准SD卡,完成6RA80装置参数的备份和恢复; 适用于:1.6RA80装置的参数备份; 2.在没有STARTER软件情况下,更换CUD主板
  • 万水oracle技术丛书,精通oracle 10g备份恢复,王海亮编著
  • Window 下的PostgreSQL 数据库备份和恢复工具[GUI],供大家一起共同分享使用。
  • Mysql数据库备份恢复

    千次阅读 2019-07-31 17:34:04
      在mysql备份当中,我们一般有两种备份方法,一种叫逻辑备份mysqldump,另一种是物理备份xtrabackup。   mysql提供了四种备份工具。逻辑备份工具有mysqldump、mysqlpump、mydumper,其中mysqldump是单线程备份...

      在mysql备份当中,我们一般有两种备份方法,一种叫逻辑备份,另一种是物理备份。
      mysql提供了四种备份工具。逻辑备份工具有mysqldump、mysqlpump、mydumper,其中mysqldump是单线程备份工具,备份速度慢。Mysqlpump、Mydumper是多线程备份工具。物理备份工具为xtrabackup。

    (1)逻辑备份

      从库是通过读取日志记录来追赶主库的形式来形成备份的,在我们搭建好主从数据库后,对于逻辑备份而言,第一次一般都要先执行一遍mysqldump,其中注意的参数有①master-data,一般设置为2用来开启dump过程中记录主库的binlog和pos点(下面的点位),并在dump文件中注释掉,一般在用到主从时用到这个参数。②–single-transaction用来保证备份的一致性,设置本次会话的隔离级别为REPEATABLE READ可重复读,以确保本次会话(dump)时不会看到其他会话已经提交的数据。
      之所以在第一次在逻辑备份的时候要执行一次mysqldump,是因为我们日志的大小或者存储的时间是有限定的,假设主库已经存了500G的实例,而从库为0,主库的日志只存了近两天的记录,而我们从库就不能通过读主库的日志来进行备份了,就必须手动dump一下先把这500G的数据让从库去追,追上后然后才开始慢慢读主库的日志来进行备份。

      脏页:因为硬盘的读写速度远赶不上内存的速度,系统就把读写比较频繁的数据事先放到内存中,以提高读写速度,这就叫高速缓存。
    linux是以页作为高速缓存的单位,当进程修改了高速缓存里的数据时,该页就被内核标记为脏页,内核将会在合适的时间把脏页的数据写到磁盘中去,以保持高速缓存中的数据和磁盘中的数据是一致的。

    下面介绍逻辑备份工具的使用:

    Mysqldump:

      Mysqldump是逻辑备份,可以将数据库备份成一个文本文件,该文件里面包含了sql语句。Mysqldump是单线程备份工具。
      我们使用mysqldump进行备份,用mysql进行恢复。
      可以使用show variables like ‘%log_bin%’来查看log_bin打开状况。
    在这里插入图片描述
      可以使用show variables like ‘%server%’来查看server_id是多少。Server_id是一种标识,用来判断binlog中每条记录是在哪个服务器上产生的,在主主复制架构中可以防止无限复制循环,其实就是mysql进程的标识(因为一台机器可以开多个Mysql进程)
    在这里插入图片描述
      可以使用show master logs查看所有日志情况,每一次的dump都会生成一个binlog:
    在这里插入图片描述
      在binlog中记录了点位情况,从库就是通过点位去找要执行主库的哪一个日志中的哪一条事务。
    首先,我们在主库中创建了一个数据库fxdb1,然后我们去备份这个数据库。在一个文件夹里面执行以下命令:
      mysqldump -h10.236.158.96 -uroot -P9006 -p#77GFMhyp8 --databases fxdb1> fxdb1.sql
    如果我们不加—databases,则我们生成的fxdb1.sql文本里面是没有create database的语句的。

      一致性备份:mysqldump是单线程,先备份A表,再备份B表,再备份C表…,假如A表数据量很大,当A表还没备份完的时候,B表已经更改了数据,此时A表备份完开始备份B表时,B表就不再是之前的数据了,此时就要加上一致性备份。也就是在mysqldump的时候加上–single-transaction参数,设置本次会话的隔离级别为REPEATABLE READ可重复读,以确保本次会话(dump)时不会看到其他会话已经提交的数据。除此之外,还有一个主从的master-data参数,一般设置为2用来开启dump过程中记录主库的binlog和pos点(下面的点位),并在dump文件中注释掉。点位的情况如下:
    在这里插入图片描述
      Ex:每一次的mysqldump都会生成一个日志文件。000003这种是自增的。
      为什么–single-transaction可以达到一致性备份呢:
      在mysql钟可以通过show variables like ‘%isolation%’来查看隔离级别。
    在这里插入图片描述
      我们在调试的时候,可以打开另一个日志文件general_log,他不同于binlog和redolog,他记录的是我们执行的sql语句,一般general_log为关闭状态,因为打开很消耗性能,所以一般是调试的时候才打开,例如这里我们像查看–single-transaction的情况就可以打开查看。general_log一共有三个属性:general_log(on、off)决定打开关闭状态、general_log_file存储的位置、log_output决定general的文件类型(FILE、TABLE)。
    在这里插入图片描述
      现在我们打开general_log后,再执行一次备份,然后查看db01.log可以看到:
    在这里插入图片描述
      结论:–single-transaction会将隔离级别设置为REPEATABLE_READ可重复读,并随后再执行一条START TRANSACTION语句,让整个数据再dump过程钟保证数据的一致性,这个选项对InnoDB的数据表很有用,且不会锁表,就是对其他用户的操作不会有影响。而对于myisam而言,就会锁表,毕竟他没有事务。

    增量恢复: 我们在备份的时候,数据库也在不断运行,假如我们在数据库的最新点进行一致性备份,备份了一分钟,但是在这一分钟里数据库在不断运行,一分钟后原来的最新点就不再是最新点了,那么如果此时数据库挂掉了,那么增加的那一部分的恢复就需要用到增量恢复。
      增量恢复:备份+binlog。
      也就用全备份的数据+binlog读取新增的数据来实现增量恢复。
    在这里插入图片描述
      而这个binlog日志文件可以在mysql的目录下看(一般在/var/lib/mysql),里面存放的有很多binlog日志文件。当我们主库宕机了,那么我们就需要用备份文件恢复,然后再用日志文件进行增量恢复,毕竟日志先行,日志都落地到磁盘里了的。

    mysqlpump

      也是逻辑备份工作,是多线程备份工具,他主要特点是:
      ① 多线程只能到表级别,单表备份还是单线程。一个库里面可以同时备份多张表,而mysqldump一次只能备份一张表。
      ② 并行备份数据库和数据库中的对象,加快备份过程。
      ③ 备份出来直接生成压缩后的备份文件。
      ④ 重新加载(还原)备份文件时,是先建表后插入数据最后建立索引,减少了索引维护开销,加快了还原速度。因为如果是先建表再建立索引再插入数据的话,那么一边插入数据一边会维护索引。

      这里我们写一次mysqlpump备份的语句,之后的备份语句就不再写了,都差不多:
      Mysqlpump -uroot -p123456 –default-character-set=utf8mb4 –databases fxdb1 > fxdb1.sql
      我们查看他的备份sql文件fxdb1.sql可以看到:
    在这里插入图片描述
      他是创建一张表后,再创建一张表,然后再给第一张表插入数据,最后再给第二张表插入数据。这里就和mysqldump不一样,在mysqldump中就是创建一张表,然后插入数据,然后再创建第二张表,再插入数据。
      无论是mysqldump还是mysqlpump还是其他,我们想要看他有哪些参数,可以通过mysqlpump –help > help.txt 然后查看help.txt可以得到参数。
      通过翻阅参数可以看到,想要压缩我们mysqldump出来的sql文件,他不是自动压缩,是需要我们带参数他才会帮我们压缩,参数为–compress-output=name,还有其他参数如下:
      ① --compress-output=name压缩参数,name可以为LZ4
      ② --default-parallelism=# 开启几个线程去执行,默认是2个线程,这里#可以设置成3,4更多。
      其他参数和mysqldump差不多。
      例如上面mysqlpump的逻辑备份语句可以写成:
    Mysqlpump -uroot -p123456 –default-character-set=utf8mb4 --compress-output=LZ4 --default-parallelism=4 --databases fxdb1 > fxdb1.sql
      此时我们再看fxdb1.sql会发现里面引入了压缩:
    在这里插入图片描述
      那么我们需要对fxdb1.sql进行解压。
      Mysqlpump解决一致性问题也是–single-transactio

    mydumper

      mydumper是多线程的备份工具,单表也可以多线程备份。要使用mydumper的话需要下载。
      备份命令是mydumper,恢复命令是myloader。
      Mydumper是通过–outputdir参数把备份文件放到一个目录里,而不是像之前的mysqldump这些是存放到一个sql文件中:
      mydumper -uroot -p123456 –database fxdb1 –outputdir fxdb1
      这里变成了database而不是之前的databases,说明只可以一个数据库进行备份。就是把fxdb1数据库备份到fxdb1这个目录中。在这个目录中包含多个sql文件(metadata文件、每一张表都会对应两个sql文件表结构文件和表数据文件、数据库结构文件)。这里特别注意的是还有一个metadata文件,这里面记录的是点位信息:
    在这里插入图片描述
      当然,使用mudumper也可以备份所有的数据库,也就是我加 --database这个参数,默认的是备份所有数据库。他跟前面的mysqldump就不一样,mysqldump可以指定备份哪些数据库,这个要么备份一个,要么备份全部。如果非要用mydumper备份指定的哪些数据库,则可以用–regex来写正则表达式实现。
      如果要备份数据库中的一些表,则使用–tables-list 表名1,表名2
      对于mydumper,要解决一致性问题,使用–less-locking参数来解决。
      如果用mydumper来恢复表,则进入到目录然后再mysql中通过source命令来执行表结构的sql来创建表。
    在这里插入图片描述
      Verbose是输出信息模式。

      以上三种都可以进行增量恢复

    (2)物理备份

      要使用物理备份,首先要让主库的数据高可用,也就是持久化。redolog他是以页为单位记录一页行的变化,他不会记录每一条sql语句是Insert还是update,所以redolog的大小很小。任何的数据库操作都要遵循“日志先行”,这里的日志就是指的redolog:也就是说当我们主库insert后,要保证数据库的高可用,肯定要持久化,但是面对大量的数据,你去insert或者update开销很大,所以此时不能用数据做到同步,我们去同步的是redolog,让redolog先落地(可能存内存,也可能持久化到硬盘上),因为redolog很小,当内存足够时他就放到内存中,已经记录了的redolog在内存足够时不会被删除,这种redolog叫做脏页,就是已经同步过的有效数据,当内存满了再把这些redolog持久化到硬盘上。而对于数据而言,就是通过异步方式落地数据的。所以在我们执行数据库操作时,他一般有两个线程,一个线程记录变化的redolog,另一个线程记录.idb文件。当这些数据记录好后,就可以开始我们的物理备份。
      物理备份的原理和redolog息息相关,当开始物理备份的时候,XtraBackup会开两个线程,一个线程用来一页一页的复制innodb的数据,并且不锁定表。同时,另一个线程用来监控redolog,一旦redolog发生变化就立即把变化过的那一页复制走,因为redolog有大小限制,一旦写满后就会从头再开始写,所以新数据可能会覆盖旧的数据。
      物理备份速度快,但占用空间大,因为是整个库的文件的备份,mysql读数据读的都是文件因此在还原的时候就是把文件还原,让mysql去读文件就好,就不像逻辑备份那样一条条执行sql语句存到文件里。

    Xtrabackup

      物理备份工具是Xtrabackup,它能对InnoDB数据库和XtraDB存储引擎的数据库地备份(不用像MyISAM那样锁表),mysqldump等逻辑备份最大的缺陷是备份和恢复速度较慢。
      物理备份Xtrabackup支持对innodb进行热备、增量备份,mysqldump这些逻辑备份不能做到增量备份,只能做到增量恢复。但是Xtrabackup只能对myisam进行温备,因为在b欸分myisam表时会给myisam表添加读锁,而且不能对myisam表进行增量备份,每次备份myisam数据都是全量(毕竟锁表后就没有增量了)。
      物理备份备份的是整个数据库,不能单独对某一个库某一张表进行备份了。
      Xtrabackup –user=root --password=123456 --backup full(目录)
      此时会产生一个full的文件夹,进入文件夹就会有很多我们数据库备份文件。

      总而言之,逻辑备份备份的是sql文件,在恢复的时候执行备份的sql语句实现数据库数据的重现。而物理备份则是备份数据文件了。

    全库恢复

      命令有两个要执行才能实现全库恢复:
      ① Xtrabackup --apply-log --user-memory=32m full(之前备份的目录)
      ② Xtrabackup --copy-backup full
      一般情况下,再备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已提交但尚未同步到数据文件中的事务。因此此时数据文件仍处于不一致状态。因此此时我们需要用到命令①来避免上面的问题。
      --apply-log的作用是通过回滚未提交的事务以及同步已经提交的事务至数据文件使数据文件处于一致性状态。
      命令②就是进行复制恢复。
      此时我们主库就被恢复了,但还没完,我们需要进行增量恢复,毕竟我们只是备份了执行备份命令时的那些数据,此时主库可能又执行了很多。因此需要通过查看full文件夹里面的log日志和宕机时主库的log日志进行对比来实现增量恢复(日志先行,主库宕机了但是主库的binlog落地到磁盘里了的,可以从磁盘里找)。
      我们可以使用以下命令把binlog日志转成sql文件然后进行恢复:
      mysqlbinlog --start-position=154 mysql-bin.00011 > inc.sql
      Start-position=154是说从154这个位置开始同步,可以查看full文件夹里面的binlog_pos_innodb这个文件来得到:
    在这里插入图片描述

    增量备份

      增量备份的命令:
      Xtrabackup –user=root --password=123456 --incremental-basedir=full --incremental inc
      上面的命令的意思是在我们之前做的全备份的这个目录full下做增量备份,备份的文件放到inc这个文件夹里。
      所以增量备份其实就是把多出来的部分进行备份而已,没啥高大上的。
      我们可以在备份的文件夹里查看xtrabackup_checkpoints文件可以得到备份详情:
    在这里插入图片描述
      Backup_type为备份类型:incremental为增量备份。From_lsn

    展开全文
  • 请放心下载,良心实战EMC network备份恢复手册,涉及存储,数据库,MML,介质的安装,配置。
  • 冷热备份_恢复.txt

    2020-09-08 10:20:05
    oracle冷热备份_恢复.txt冷热备份_恢复.txt冷热备份_恢复.txt冷热备份_恢复.txt冷热备份_恢复.txt
  • 第13章 使用Oracle企业管理器实现备份和恢复操作 第14章 RMAN的高级恢复主题 第15章 从用户错误中恢复闪回技术 第16章 RMAN维护 第17章 RMAN的监控报告 第18章 调整RMAN备份恢复操作的性能 第Ⅳ部分 Oracle生态...
  • mysql数据库数据备份恢复

    万次阅读 2018-11-15 21:25:44
    1、通过物理拷贝备份恢复  对MyISAM引擎的表来说:如果当前此表在拷贝过程中没有任何写操作时,可以直接拷贝,对单张表拷贝时只需把把表相关的三个以.frm,.MYD,.MYI结尾的文件拷贝到另外的数据库实例对应的...

    1、通过物理拷贝备份与恢复

             对MyISAM引擎的表来说:如果当前此表在拷贝过程中没有任何写操作时,可以直接拷贝,对单张表拷贝时只需把把表相关的三个以.frm,.MYD,.MYI结尾的文件拷贝到另外的数据库实例对应的数据库目录下即可。

             对InnoDB表来说:即使是innodb_file_per_table=on的情况下直接拷贝与表相关的两个文件到目标实例下不行,但可以通过拷贝整个数据目录到目标实例的数据目录下的方式来完成备份和恢复。

    2、通过mydump工具实现备份与恢复

    (1)通过mydump备份数据

    备份的语句格式:mysqldump [options] db_name [tbl_name ...]

                                 mysqldump [options] --databases db_name ...

                                 mysqldump [options] --all-databases

    options中选项:

             --host=host_name(h host_name):指定要导出的目标数据库所在的主机,默认是localhost

             --user=user_name(-u user_name):指定链接目标数据库的数据库用户名

             --password[=password](-p[password]):指定链接目标数据库的数据库密码

             --port=port_num(-P port_num):指定链接目标数据库的端口

             --all-databases(-A):参数代表导出所有数据库里的所有的表

    # 导出所有的数据库
    ]# mysqldump -uroot -p --all-databases > backup.sql

             --databases(-B):参数代表导出指定的一个或多个数据库

    # 导出一个数据库
    ]# mysqldump -uroot -p --databases course >course.sql
    # 同时导出多个库
    mysqldump -uroot -p --databases course test >mysqlbackup.sql

             --add-drop-database:表示在使用--databases或者是--all-databases参数时在每个create database命令前都加上drop database的命令

             --add-drop-table:表示在每个create table命令前加上drop table命令

             --add-drop-trigger:表示在每个create trigger命令前加上drop trigger命令

             --replace:表示使用replace命令插入数据而不是使用insert命令

             --default-character-set=charset_name:指定默认的字符集,默认是UTF8

             --set-charset:表示将SET NAMES default_character_set命令写入到导出备份文件中,默认是开启状态

             --dump-slave[=value]:表示从复制的slave从库导出备份,且其中包含了change master to语句,则利用此备份文件可以直接建立另一个复制从库。value参数如果不写或者=1的情况下,则change master to语句写入到dump文件中,如果设置=2则代表也写入到dump文件中,只是会注释掉

    # 从从库上备份
    ]# mysqldump -uroot -p --dump-slave --single-transaction course >course.sql

             --master-data[=value]:表示从复制的主库上导出备份,和--dump-slave参数配置类似,可以利用此备份文件直接建立另一个复制从库。其value的取值含义也和dump-slave相同。使用该参数会自动打开—lock-all-table参数,除非同时使--single-transaction参数

    # 从主库备份此备份方式会在备份开始之初在所有表上加一个只读锁(FLUSH TABLES WITH READ LOCK),当成功获取了该锁并开始备份之后,此锁就会立即释放。而后续的dump过程中不会影响其他的读写操作
    ]# mysqldump -uroot -p --master-data=2 --single-transaction course >course.sql

             --tab=dir_name(-T dir_name):参数表示将备份文件以文本文件的方式生成,dir_name指定了存放的文件路径,每个表会生成两个文件,一个是.sql文件保存的表结构信息,一个是.txt文件保存的表数据信息,但是需要在my.cnf中先配置secure_file_priv=/usr/local/mysql/backup/参数。以文本的方式导出时还可以加入以下的参数

                       --fields-terminated-by=str参数指定每个字段值之间的间隔符,默认是tab

                       --fields-enclosed-by=char参数指定每个字段值使用什么字符括起来,默认是没有

                       --fields-optionally-enclosed-by=char参数指定对每个非数字类型的字段值使用什么       字符括起来,默认没有

                       --lines-terminated-by=str参数指定行之间的结束符,默认是newline

    # 以文本方式导出数据库
    ]# mysqldump -uroot -p --tab=/tmp/ course
    # 导出时指定分隔符等
    ]# mysqldump -uroot -p --tab=/tmp/ --fields-terminated-by="===" --fields-enclosed-by="\"" test
    ]# cat test_index01.txt 
    "4"==="DBMS stands for DataBase ..."===\N
    "5"==="After you went through a ..."===\N
    "6"==="In this tutorial we will show ..."===\N

             --ignore-table=db_name.tbl_name:代表导出过程中忽略某个指定表的导出,如果要忽略多个表则这个参数要使用多次

    # 导出course库中除了student_bak表外的所有表结构及数据
    ]# mysqldump -uroot -p --ignore-table course.student_bak course > nostubak_course.sql

             --no-data(-d):参数代表不要导出数据,只导出表结构

    # 仅导出表结构不导出数据
    ]# mysqldump -uroot -p --no-data course > nodata_course.sql

             --no-create-info:仅导出数据不导出表结构

    # 仅导出数据不导出表结构
    ]# mysqldump -uroot -p --no-create-info course > course.sql

             --routines(-R):参数代表也要把存储过程和函数导出来

             --triggers:参数代表也要将触发器导出来

    # 导出course库中的存储过程和触发器
    ]# mysqldump -uroot -p --routines --triggers course >course_rt.sql

             --where='where_condition'(-w ‘where_condition’):参数代表仅导出符合条件的数据

    # 导出student表中sid小于5的数据
    ]# mysqldump -uroot -p --where="sid < 5" course student >course.student.sql
    # 导出student表中sid为5或者6的数据
    mysqldump -uroot -p --where="sid in (5,6)" course student >course.student.sql

             --lock-all-tables(-x):参数代表在导出过程中对每个数据库的每个表加上一个只读锁

             --no-autocommit:参数代表对每个表的数据导出内容用set autocommit=0和commit两个语句包围

             --single-transaction:参数代表将事务隔离级别设置为可重复读并在导出开始时执行start transaction开启一个新的事务,在dump的执行过程中也不会阻止任何的读写操作

    # 备份时开启一个新的事务
    ]# mysqldump -uroot -p --master-data  --single-transaction  course >course.sql

    导出命令的其他用法:

    # 导出course库中的一个表
    ]# mysqldump -uroot -p course student >course.student.sql

    (2)FLUSH TABLES WITH READ LOCK

             FLUSH TABLES WITH READ LOCK简称(FTWRL),该命令主要用于备份工具获取一致性备份(数据与binlog位点匹配)。由于FTWRL总共需要持有两把全局的MDL锁,并且还需要关闭所有表对象,因此这个命令的杀伤性很大,执行命令时容易导致库hang住。

             FTWRL主要包括3个步骤分别是:上全局读锁(lock_global_read_lock),上全局读锁会导致所有更新操作都会被堵塞、清理表缓存(close_cached_tables)、上全局COMMIT锁(make_global_read_lock_block_commit) ,上全局COMMIT锁时,会堵塞活跃事务提交。

    (3)记录导出的具体逻辑

             打开在mysql的配置文件中配置gerenal_log的相关参数,可以记录导出过程的具体逻辑,配置如下:

    # 修改配置文件记录导出过程的具体逻辑
    general_log=on
    # 记录的文件存放位置
    general_log_file=/usr/local/mysql/data/general_log

    (4)备份的导入

             1)通过mysql命令导入

    # 通过mysql命令导入
    ]# mysql -uroot -p <test.sql

             2)通过source命令导入

    # 进入备份文件存放目录下
    ]# cd /data/mysql/backup
    # 通过source命令导入备份
    mysql> source test.sql;

             3)文本文件的导入

             对于文本文件的导入,分为两步,先要导入表结构,再导入文件,表结构文件的导入可以使用”mysql test < test.sql”或者source命令导入,数据文件的导入可以使用mysqlimport或者load data infile命令。

    # 先导入表结构
    ]# mysql -uroot -p test <test_index01.sql
    # 再导入数据
    ]# mysqlimport -uroot -p --fields-terminated-by="===" --fields-enclosed-by="\"" test /tmp/test_index01.txt

             通过load data infile命令导入

    # 登录mysql数据库,切换到test库,导入表结构
    mysql> source test_index02.sql;
    # 导入数据
    mysql> load data infile "/tmp/test_index02.txt" into table test_index02 FIELDS TERMINATED BY "===" ENCLOSED BY "\"";

    3、基于时间点的数据的恢复

             基于时间点的恢复是将数据库恢复到指定的时间点状态,通常是先通过全量恢复的方式先将数据库恢复到上一个全量恢复的时间点,然后再利用二进制日志恢复到指定的时间点。

    (1)binglog日志的查看与执行

             Mysqlbinlog工具可以用来解析二进制日志的内容,让日志可以被执行或者是查看

    在数据库中重新执行某个二进制日志文件中的内容,可以使用如下命令:

    # 执行binglog日志
    ]# mysqlbinlog /data/mysql/data/mysql-bin.000014 | mysql -uroot –p
    ]# mysqlbinlog /data/mysql/data/mysql-bin.000012 /data/mysql/data/mysql-bin.000013 | mysql -uroot –p
    # 对binglog日志的导出也可先将日志识别导出到文件,在导入到数据库
    ]# mysqlbinlog /data/mysql/data/mysql-bin.000011 > testsql.sql
    ]# mysql -uroot -p <testsql.sql

    (2)根据时间段恢复数据

             如果是恢复某个日志文件中的一部分内容,可以通过指定—start-datetime或者是—stop-datetime参数来确定开始恢复时间和停止恢复时间。

    # 跳过某个时间段恢复数据
    ~]# mysqlbinlog --stop-datetime="2018-11-07 20:19:04" /data/mysql/data/mysql-bin.000013|mysql -uroot -p 
    ~]# mysqlbinlog --start-datetime="2018-11-08 03:41:04" /data/mysql/data/mysql-bin.000013|mysql -uroot -p

    (3)依据日志点恢复数据

             基于binglog日志恢复数据时也可以通过设置--start-position和--stop-position两个参数指定开始位置和结束位置恢复数据。

    # 从某个点开始恢复
    ]# mysqlbinlog --start-position=194 /data/mysql/data/mysql-bin.000014|mysql -uroot -p

    4、通过Select … into语句导入与导出语句

    (1)导出数据

             select … into outfile命令可以用来导出表中符合条件的数据到文本文件,不会导出表结构,仅用来导出数据。

             语句格式:select * from Table into outfile '/PATH/filename' fields terminated by ',' enclosed by '"' lines terminated by ‘\r\n'

             各字段说明:

                       TERMINATED BY:用于指定字段值之间的符号

                       ENCLOSED BY:用来指定包裹文件中字符值的符号

                       ESCAPED BY:用来指定转义字符

    # 将查询的数据导入到文本文件中
    mysql> select * from test_index01 into outfile "/tmp/test01.txt" fields terminated by ',' enclosed by '"' lines terminated by '\r\n';

    (2)导入数据

             使用select … into outfile导出的文本文件,可以通过load data infile命令导入到表里,导入语句如下:

             load data  [low_priority] [local] infile 'file_name txt' [replace | ignore]

             into table tbl_name

             [fields

             [terminated by't']

             [OPTIONALLY] enclosed by '']

             [escaped by'\' ]]

             [lines terminated by'n']

             [ignore number lines]

             [(col_name,   )]

    各字段说明:

             terminated by:指定分隔符

             enclosed by:字段括起字符

             escaped by:转义字符

             terminated by:描述字段的分隔符,默认情况下是tab字符(\t)

             enclosed by:描述的是字段的括起字符。

             escaped by:描述的转义字符。默认的是反斜杠(backslash:\ ) 

             lines:指定了每条记录的分隔符默认为'\n'即为换行符

             local: 如果指定local关键词,则表明从客户主机读文件。如果local没指定,文件必须位于服务器上

             replace和ignore关键词控制对现有的唯一键记录的重复的处理

    # 导入备份的数据
    mysql> load data infile '/tmp/test01.txt' into table test_index01 fields terminated by ',' enclosed by '"' lines terminated by '\r\n';

    5、通过Xtrabackup备份恢复数据

             Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),Xtrabackup有两个主要的工具:xtrabackup、innobackupex,其中xtrabackup只能备份InnoDB和XtraDB两种数据表,innobackupex则封装了xtrabackup,同时可以备份MyISAM数据表。Xtrabackup做备份的时候不能备份表结构、触发器等。

    (1)Xtrabackup的特点

             1)备份过程快速、可靠;

             2)备份过程不会打断正在执行的事务;

             3)能够基于压缩等功能节约磁盘空间和流量;

             4)自动实现备份检验;

             5)还原速度快

    (2)Xtrabackup的安装

             Xtrabackup下载地址:https://www.percona.com/downloads/XtraBackup/LATEST/

             Xtrabackup提供了多种安装方式,使用二进制包安装,只需将xtrabackup下载下来将二进制包拷贝至二进制文件目录”/usr/ bin”下即可。

    # 下载二进制面编译安装包
    ]# wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.8/binary/tarball/percona-xtrabackup-2.4.8-Linux-x86_64.tar.gz
    # 解压并将可执行文件拷贝至相应目录
    ]# tar -xf percona-xtrabackup-2.4.8-Linux-x86_64.tar.gz
    ]# cp percona-xtrabackup-2.4.8-Linux-x86_64/bin/* /usr/bin/

    (3)使用Xtrabackup进行全量备份与恢复

             全量备份:

    # 备份所有的库
    ]# xtrabackup --backup --target-dir=/data/mysql/backup/ -uroot -pdayi123 -P 3306 --host=127.0.0.1

             全量恢复:

             恢复过程中首先要执行prepare,将所有的数据文件都准备到同一个时间点,因为在备份过程中所有的数据文件备份都是在不同的时间点,如果直接启动可能会导致冲突。

    # 恢复前将所有数据准备到同一个时间点
    ]# xtrabackup --prepare --target-dir=/data/mysql/backup
    # 恢复数据
    ]# xtrabackup --copy-back --target-dir=/data/mysql/ --datadir=/data/mysql/data/
    # 确保回复后的数据的权限为mysql
    ]# chown mysql:mysql /data/mysql/data –R
    # 回复后启动mysql
    ]# /etc/init.d/mysqld start

    (4)使用Xtrabackup进行增量备份与恢复

             增量备份:

    # 先进行一次增量备份
    ]# xtrabackup --backup --target-dir=/data/mysql/backup/20181115_LVO/ -uroot -pdayi123 -P 3306 --host=127.0.0.1
    # 基于全量备份的增量备份
    ]# xtrabackup --backup --target-dir=/data/mysql/backup/20181116_LV1/ --incremental-basedir=/data/mysql/backup/20181115_LVO/ -uroot -pdayi123 -P 3306 --host=127.0.0.1
    # 基于上一次增量备份的增量备份
    ]# xtrabackup --backup --target-dir=/data/mysql/backup/20181117_LV2/ --incremental-basedir=/data/mysql/backup/20181116_LV1/ -uroot -pdayi123 -P 3306 --host=127.0.0.1

             增量备份的恢复大体为3个步骤:恢复完全备份——>恢复增量备份到完全备份(开始恢复的增量备份要添加--redo-only参数,到最后一次增量备份去掉--redo-only参数)——>对整体的完全备份进行恢复,回滚那些未提交的数据。

    # 恢复完全备份,并通过--redo-only参数应用xtrabackup日志中已提交的事务数据,不回滚还未提交的数据
    ]# xtrabackup --prepare --apply-log-only --target-dir=/data/mysql/backup/20181115_LVO/ --datadir=/data/mysql/data
    ]# xtrabackup --prepare --apply-log-only --target-dir=/data/mysql/backup/20181115_LVO/ --incremental-dir=/data/mysql/backup/20181116_LV1/ --datadir=/data/mysql/data
    # 将两份增量备份引用到完全备份
    ]# xtrabackup --prepare --apply-log-only --target-dir=/data/mysql/backup/20181115_LVO/ --incremental-dir=/data/mysql/backup/20181117_LV2/ --datadir=/data/mysql/data
    # 使用全备恢复数据
    ]# xtrabackup --copy-back --target-dir=/data/mysql/backup/20181115_LVO/ --datadir=/data/mysql/data
    # 更改数据目录权限为mysql
    ]# chown mysql:mysql /data/mysql/data -R

    (5)使用innobackupex进行全量备份与恢复

             全量备份:

    # 使用innobackupex进行全量备份
    ]# innobackupex --user=root --password=dayi123 --host=127.0.0.1 --port=3306 /data/mysql/back/

             全量备份恢复:

    # 生成ib_logfile文件        
    ]# innobackupex --apply-log --user=root --password=dayi123 --host=127.0.0.1 /data/mysql/back/2018-11-09_04-43-50/
    #还原数据到mysql的数据目录,确保在my.cnf中设置datadir
    ]# innobackupex --copy-back --user=root --password=dayi123 --host=127.0.0.1 /data/mysql/back/2018-11-09_04-43-50/
    # 修改数据目录权限
    ]# chown mysql:mysql /data/mysql/data –R
    # 启动mysql
    ]# /etc/init.d/mysqld start

    (6)使用innobackupex进行增量备份与恢复

             使用增量备份时,首先要有一个全量备份:

    # 先进行一次全量备份
    ]# innobackupex --user=root --password=dayi123 --host=127.0.0.1 --port=3306 /data/mysql/back/
    # 基于全量备份的增量备份
    ]# innobackupex --user=root --password=dayi123 --host=127.0.0.1 --incremental-basedir=/data/mysql/back/2018-11-09_05-30-52/ --incremental /data/mysql/back/
    # 基于上次增量备份进行增量备份
    ]# innobackupex --user=root --password=dayi123 --host=127.0.0.1 --incremental-basedir=/data/mysql/back/2018-11-09_05-39-07/ --incremental /data/mysql/back/

             增量备份的恢复:

    # 准备基础的全量备份
    ]# innobackupex --apply-log --redo-only /data/mysql/back/2018-11-09_05-30-52/
    # 准备增量备份1
    ]# innobackupex --apply-log --redo-only /data/mysql/back/2018-11-09_05-30-52/ --incremental-dir=/data/mysql/back/2018-11-09_05-39-07/
    # 准备增量备份2,最后一个增量备份恢复不需要指定—redo-only
    ]# innobackupex --apply-log /data/mysql/back/2018-11-09_05-30-52/ --incremental-dir=/data/mysql/back/2018-11-09_05-40-55/
    # 把所有的备份放在一起,准备全部备份来回滚暂停的事务
    ]# innobackupex --apply-log /data/mysql/back/2018-11-09_05-30-52/
    # 恢复数据
    ]# innobackupex --copy-back --user=root --password=dayi123 --host=127.0.0.1 /data/mysql/back/2018-11-09_05-30-52/
    # 修改mysql数据目录的权限并启动mysql
    ]# chown mysql:mysql /data/mysql/data –R
    ]# /etc/init.d/mysqld start

     

     

     

    展开全文
  • 它被设计为Kafka Connect的两个连接器:一个接收器连接器(备份数据)一个源连接器(恢复数据)。 目前, kafka-backup支持备份到文件系统从文件系统还原。 特征 备份和还原主题数据 备份和还原消费者组偏移量...
  • Oracle数据库进阶 高可用性、性能优化和备份恢复,很不错的一本书,推荐
  • TFS备份恢复非常复杂,借助TFS power tools能做到方便的学习。
  • 课程名称数据备份恢复知识点使用MySqlDump备份和 恢复MySql数据库四川邮电职业技术学院 代一帆 一使用mysqldump备份和恢复1.1 使用mysqldump备份 首先在MySql官方网站去下载数据库文件压缩文件解压缩以后可以把...
  • PostgreSQLBarman,备份和恢复管理器 Barman(备份和恢复管理器)是一个开源管理工具,用于以Python编写的PostgreSQL服务器的灾难恢复。 它使您的组织可以在关键业务环境中对多台服务器执行远程备份,以降低风险并在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 98,818
精华内容 39,527
关键字:

备份和恢复下载