精华内容
下载资源
问答
  • Mysql常用备份策略

    2019-12-10 18:02:29
    Mysql常用备份策略

    Mysql常用的备份策略

    1、备份类型划分

    • 物理备份和逻辑备份
      物理备份是直接操作数据目标,复制移动数据目录、数据文件进行备份,相比逻辑备份具有更快的速度,但是移植性更低,常用的备份工具有: mysqlbackup备份 InnoDB 和其他表格,以及系统命令:cp, scp, tar, rsync等备份MyISAM表格。
      逻辑备份通过查询数据库结构和内容进行备份,因此比物理备份更慢,但有更好的可移植性。常用的逻辑备份命令有:mysqldump软件,以及 SELECT … INTO OUTFILE 语句。
    • 在线备份和离线备份
      在线备份又叫热备份,是在不停机的情况下备份数据,此时要注意给备份的数据加锁,防止备份数据被修改而造成错乱。离线备案又叫冷备份,是在mysql服务器停机的转态下进程数据备份。
    • 本地备份和远程备份
      本地备份是在mysql服务器主机执行备份,而远程备份是在远程主机执行备份。mysqldump 可以连接到本地或者远程主机。对于SQL输出,本地和远程都可以在客户端输出,然而非标准的文件输出只能在本地主机创建。SELECT … INTO OUTFILE 命令可以在本地或远程主机发起,但只输出在本地主机。
    • 快照备份
      依赖于第三方解决方案,如:Veritas, LVM, or ZFS。
    • 全备份和增量备份
      全备份是指备份某个时间点数据库的数据,增量备份是指备份某个时间跨度里数据的变更。增量备份的实现依赖于mysql服务器的二进制日志。

    2、备份方法

    • Making a Hot Backup with MySQL Enterprise Backup
      用mysql企业版备份工具进行热备份。官方文档

    • 用mysqldump工具备份
      mysqldump 软件可以备份所有类型的表格。

    • 复制表格文件进行备份
      MyISAM可以通过拷贝表格文件来备份,为了获得一致性的数据,备份时可以关闭数据库或者加锁且flush相应的表格:

    FLUSH TABLES tbl_list WITH READ LOCK;

    • 备份为带分隔符的文本文件
      用SELECT * INTO OUTFILE ‘file_name’ FROM tbl_name 语句在本地生成备份文件,需要注意的是输出文件名不能是已经存在的文件;另一种输出备份文本的方式是用带–tab选项的mysqldump命令。加载带分隔符的文本数据可以用 mysqlimport 命令。
    • 开启二进制日志实现增量备份
    • 利用复制的从服务器实现备份
    展开全文
  • 一、数据分级: 核心数据,重要数据,普通数据,可丢失数据 二、保存介质: 1.网络:网页blog,百度网盘 2.电子设备:移动硬盘,电脑,手机 3.纸档 4.记忆 三、核心数据至少三份保存 四、定期转存 ...

    一、数据分级:

    核心数据,重要数据,普通数据,可丢失数据

    二、保存介质:

    1.网络:网页blog,网盘
    2.电子设备:硬盘,电脑,手机
    3.纸档
    4.记忆

    三、核心数据至少三份保存

    四、定期转存,时时清理

    展开全文
  • 1 、Oracle数据库常见备份策略之操作系统备份 Oracle数据库常见备份策略中的操作系统备份和恢复实施起来比较简单,当然也比较费时,要求系统停止使用,此过程包括关闭数据库并从系 统上注销所有用户。所有访问被解除...

    1 、Oracle数据库常见备份策略之操作系统备份

    Oracle数据库常见备份策略中的操作系统备份和恢复实施起来比较简单,当然也比较费时,要求系统停止使用,此过程包括关闭数据库并从系 统上注销所有用户。所有访问被解除之后,系统关闭并以单用户方式重新启动,控制权交给系统管理员,这一步确保没有用户应用程序软件运行,避免修改硬盘上的 数据。如果这个Oracle数据库常见备份策略用于恢复数据库系统,那么系统配置、用户数据、用户文件在备份后的所有改动都将丢失。步骤如下:

    (1). 关闭全体

    先关闭所有应用程序,然后关闭Oracle Rdbms,如果在多用户环境下,关闭系统并以单用户方式启动数据库系统。

    (2). 备份所有文件

    在单用户方式下,利用操作系统实用工具将所有磁盘数据备份(可备份到另外的磁盘或磁带上)。

    (3). 启动系统

    在多用户方式下启动系统,启动Oracle数据库并打开它,允许应用程序访问。

    2、Oracle数据库常见备份策略之数据库冷备份

    即以正常方式关闭Oracle数据库,并备份所需的全部Oracle数据库文件,这种备份也称为脱机备份。与操作系统备份不同的是这种 Oracle数据库常见备份策略仅仅只备份与Oracle相关的一部分文件。在关闭数据库之前关闭所有可能修改Oracle文件的任何内部和第三方软件也 很重要。步骤如下:

    (1). 关闭Oracle

    关闭在Oracle上运行的所有与Oracle相关的内部或第三方软件,然后以正常方式关闭

    Oracle Rdbms。

    (2). 备份所需的Oracle文件

    备份Oracle可执行文件、代码、配置文件和控制文件,备份所有Oracle数据文件和脱

    机重做日志文件。

    (3). 以正常方式启动Oracle

    一个简单的数据库冷备份脚本coldback.sql如下:

    sys/shanllow as sysdba;

    shutdown immediate;

    host copy e:/oracle9i/oradata/oemrep/*.* d:/backup/coldback;

    startup;

    Oracle数据库常见备份策略冷备份的优点是:

    (1). 容易归档(简单拷贝即可)。

    (2). 容易恢复到某个时间点上(只需将文件再全部拷贝回去)。

    (3). 低度维护,高度安全。

    但冷备份也有如下不足:

    (1). 单独使用时,只能提供到“某一时间点上”的恢复。

    (2). 在实施备份的全过程中,数据库必须只能作备份而不能作其它工作。也就是说,在冷备份过程中,数据库必须是关闭状态。

    (3). 若磁盘空间有限,只能拷贝到磁带等其它外部存储设备上,速度会很慢。

    (4). 不能按表或按用户恢复。

    3、 Oracle数据库常见备份策略之数据库热备份

    当Oracle数据库处于打开状态,并运行在archivelog模式下可采用热备份,这种备份也称联机备份,即在备份的时候数据库仍然可 以正常使用。在进行实例恢复的时候,可能需要用到归档日志。当前联机日志一定要保护好或是处于镜像状态,当前联机日志的损坏,对于数据库的损坏是巨大的, 那样的话只能以数据的丢失来进行数据库的恢复工作即只能实现不完全恢复。下面介绍对某一个表空间和控制文件、日志文件进行Oracle数据库常见备份策略 中的热备份的步骤如下:

    (1). 进行表空间的联机备份

    (2). 备份归档重做日志

    (3). 备份控制文件

    其脚本hotback.sql如下:

    alter system archive log current;

    alter tablespace users begin backup;

    host copy e:/oracle9i/oradata/oemrep/users01.dbf to d:/backup/hot;

    alter tablespace users end backup;

    alter database backup controlfile to 'd:/backup/controlbinbak.000';

    alter database backup controlfile to trace;

    alter system archive log current.

    Oracle数据库常见备份策略之热备份的优点是显而易见的:

    (1). 可在表空间或数据文件级备份,可选择的余地大,性能也好。

    (2). 备份时数据库仍可使用,有些故障下进行恢复时数据库也可正常使用,这对于24*7

    小时不停机的大型应用来说相当重要。

    (3). 可恢复到某一时间点上。

    (4). 可对几乎所有数据库实体作恢复。

    (5). 备份时间短,恢复时间也短。

    热备份相对于其他Oracle数据库常见备份策略的不足是:

    (1). 在大量更新批作业运行时备份一个数据库的效率不高,因为在热备份模式下数据文件将产生许多重做记录。

    (2). 难以维护,不允许失败,失败后难以恢复。

    4、 Oracle数据库常见备份策略之逻辑备份

    逻辑备份创建数据库对象的逻辑拷贝,并将拷贝存入一个二进制文件,逻辑备份只备份数据库中的数据而不记录数据的位置。在执行对数据库的导出 工作的时候不能对数据库做任何改变,可以通过使用restrict模式打开数据库并导出数据库来实现这个目的。逻辑备份通常比物理备份要花更多的时间。

    利用Oracle提供的工具Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据导入到Oracle数据库中去。Oracle提供的Export和Import具有三种不同的操作方式:

    (1). 表方式:可以将指定的表导出备份。

    如 exp scott/tiger tables=xixi, rows=y导出表xixi。

    (2). 全库方式:将数据库中的所有对象导出。

    如 exp “sys/shanllow as sysdba”。

    (3). 用户方式:可以将指定的用户相应的所有数据对象导出。

    在Oracle数据库常见备份策略逻辑备份方式中,提供了增量导出/导入功能,但是它只能是对整个数据库进行实施。增量导出又可以分为三种类别:

    (1). 完全增量导出(Complete Export)

    这种方式将把整个数据库文件导出备份,方法:

    exp system/manager inctype=complete file=20060401.dmp(为了方便检索和事后的查询,通常我们将备份文件以日期或者其它有明确含义的字符命名)。

    (2). 增量型增量导出(Incremental Export)

    这种方式将只会备份上一次备份后改变的结果,方法:

    exp system/manager inctype=incremental file=20060402.dmp

    (3). 累积型增量导出(Cumulate Export)

    这种方式的话,是导出自上次完全增量导出后数据库变化的信息。方法:

    exp system/manager inctype=cumulative file=20060403.dmp

    一般情况下,DBA们每周采用下面的方式进行Oracle数据库常见备份策略逻辑备份:

    星期一:完全备份 (A)

    星期二:增量导出 (B)

    星期三:增量导出 (C)

    星期四:增量导出 (D)

    星期五:累计导出 (E)

    星期六:增量导出 (F)

    星期日:增量导出 (G)

    这样,我们可以保证每周数据的完整性,以及恢复时的快捷和最小限度的数据损失。恢复的时候,假设事故发生在周末,DBA可按这样的步骤来恢复数据库:

    第一步:用SQL命令Create database重新生成数据库结构。

    第二步:完全增量导入A:

    imp system/manager inctype=RESTORE FULL=y FILE=A

    第三步:累计增量导入E:

    imp system/manager inctype=RESTORE FULL=Y FILE=E

    第四步:最近增量导入F:

    imp system/manager inctype=RESTORE FULL=Y FILE=F

    Oracle数据库常见备份策略逻辑备份的优点有:

    (1). 导出时可以检测到数据块损坏的情况。

    (2). 通过导入导出操作可以减少磁盘碎片。

    (3). 导出提供了极大的灵活性,可以选择需要导出的数据和定义,可以执行完全、增量或累积导出。

    (4). 对于一些特定的用户错误来说,恢复起来比物理备份更为快速高效。如,如果用户不小心删除了一个表,使用导入工具将以前的表数据恢复过来将比进行不完全恢复要容易得多。

    (5). 具备可移植性,可进行跨平台的迁移。如数据可从Oracle中迁移到SQL Server、Sybase等数据库中也可以从其它数据库中迁移回来。同时也可以用于数据库升级,直接将数据导入到Oracle的更新版本中。

    缺点:

    (1). 不能保护介质失败。

    (2). 使用逻辑备份时数据库必须处于打开状态。

    (3). 如果导出大量的数据,速度会非常慢,而且占用资源严重。

    以上就是本文向大家介绍的Oracle数据库常见备份策略的有缺点分析

     

     

    展开全文
  • 一、备份简介 2.1 备份分类 按照不同的思考维度,通常将数据库的备份分为以下几类: 物理备份 与 逻辑备份 物理备份备份的是完整的数据库目录和数据文件。采用该模式会进行大量的 IO 操作,但不含任何逻辑转换,...

    一、备份简介

    2.1 备份分类

    按照不同的维度,通常将数据库的备份分为以下几类:

    物理备份 与 逻辑备份

    • 物理备份:备份的是完整的数据库目录和数据文件。采用该模式会进行大量的 IO 操作,但不含任何逻辑转换,因此备份和恢复速度通常都比较快。
    • 逻辑备份:通过数据库结构和内容信息来进行备份。因为要执行逻辑转换,因此其速度较慢,并且在以文本格式保存时,其输出文件的大小大于物理备份。逻辑备份的还原的粒度可以从服务器级别(所有数据库)精确到具体表,但备份不会包括日志文件、配置文件等与数据库无关的内容。

    全量备份 与 增量备份

    • 全量备份:备份服务器在给定时间点上的所有数据。
    • 增量备份:备份在给定时间跨度内(从一个时间点到另一个时间点)对数据所做的更改。

    在线备份 与 离线备份

    • 在线备份:数据库服务在运行状态下进行备份。此时其他客户端依旧可以连接到数据库,但为了保证数据的一致性,在备份期间可能会对数据进行加锁,此时客户端的访问依然会受限。
    • 离线备份:在数据库服务停机状态下进行备份。此备份过程简单,但由于无法提供对外服务,通常会对业务造成比较大的影响。

    2.2 备份工具

    MySQL 支持的备份工具有很多种,这里列出常用的三种:

    • mysqldump:这是 MySQL 自带的备份工具,其采用的备份方式是逻辑备份,支持全库备份、单库备份、单表备份。由于其采用的是逻辑备份,所以生成的备份文件比物理备份的大,且所需恢复时间也比较长。
    • mysqlpump:这是 MySQL 5.7 之后新增的备份工具,在 mysqldump 的基础上进行了功能的扩展,支持多线程备份,支持对备份文件进行压缩,能够提高备份的速度和降低备份文件所需的储存空间。
    • Xtrabackup:这是 Percona 公司开发的实时热备工具,能够在不停机的情况下进行快速可靠的热备份,并且备份期间不会间断数据库事务的处理。它支持数据的全备和增备,并且由于其采用的是物理备份的方式,所以恢复速度比较快。

    二、mysqldump

    2.1 常用参数

    mysqldump 的基本语法如下:

    # 备份数据库或数据库中的指定表
    mysqldump [options] db_name [tbl_name ...]
    # 备份多个指定的数据库
    mysqldump [options] --databases db_name ...
    # 备份当前数据库实例中的所有表
    mysqldump [options] --all-databases
    

    options 代表可选操作,常用的可选参数如下:

    • –host=host_name, -h host_name

      指定服务器地址。

    • –user=user_name, -u user_name

      指定用户名。

    • –password[=password], -p[password]

      指定密码。通常无需在命令行中明文指定,按照提示输入即可。

    • –default-character-set=charset_name

      导出文本使用的字符集,默认为 utf8。

    • –events, -E

      备份包含数据库中的事件。

    • –ignore-table=db_name.tbl_name

      不需要进行备份的表,必须使用数据库和表名来共同指定。也可以作用于视图。

    • –routines, -R

      备份包含数据库中的存储过程和自定义函数。

    • –triggers

      备份包含数据库中的触发器。

    • –where=‘where_condition’, -w 'where_condition’

      在对单表进行导出时候,可以指定过滤条件,例如指定用户名 --where="user='jimf'" 或用户范围 -w"userid>1"

    • –lock-all-tables, -x

      锁定所有数据库中的所有表,从而保证备份数据的一致性。此选项自动关闭 --single-transaction--lock-tables

    • –lock-tables, -l

      锁定当前数据库中所有表,能够保证当前数据库中表的一致性,但不能保证全局的一致性。

    • –single-transaction

      此选项会将事务隔离模式设置为 REPEATABLE READ 并开启一个事务,从而保证备份数据的一致性。主要用于事务表,如 InnoDB 表。 但是此时仍然不能在备份表上执行 ALTER TABLE, CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE 等操作,因为 REPEATABLE READ 并不能隔离这些操作。

      另外需要注意的是 --single-transaction 选项与 --lock-tables 选项是互斥的,因为 LOCK TABLES 会导致任何正在挂起的事务被隐式提交。转储大表时,可以将 --single-transaction 选项与 --quick 选项组合使用 。

    • –quick, -q

      主要用于备份大表。它强制 mysqldump 一次只从服务器检索一行数据,避免一次检索所有行而导致缓存溢出。

    • –flush-logs, -F

      在开始备份前刷新 MySQL 的日志文件。此选项需要 RELOAD 权限。如果此选项与 --all-databases 配合使用,则会在每个数据库开始备份前都刷新一次日志。如果配合 --lock-all-tables--master-data--single-transaction 使用,则只会在锁定所有表或者开启事务时刷新一次。

    • –master-data[=value]

      可以通过配置此参数来控制生成的备份文件是否包含 CHANGE MASTER 语句,该语句中包含了当前时间点二进制日志的信息。该选项有两个可选值:1 和 2 ,设置为 1 时 CHANGE MASTER 语句正常生成,设置为 2 时以注释的方式生成。--master-data 选项还会自动关闭 --lock-tables 选项,而且如果你没有指定 --single-transaction 选项,那么它还会启用 --lock-all-tables 选项,在这种情况下,会在备份开始时短暂内获取全局读锁。

    2.2 全量备份

    mysqldump 的全量备份与恢复的操作比较简单,示例如下:

    # 备份雇员库
    mysqldump  -uroot -p --databases employees > employees_bak.sql
    
    # 恢复雇员库
    mysql -uroot -p  < employees_bak.sql
    

    单表备份:

    # 备份雇员库中的职位表
    mysqldump  -uroot -p --single-transaction employees titles > titles_bak.sql
    
    # 恢复雇员库中的职位表
    mysql> use employees;
    mysql> source /root/mysqldata/titles_bak.sql;
    

    2.3 增量备份

    mysqldump 本身并不能直接进行增量备份,需要通过分析二进制日志的方式来完成。具体示例如下:

    1. 基础全备

    1.先执行一次全备作为基础,这里以单表备份为例,需要用到上文提到的 --master-data 参数,语句如下:

    mysqldump -uroot -p --master-data=2 --flush-logs employees titles > titles_bak.sql
    

    使用 more 命令查看备份文件,此时可以在文件开头看到 CHANGE MASTER 语句,语句中包含了二进制日志的名称和偏移量信息,具体如下:

    -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000004', MASTER_LOG_POS=155;
    

    2. 增量恢复

    对表内容进行任意修改,然后通过分析二进制日志文件来生成增量备份的脚本文件,示例如下:

    mysqlbinlog --start-position=155 \
    --database=employees  ${MYSQL_HOME}/data/mysql-bin.000004 > titles_inr_bak_01.sql
    

    需要注意的是,在实际生产环境中,可能在全量备份后与增量备份前的时间间隔里生成了多份二进制文件,此时需要对每一个二进制文件都执行相同的命令:

    mysqlbinlog --database=employees  ${MYSQL_HOME}/data/mysql-bin.000005 > titles_inr_bak_02.sql
    mysqlbinlog --database=employees  ${MYSQL_HOME}/data/mysql-bin.000006 > titles_inr_bak_03.sql
    .....
    

    之后将全备脚本 ( titles_bak.sql ),以及所有的增备脚本 ( inr_01.sql,inr_02.sql … ) 通过 source 命令导入即可,这样就完成了全量 + 增量的恢复。

    三、mysqlpump

    3.1 功能优势

    mysqlpump 在 mysqldump 的基础上进行了扩展增强,其主要的优点如下:

    • 能够并行处理数据库及其中的对象,从而可以加快备份进程;

    • 能够更好地控制数据库及数据库对象(表,存储过程,用户帐户等);

    • 能够直接对备份文件进行压缩;

    • 备份时能够显示进度指标(估计值);

    • 备份用户时生成的是 CREATE USER 与 GRANT 语句,而不是像 mysqldump 一样备份成数据,可以方便用户按需恢复。

    3.2 常用参数

    mysqlpump 的使用和 mysqldump 基本一致,这里不再进行赘述。以下主要介绍部分新增的可选项,具体如下:

    • –default-parallelism=N

      每个并行处理队列的默认线程数。默认值为 2。

    • –parallel-schemas=[N:]db_list

      用于并行备份多个数据库:db_list 是一个或多个以逗号分隔的数据库名称列表;N 为使用的线程数,如果没有设置,则使用 --default-parallelism 参数的值。

    • –users

      将用户信息备份为 CREATE USER 语句和 GRANT 语句 。如果想要只备份用户信息,则可以使用下面的命令:

      mysqlpump --exclude-databases=% --users
      
    • –compress-output=algorithm

      默认情况下,mysqlpump 不对备份文件进行压缩。可以使用该选项指定压缩格式,当前支持 LZ4 和 ZLIB 两种格式。需要注意的是压缩后的文件可以占用更少的存储空间,但是却不能直接用于备份恢复,需要先进行解压,具体如下:

      # 采用lz4算法进行压缩
      mysqlpump --compress-output=LZ4 > dump.lz4
      # 恢复前需要先进行解压
      lz4_decompress input_file output_file
      
      # 采用ZLIB算法进行压缩
      mysqlpump --compress-output=ZLIB > dump.zlib
      zlib_decompress input_file output_file
      

      MySQL 发行版自带了上面两个压缩工具,不需要进行额外安装。以上就是 mysqlpump 新增的部分常用参数,完整参数可以参考官方文档:mysqlpump — A Database Backup Program

    四、Xtrabackup

    4.1 在线安装

    Xtrabackup 可以直接使用 yum 命令进行安装,这里我的 MySQL 为 8.0 ,对应安装的 Xtrabackup 也为 8.0,命令如下:

    # 安装Percona yum 源
    yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
    
    # 安装
    yum install percona-xtrabackup-80
    

    4.2 全量备份

    全量备份的具体步骤如下:

    1. 创建备份

    Xtrabackup 全量备份的基本语句如下,可以使用 target-dir 指明备份文件的存储位置,parallel 则是指明操作的并行度:

    xtrabackup --backup  --user=root --password --parallel=3  --target-dir=/data/backups/
    

    以上进行的是整个数据库实例的备份,如果需要备份指定数据库,则可以使用 --databases 进行指定。

    另外一个容易出现的异常是:Xtrabackup 在进行备份时,默认会去 /var/lib/mysql/mysql.sock 文件里获取数据库的 socket 信息,如果你修改了数据库的 socket 配置,则需要使用 --socket 参数进行重新指定,否则会抛出找不到连接的异常。备份完整后需要立即执行的另外一个操作是 prepare (准备备份)。

    2. 准备备份

    由于备份是将所有物理库表等文件复制到备份目录,而整个过程需要持续一段时间,此时备份的数据中就可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务,最终导致备份结果处于不一致状态。此时需要进行 prepare 操作来回滚未提交的事务及同步已经提交的事务至数据文件,从而使得整体达到一致性状态。命令如下:

    xtrabackup --prepare --target-dir=/data/backups/
    

    需要特别注意的在该阶段不要随意中断 xtrabackup 进程,因为这可能会导致数据文件损坏,备份将无法使用。

    3. 恢复备份

    由于 xtrabackup 执行的是物理备份,所以想要进行恢复,必须先要停止 MySQL 服务。同时这里我们可以删除 MySQL 的数据目录来模拟数据丢失的情况,之后使用以下命令将备份文件拷贝到 MySQL 的数据目录下:

    # 模拟数据异常丢失
    rm -rf /usr/app/mysql-8.0.17/data/*
    
    # 将备份文件拷贝到 data 目录下
    xtrabackup --copy-back --target-dir=/data/backups/
    

    copy-back 命令只需要指定备份文件的位置,不需要指定 MySQL 数据目录的位置,因为 Xtrabackup 会自动从 /etc/my.cnf 上获取 MySQL 的相关信息,包括数据目录的位置。如果不需要保留备份文件,可以直接使用 --move-back 命令,代表直接将备份文件移动到数据目录下。此时数据目录的所有者通常为执行命令的用户,需要更改为 mysql 用户,命令如下:

    chown -R mysql:mysql /usr/app/mysql-8.0.17/data
    

    再次启动即可完成备份恢复。

    4.3 增量备份

    使用 Xtrabackup 进行增量备份时,每一次增量备份都需要以上一次的备份为基础,之后再将增量备份运用到第一次全备之上,从而完成备份。具体操作如下:

    1. 创建备份

    这里首先创建一个全备作为基础:

    xtrabackup  --user=root --password --backup  --target-dir=/data/backups/base/
    

    之后修改库中任意数据,然后进行第一次增量备份,此时需要使用 incremental-basedir 指定基础目录为全备目录:

    xtrabackup  --user=root --password --backup  --target-dir=/data/backups/inc1 \
    --incremental-basedir=/data/backups/base
    

    再修改库中任意数据,然后进行第二次增量备份,此时需要使用 incremental-basedir 指定基础目录为上一次增备目录:

    xtrabackup  --user=root --password --backup  --target-dir=/data/backups/inc2 \
    --incremental-basedir=/data/backups/inc1
    

    2. 准备备份

    准备基础备份:

    xtrabackup --prepare --apply-log-only --target-dir=/data/backups/base
    

    将第一次备份作用于全备数据:

    xtrabackup --prepare --apply-log-only --target-dir=/data/backups/base \
    --incremental-dir=/data/backups/inc1
    

    将第二次备份作用于全备数据:

    xtrabackup --prepare --target-dir=/data/backups/base \
    --incremental-dir=/data/backups/inc2
    

    在准备备份时候,除了最后一次增备外,其余的准备命令都需要加上 --apply-log-only 选项来阻止事务的回滚,因为备份时未提交的事务可能正在进行,并可能在下一次增量备份中提交,如果不进行阻止,那么增量备份将没有任何意义。

    3. 恢复备份

    恢复备份和全量备份时相同,只需要最终准备好的全备数据复制到 MySQL 的数据目录下即可:

    xtrabackup --copy-back --target-dir=/data/backups/base
    # 必须修改文件权限,否则无法启动
    chown -R mysql:mysql /usr/app/mysql-8.0.17/data
    

    此时增量备份就已经完成。需要说明的是:按照上面的情况,如果第二次备份之后发生了宕机,那么第二次备份后到宕机前的数据依然没法通过 Xtrabackup 进行恢复,此时就只能采用上面介绍的分析二进制日志的恢复方法。由此可以看出,无论是采用何种备份方式,二进制日志都是非常重要的,因此最好对其进行实时备份。

    五、二进制日志的备份

    想要备份二进制日志文件,可以通过定时执行 cp 或 scp 等命令来实现,也可以通过 mysqlbinlog 自带的功能来实现远程备份,将远程服务器上的二进制日志文件复制到本机,命令如下:

    mysqlbinlog --read-from-remote-server --raw --stop-never \
    --host=主机名 --port=3306 \
    --user=用户名 --password=密码  初始复制时的日志文件名
    

    需要注意的是这里的用户必须具有 replication slave 权限,因为上述命令本质上是模拟主从复制架构下,从节点通过 IO 线程不断去获取主节点的二进制日志,从而达到备份的目的。

    参考资料

    更多文章,欢迎访问 [全栈工程师手册] ,GitHub 地址:https://github.com/heibaiying/Full-Stack-Notes

    展开全文
  • oracle 常用的备份方式及备份策略 备份 冷备份 热备份 逻辑备份 备份策略
  • ClearCase的备份策略

    2021-02-27 13:54:31
    <ClearCaseAdministrator>>中的第10章为依据和引用,在翻译的基础之上对常见的ClearCase备份策略进行阐述。2ClearCase数据的备份ClearCase管理人员重要任务就是定期备份数据。管理员在针对ClearCaseVOB和View(视图...
  • mysql常用备份命令 mysqldump备份常用方法:  1.导出一个数据库  mysqldump -u用户名 -p密码 数据库名 > 导出的文件名  例如  # mysqldump -hhostname -uroot -ppwd dataname >dataname.sq

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 84,111
精华内容 33,644
关键字:

常用的备份策略