精华内容
下载资源
问答
  • 如何进行数据库备份
    千次阅读
    2022-03-17 16:28:09

    数据库的分离和附加一般情况下对于很大的数据库文件不适合,而备份和还原是针对于某个库某个数据从而进行操作,相对来说比较好一点。

    下面说一下关于数据库的备份操作:

    数据库备份有三种:完全备份、事务日志备份、差异性数据库备份

    完全备份:它可以备份整个数据库,包含用户表、系统表、索引、视图和存储过程等所有数据库对象。但是,它也需要花费更多的时间和空间。

    事务日志备份:事务日志备份内容是从还未被备份的事务日志开始,直到备份结尾的最后一个事务日志为止。

    事务日志备份属于高级备份的一种,需要一定的数据库基础。

    差异性数据库备份:包括自从上一次完整性备份以来所有改变的数据页,以及备份结尾的部分活动事务日志。

    接下来演示的属于完全备份

    使用SSMS工具备份

    首先选择你需要备份的数据库

    4.选择数据库,如果下拉框没有出来,稍等一会,再点击下拉框获取。

    5.最好选择数据库,文件和文件组插入时间比较长。

    6.选择磁盘,另外还有一个URL是一个网络备份。

    7.路径可以自行根据需要切换。

    就这样,数据库备份已成功完成。然后去到你刚才备份选择的路径就可以看到这个数据库的备份。

    这个就是我的备份,名称为“数据库备份”属于自定义。

    这个时候的备份是一个文件形式。

    扩展;下图“备份选项”,就了解一下就好了。

    一般都默认 “晚于”,永久不会过期的。

    下面的名称也属于自定义,可根据自己需要进行切换。

    点击“确定”,前提保证在“常规”界面操作完成,否则可能导致备份失败。

    更多相关内容
  • SQL Server 2005备份的数据库还原到SQL Server ... 您可能感兴趣的文章:SQL Server 2005“备份集中的数据库备份与现有的数据库不同”解决方法SQL 2005 ERROR:3145 解决办法(备份集中的数据库备份与现有的数据库不同)
  • postgresql数据库备份和恢复文档资料,详细介绍了PostgreSQL数据库的备份与恢复 方法,值得学习下
  • PostgreSQL数据库备份脚本,结合系统计划任务可以实现数据库的自动化备份。密码直接设置于脚本当中。
  • 数据库备份的语句

    2018-08-20 10:35:08
    这是数据库备份和还原的sql语句,只适用于oracle数据库
  • Thinkphp数据库备份和还原
  • 简单直接,通俗易懂的Oracle数据库备份和恢复。对于Oracle数据库不了解的同志,可以查阅。
  • Mysql全库备份文档,仅支持Linux操作系统,备份7天的数据,超出7天的自动删除。一次操作,终身受益!
  • 在Linux中Oracle数据库备份的方法有很多,就像mysql一样可以使用不同方法进行备份oracle数据库
  • 数据库备份,是在数据丢失的情况下,能及时恢复重要数据,防止数据丢失的一种重要手段 一个合理的数据库备份方案,能够在数据丢失时,有有效地恢复数据,而且也需要考虑技术实现难度和有效地利用资源 一、MySQL ...

    目录

    前言

    一、MySQL 完全备份

    1.数据库备份方式精讲

    1.1 数据库备份的重要性

    1.2 数据库备份的分类

    1.3 MySQL 完全备份概念解读

    2.mysqldump 备份演练

    2.1 使用 tar 打包文件夹备份

    2.2 使用 mysqldump 工具备份 

    二、MySQL 完全恢复

    1.恢复整库操作

    1.1 source 命令整库恢复

    1.2 MySQL 命令整库恢复

     2.恢复表操作

    2.1 使用 source 命令恢复表

    总结


    前言

    随着办公自动化和电子商务的飞速发展,企业对信息系统的依赖性越来越高,数据库作为信息系统的核心,担当者重要的角色
    数据库备份,是在数据丢失的情况下,能及时恢复重要数据,防止数据丢失的一种重要手段
    一个合理的数据库备份方案,能够在数据丢失时,有有效地恢复数据,而且也需要考虑技术实现难度和有效地利用资源

    一、MySQL 完全备份

    1.数据库备份方式精讲

    1.1 数据库备份的重要性

    生产环境中,数据的安全性是至关重要的,任何数据的丢失都可能产生严重的后果

    数据库备份的重要性主要体现在:

    1. 提高系统的高可用性和灾难可恢复性,在数据库系统崩溃时,没有数据库备份就没法找到数据
    2. 使用数据库备份还原数据库,是数据库崩溃时提供数据恢复最小代价的最优方案,如果让用户重新添加数据,代价未免太大
    3. 没有数据就没有一切,数据库备份是一种防范灾难的强力手段

     使用数据库的过程中,有多种原因造成数据的丢失:

    1. 程序错误:指对数据库操作的程序难免有些错误,造成数据丢失
    2. 人为错误:指由于使用人员的误操作造成的数据被破坏,还有可能是黑客对系统攻击造成的数据丢失等
    3. 计算机失败:指运行数据库的服务器操作系统或软件损坏,有可能造成数据的损坏
    4. 磁盘失败:指硬盘等存储数据的硬件设备,长时间运行后可能损坏,造成数据丢失
    5. 灾难(如火灾、地震)和偷窃:指自然灾害等的发生,有可能造成数据丢失
    • 数据丢失会造成严重的经济损失,如携程网2015年5月28日数据库崩溃,每小时损失大概106万美元
    • 所以在企业信息系统建设中,数据库的备份管理是非常重要的内容

    1.2 数据库备份的分类

    备份方式分很多种,从物理与逻辑的角度,备份可分为以下几类:

     1.2.1 物理备份

    • 指对数据库操作系统的物理文件(如数据文件、日志文件等)的备份
    • 物理备份是磁盘块为基本单位将数据从主机复制到备机
    • 物理备份又可以分为脱机备份(冷备份)和联机备份(热备份)
    • 冷备份(脱机备份):在关闭数据库时进行的备份操作,能够较好地保证数据库的完整性
    • 热备份(联机备份):在数据库运行状态中进行操作,这种备份方法依赖于数据库的日志文件

    1.2.2 逻辑备份

    • 逻辑备份是以文件为基本单位将数据从主机复制到备机
    • 指对数据库逻辑组件(如表等数据库对象)的备份

    从数据库的备份策略角度来看,备份又可分为完全备份、差异备份和增量备份

    1.2.3 完全备份

    • 每次对数据进行完整的备份
    • 可以备份整个数据库,包含用户表、系统表、索引、视图和存储过程等所有数据库对象
    • 但它需要花费更多的时间和空间,所以,做一次完全备份的周期要长些

    1.2.4 差异备份

    • 备份那些自从上次完全备份之后被修改过的文件,即只备份数据库部分的内容
    • 它比最初的完全备份小,因为只包含自上次完全备份以来所改变的数据库
    • 它的优点是存储和恢复速度快

    1.2.5 增量备份

    • 只有那些在上次完全备份或者增量备份后被修改的文件才会被备份

    1.2.6 备份方式比较

    备份方式完全备份差异备份增量备份
    完全备份时的状态表1、表2表1、表2表1、表2
    第1次添加内容创建表3创建表3创建表3
    备份内容表1、表2、表3表3表3
    第2次添加内容创建表4创建表4创建表4
    备份内容表1、表2、表3、表4表3、表4表4
    • 完全备份每次都是把整个数据库中的内容进行备份
    • 差异备份在第1次添加内容后备份,即备份新添加的内容;第2次添加内容后备份,把第1次添加的内容也进行了备份,它是根据完全备份时的状态决定的
    • 差异备份每次都是把完全备份之后所有的修改进行备份,而不管之前是否做过差异备份
    • 增量备份只备份每次新修改的内容,第1次创建表3,就对表3备份,第2次添加表4后,因为之前已经备份过表3,所以只备份表4的内容

    1.3 MySQL 完全备份概念解读

    • MySQL 的备份方式主要有完全备份与增量备份
    • 完全备份是对整个数据库的备份、数据库结构和文件结构的备份,保存的是备份完成时刻的数据库,是增量备份的基础
    • 完全备份的优点是备份与恢复操作简单方便,缺点是数据存在大量重复,占用大量的备份空间,备份的时间长
    • 在生产环境中,这两种备份方式都会使用,需要制定合理高效的方案达到备份数据的目的,避免数据丢失造成严重的后果

    2.mysqldump 备份演练

    • MySQL 数据库的备份可以采用两种方式
    • 因为数据库实际上就是文件,直接打包数据库文件夹,或者是使用专用备份工具 mysqldump 都可以进行备份工作

    2.1 使用 tar 打包文件夹备份

    MySQL 的数据库文件默认都是保存在安全目录的 data 文件夹下,可以直接保存 data 文件夹,因为占用空间较大,可以使用data 打包压缩进行保存

    yum -y install xz
    #数据库文件很大,可以使用压缩率较大的xz格式压缩,首选需要安装xz压缩格式工具
    
    tar Jcvf /opt/mysql-$(date +%F).tar.xz /usr/local/mysql/data/
    #对数据库文件夹进行打包操作
    
    ls /opt
    #查看打包命令是否运行成功,已经生成了备份文件
    
    du -sh /opt/mysql-2021-10-26.tar.xz 
    #对比打包前后的文件大小,可以看到压缩的备份文件所占用空间很小
    
    tar -Jxvf /opt/mysql-2021-10-26.tar.xz -C /usr/local/mysql/data/
    systemctl restart mysql
    #如果数据库文件损坏数据丢失,可以解压缩文件,相当于数据恢复
    

     

    2.2 使用 mysqldump 工具备份 

    • mysqldump是客户端常用逻辑备份程序,能够产生一组被执行以后再现原始数据库对象定义和表数据的SQL语句。它可以转储一个到多个MySQL数据库,对其进行备份或传输到远程SQL服务器。mysqldump更为通用,因为它可以备份各种表。
    • 使用 mysqldump 可以更加灵活地控制备份的内容,比如某几个表或库都可以单独备份
    •  mysqlhotcopy仅适用于某些存储引擎(MyISAM和ARCHIVE)
    #开始之前,创建库和表,用作例子
    
    mysql -uroot -p123123
    #输入密码进入数据库,以上为我的密码
    
    create database SCHOOL;
    #创建库
    use SCHOOL;
    
    create table CLASS01 ( id int(2) not null auto_increment, name varchar(10) not null, sex char(5) not null, hobby varchar(10), primary key (id));
    #创建表结构
    #字段一:id,最大显示长度2,不能为空,自动递增从1开始
    #字段二:name,可变长度字段,10,不能为空
    #字段三:sex,固定长度5,不能为空
    #字段四:hobby,可变长度,最多10字符
    #字段四:主键(id)
    
    insert into CLASS01 values(1,'wangyi','man','reading');
    insert into CLASS01 values(2,'wanger','woman','singing');
    #插入2条数据
    
    select * from CLASS01;
    #检查一下
    
    quit
    #退出数据库
    

    #使用 mysqldump 对某些表进行完全备份,命令格式如下:
    mysqldump -u[用户名] -p[密码] [选项] [数据库名] [数据表名] > /备份路径/备份文件名.sql
    #导出的为数据库脚本文件
    
    例:对库SCHOOL中的表class进行备份至/opt/目录下
    mysqldump -uroot -p[密码] SCHOOL CLASS01 > /opt/test01.sql
    

    #对某些库进行完全备份
    mysqldump -uroot -p[密码] [数据库名] > /目录/备份文件名.sql
    
    例:
    mysqldump -uroot -p123123 SCHOOL > /opt/test02
    
    
    #对多个库进行完全备份
    mysqldump -uroot -p123123 --databases SCHOOL sys > /opt/test03.sql
    
    
    #对所有库进行完全备份
    mysqldump -uroot -p123123 --all-databases > /opt/test04.sql
    
    
    #直接备份表结构
    mysqldump -uroot -p123123 -d SCHOOL CLASS01 > /opt/test05.sql
    
    
    ls /opt/
    #查看打包命令是否运行成功,已经生成了备份文件
    

     

    cat /opt/test05.sql
    #分析 mysqldump 工具生成的备份文件的内容
    

     

    •  上面使用了 -d 选项,说明只保存数据库的表结构,且表中只有一个库,可以看到先删除了表(同名),再创建了它
    • 删除和创建都是最普通的 MySQL 命令,任何一条在 MySQL 中都是可以执行的语句,有了这些语句就可以创建出和现在的表结构相同的表
    • 如果不使用 -d 选项,会把数据也进行备份,下面看看数据时如何保存
    cat /opt/test01
    

    • 可以看到与使用 -d 参数的差别是最后出现了 insert into 语句,往数据库中插入了两条数据,也就是说,数据的备份是保存的插入语句操作
    • 通过以上分析,很容易理解,备份的本质就是保存数据库当前表结构的创建语句和现有数据的插入语句,有了它们就可以直接恢复数据库的状态

    二、MySQL 完全恢复

    • 前面介绍了数据库的完全备份,使用 mysqldump 工具可以把数据的创建语句保存在备份的脚本文件中
    • 当出现错误时,可以使用以下几种方法恢复它们

    1.恢复整库操作

    1.1 source 命令整库恢复

    mysql -uroot -p123123
    
    show databases;
    drop database SCHOOL;
    show databases;
    
    source /opt/test03.sql
    #之前备份过的,该备份为SCHOOL和sys两个库的完整备份
    #注意!选项得加“--databases”才是完整的备份,不然会恢复不了
    

    1.2 MySQL 命令整库恢复

    quit
    
    mysql -uroot -p123123 -e 'drop database SCHOOL;'
    mysql -uroot -p123123 -e 'SHOW DATABASES;'
    
    mysql -uroot -p123123 < /opt/test03.sql
    
     mysql -uroot -p123123 -e 'SHOW DATABASES;'
    

     2.恢复表操作

    • 恢复数据表同样可以使用 source 命令和 mysql 命令操作

    2.1 使用 source 命令恢复表

    mysql -uroot -p123123
    use SCHOOL;
    show tables;
    drop table CLASS01;
     
    source /opt/test01.sql
    #恢复表
    
    show tables;
    select * from CLASS01;
    #查看
    

     2.2 使用 mysql 命令恢复表

    quit
    
    mysql -uroot -p123123 -e 'SHOW TABLES FROM SCHOOL;'
    
    mysql -uroot -p123123 -e 'DROP TABLES SCHOOL.CLASS01;'
    mysql -uroot -p123123 -e 'SHOW TABLES FROM SCHOOL;'
    
    mysql -uroot -p123123 SCHOOL < /opt/test01.sql
    mysql -uroot -p123123 -e 'SHOW TABLES FROM SCHOOL;'
    

     

    总结

    MySQL 需要定期实施备份,指定合适的备份计划或策略,并严格遵守
    除了进行完全备份,开启 MySQL 服务器的日志功能也很重要,完全备份加上日志,可以对 MySQL 进行最大化还原
    备份文件的名字还需钥使用统一的易于理解的名称,推荐使用库名或表名加上时间的命名规则,在需要恢复数据库时能很容易的定位到相应的所需备份文件
     

    展开全文
  • 主要介绍了mysql数据库备份常用语句,包括数据库压缩备份、备份多个MySQL数据库、备份多个MySQL数据库、将数据库转移到新服务器等语句
  • 数据库备份和恢复

    2017-12-19 21:17:25
    数据库备份和恢复数据库备份和恢复数据库备份和恢复数据库备份和恢复数据库备份和恢复
  • 基于PLSQL的数据库备份方法,适合初学者学习
  • 数据库备份方式精讲1.1 数据库备份的重要性1.2 数据库备份的分类1.2.1 物理备份1.2.2 逻辑备份1.2.3 完全备份1.2.4 差异备份1.2.5 增量备份1.2.6 备份方式比较1.3 MySQL 完全备份概念解读2.mysqldump 备份演练2.1 ...


    前言

    • 随着办公自动化和电子商务的飞速发展,企业对信息系统的依赖性越来越高,数据库作为信息系统的核心,担当者重要的角色
    • 数据库备份,是在数据丢失的情况下,能及时恢复重要数据,防止数据丢失的一种重要手段
    • 一个合理的数据库备份方案,能够在数据丢失时,有有效地恢复数据,而且也需要考虑技术实现难度和有效地利用资源

    一、MySQL 完全备份

    1.数据库备份方式精讲

    1.1 数据库备份的重要性

    生产环境中,数据的安全性是至关重要的,任何数据的丢失都可能产生严重的后果

    数据库备份的重要性主要体现在:

    1. 提高系统的高可用性和灾难可恢复性,在数据库系统崩溃时,没有数据库备份就没法找到数据
    2. 使用数据库备份还原数据库,是数据库崩溃时提供数据恢复最小代价的最优方案,如果让用户重新添加数据,代价未免太大
    3. 没有数据就没有一切,数据库备份是一种防范灾难的强力手段

    使用数据库的过程中,有多种原因造成数据的丢失:

    1. 程序错误:指对数据库操作的程序难免有些错误,造成数据丢失
    2. 人为错误:指由于使用人员的误操作造成的数据被破坏,还有可能是黑客对系统攻击造成的数据丢失等
    3. 计算机失败:指运行数据库的服务器操作系统或软件损坏,有可能造成数据的损坏
    4. 磁盘失败:指硬盘等存储数据的硬件设备,长时间运行后可能损坏,造成数
      据丢失
    5. 灾难(如火灾、地震)和偷窃:指自然灾害等的发生,有可能造成数据丢失
    • 数据丢失会造成严重的经济损失,如携程网2015年5月28日数据库崩溃,每小时损失大概106万美元
    • 所以在企业信息系统建设中,数据库的备份管理是非常重要的内容

    1.2 数据库备份的分类

    备份方式分很多种,从物理与逻辑的角度,备份可分为以下几类:

    1.2.1 物理备份

    • 指对数据库操作系统的物理文件(如数据文件、日志文件等)的备份
    • 物理备份又可以分为脱机备份(冷备份)和联机备份(热备份)
    • 冷备份(脱机备份):在关闭数据库时进行的备份操作,能够较好地保证数据库的完整性
    • 热备份(联机备份):在数据库运行状态中进行操作,这种备份方法依赖于数据库的日志文件

    1.2.2 逻辑备份

    • 指对数据库逻辑组件(如表等数据库对象)的备份

    从数据库的备份策略角度来看,备份又可分为完全备份、差异备份和增量备份

    1.2.3 完全备份

    • 每次对数据进行完整的备份
    • 可以备份整个数据库,包含用户表、系统表、索引、视图和存储过程等所有数据库对象
    • 但它需要花费更多的时间和空间,所以,做一次完全备份的周期要长些

    1.2.4 差异备份

    • 备份那些自从上次完全备份之后被修改过的文件,即只备份数据库部分的内容
    • 它比最初的完全备份小,因为只包含自上次完全备份以来所改变的数据库
    • 它的优点是存储和恢复速度快

    1.2.5 增量备份

    • 只有那些在上次完全备份或者增量备份后被修改的文件才会被备份

    1.2.6 备份方式比较

    备份方式完全备份差异备份增量备份
    完全备份时的状态表1、表2表1、表2表1、表2
    第1次添加内容创建表3创建表3创建表3
    备份内容表1、表2、表3表3表3
    第2次添加内容创建表4创建表4创建表4
    备份内容表1、表2、表3、表4表3、表4表4
    • 完全备份每次都是把整个数据库中的内容进行备份
    • 差异备份在第1次添加内容后备份,即备份新添加的内容;第2次添加内容后备份,把第1次添加的内容也进行了备份,它是根据完全备份时的状态决定的
    • 差异备份每次都是把完全备份之后所有的修改进行备份,而不管之前是否做过差异备份
    • 增量备份只备份每次新修改的内容,第1次创建表3,就对表3备份,第2次添加表4后,因为之前已经备份过表3,所以只备份表4的内容

    1.3 MySQL 完全备份概念解读

    • MySQL 的备份方式主要有完全备份与增量备份
    • 完全备份是对整个数据库的备份、数据库结构和文件结构的备份,保存的是备份完成时刻的数据库,是增量备份的基础
    • 完全备份的优点是备份与恢复操作简单方便,缺点是数据存在大量重复,占用大量的备份空间,备份的时间长
    • 在生产环境中,这两种备份方式都会使用,需要制定合理高效的方案达到备份数据的目的,避免数据丢失造成严重的后果

    2.mysqldump 备份演练

    • MySQL 数据库的备份可以采用两种方式
    • 因为数据库实际上就是文件,直接打包数据库文件夹,或者是使用专用备份工具 mysqldump 都可以进行备份工作

    2.1 使用 tar 打包文件夹备份

    • MySQL 的数据库文件默认都是保存在安全目录的 data 文件夹下,可以直接保存 data 文件夹,因为占用空间较大,可以使用data 打包压缩进行保存
      mark
    yum -y install xz
    #数据库文件很大,可以使用压缩率较大的xz格式压缩,首选需要安装xz压缩格式工具
    
    tar Jcvf /opt/mysql-$(date +%F).tar.xz /usr/local/mysql/data/
    #对数据库文件夹进行打包操作
    
    ls /opt
    #查看打包命令是否运行成功,已经生成了备份文件
    
    du -sh /opt/mysql-2021-02-05.tar.xz 
    #对比打包前后的文件大小,可以看到压缩的备份文件所占用空间很小
    
    tar -Jxvf /opt/mysql-2021-02-05.tar.xz -C /usr/local/mysql/data/
    systemctl restart mysql
    #如果数据库文件损坏数据丢失,可以解压缩文件,相当于数据恢复
    

    mark

    2.2 使用 mysqldump 工具备份

    • 上文中演示的是对 MySQL 整个数据库的目录进行压缩的方式,是备份数据库中所有的内容
    • mysqldump 是 mysql 用于转存储数据库的实用程序(自带),它主要产生一个 SQL 脚本,其中包含从头重新创建数据库所必需的命令(如 CREATE、TABLE、INSERT等)
    • 使用 mysqldump 可以更加灵活地控制备份的内容,比如某几个表或库都可以单独备份
    #开始之前,创建库和表,用作例子
    
    mysql -uroot -p123123
    #输入密码进入数据库,以上为我的密码
    
    create database SCHOOL;
    #创建库
    use SCHOOL;
    
    create table CLASS01 ( id int(2) not null auto_increment, name varchar(10) not null, sex char(5) not null, hobby varchar(10), primary key (id));
    #创建表结构
    #字段一:id,最大显示长度2,不能为空,自动递增从1开始
    #字段二:name,可变长度字段,10,不能为空
    #字段三:sex,固定长度5,不能为空
    #字段四:hobby,可变长度,最多10字符
    #字段四:主键(id)
    
    insert into CLASS01 values(1,'wangyi','man','reading');
    insert into CLASS01 values(2,'wanger','woman','singing');
    #插入2条数据
    
    select * from CLASS01;
    #检查一下
    
    quit
    #退出数据库
    

    mark

    #使用 mysqldump 对某些表进行完全备份,命令格式如下:
    mysqldump -u[用户名] -p[密码] [选项] [数据库名] [数据表名] > /备份路径/备份文件名.sql
    #导出的为数据库脚本文件
    
    例:对库SCHOOL中的表class进行备份至/opt/目录下
    mysqldump -uroot -p[密码] SCHOOL CLASS01 > /opt/test01.sql
    

    mark

    #对某些库进行完全备份
    mysqldump -uroot -p[密码] [数据库名] > /目录/备份文件名.sql
    
    例:
    mysqldump -uroot -p123123 SCHOOL > /opt/test02
    
    
    #对多个库进行完全备份
    mysqldump -uroot -p123123 --databases SCHOOL sys > /opt/test03.sql
    
    
    #对所有库进行完全备份
    mysqldump -uroot -p123123 --all-databases > /opt/test04.sql
    
    
    #直接备份表结构
    mysqldump -uroot -p123123 -d SCHOOL CLASS01 > /opt/test05.sql
    
    
    ls /opt/
    #查看打包命令是否运行成功,已经生成了备份文件
    

    mark
    mark

    cat /opt/test05.sql
    #分析 mysqldump 工具生成的备份文件的内容
    

    mark

    • 上面使用了 -d 选项,说明只保存数据库的表结构,且表中只有一个库,可以看到先删除了表(同名),再创建了它
    • 删除和创建都是最普通的 MySQL 命令,任何一条在 MySQL 中都是可以执行的语句,有了这些语句就可以创建出和现在的表结构相同的表
    • 如果不使用 -d 选项,会把数据也进行备份,下面看看数据时如何保存的
    cat /opt/test01
    

    mark

    • 可以看到与使用 -d 参数的差别是最后出现了 insert into 语句,往数据库中插入了两条数据,也就是说,数据的备份是保存的插入语句操作
    • 通过以上分析,很容易理解,备份的本质就是保存数据库当前表结构的创建语句和现有数据的插入语句,有了它们就可以直接恢复数据库的状态

    二、MySQL 完全恢复

    • 前面介绍了数据库的完全备份,使用 mysqldump 工具可以把数据的创建语句保存在备份的脚本文件中
    • 当出现错误时,可以使用以下几种方法恢复它们

    1.恢复整库操作

    1.1 source 命令整库恢复

    mysql -uroot -p123123
    
    show databases;
    drop database SCHOOL;
    show databases;
    
    source /opt/test03.sql
    #之前备份过的,该备份为SCHOOL和sys两个库的完整备份
    #注意!选项得加“--databases”才是完整的备份,不然会恢复不了
    

    mark

    1.2 MySQL 命令整库恢复

    quit
    
    mysql -uroot -p123123 -e 'drop database SCHOOL;'
    mysql -uroot -p123123 -e 'SHOW DATABASES;'
    
    mysql -uroot -p123123 < /opt/test03.sql
    
     mysql -uroot -p123123 -e 'SHOW DATABASES;'
    

    mark

    2.恢复表操作

    • 恢复数据表同样可以使用 source 命令和 mysql 命令操作

    2.1 使用 source 命令恢复表

    mysql -uroot -p123123
    use SCHOOL;
    show tables;
    drop table CLASS01;
     
    source /opt/test01.sql
    #恢复表
    
    show tables;
    select * from CLASS01;
    #查看
    

    mark
    mark

    2.2 使用 mysql 命令恢复表

    quit
    
    mysql -uroot -p123123 -e 'SHOW TABLES FROM SCHOOL;'
    
    mysql -uroot -p123123 -e 'DROP TABLES SCHOOL.CLASS01;'
    mysql -uroot -p123123 -e 'SHOW TABLES FROM SCHOOL;'
    
    mysql -uroot -p123123 SCHOOL < /opt/test01.sql
    mysql -uroot -p123123 -e 'SHOW TABLES FROM SCHOOL;'
    

    mark

    3.MySQL 备份思路

    • MySQL 需要定期实施备份,指定合适的备份计划或策略,并严格遵守
    • 除了进行完全备份,开启 MySQL 服务器的日志功能也很重要,完全备份加上日志,可以对 MySQL 进行最大化还原
    • 备份文件的名字还需钥使用统一的易于理解的名称,推荐使用库名或表名加上时间的命名规则,在需要恢复数据库时能很容易的定位到相应的所需备份文件
    展开全文
  • 国产数据库人大金仓数据库备份迁移操作文档其中包括逻辑备份还原、联机全系统备份、联机增量备份、全系统恢复、数据迁移等,并包括命令行的备份还原和自动备份还原命令脚本。
  • 备份概述数据备份分类完整数据库备份文件备份部分备份差异备份日志备份事务日志备份最常用的备份方法选择备份策略和恢复模式备份策略简单恢复模式下的备份简单恢复模式下的完整数据库备份+差异数据库备份完整恢复...


    数据备份分类

    根据备份目标分类
    • 数据备份
    • 日志备份
    根据备份数据文件的范围进行分类
    • 完整数据库备份
    • 文件备份
    • 部分备份
    完整数据库备份

    原理
    复制数据库里的所有信息,通过一个单个完整备份可将数据库恢复到某个时间点的状态。但由于数据库备份是一个在线的操作,一个大的完整数据库备份需要一段时间,数据库在该段时间内还会发生变化。所以完整数据库备份还要对部分事务日志进行备份,以使恢复数据库到一个事务一致的状态。

    适用场景:小数据库

    • 简单易用
    • 速度快

    不适用场景:大数据库

    • 耗时
    • 占用大量存储空间
    从是否复制所有的数据分类
    • 完整备份
    • 差异备份
    差异备份

    差异备份原理
    差异备份基于差异,备份要求数据库之前做过一次完整备份。差异备份仅捕获自该次完整备份后发生更改的数据,这个完整备份被称为差异备份的“基准”。差异备份仅仅包括建立差异基准后更改的数据。

    差异备份相对完整备份的优点

    • 占用少量存储空间
    • 备份速度快
    • 便于频繁执行,从而降低数据丢失风险

    日志备份

    事务日志备份

    每个日志备份都包括创建备份时处于活动状态的部分事务日志以及先前日志备份中未备份的所有日志记录。不间断的日志备份序列包含数据库的完整日志链。在完整恢复模式下,连续不断的日志链可以将数据库还原到任意时间点。

    最常用的备份方法
    分级完整备份差异备份日志备份
    数据库级完整数据库备份差异数据库备份(一般)日志备份
    文件级完整文件备份差异文件备份(一般)日志备份

    选择备份策略和恢复模式

    SQL Server 数据丢失的最大时间段

    利用数据备份恢复机制保护数据,是不可能保证数据一点都不丢失的,SQL Server 不可能时时刻刻做数据库备份,每次备份之间总要有一定的时间间隔。此时间间隔之间的数据变化在下一次备份之前,是没有保护的。因此,数据丢失的最大时间段就是两次备份之间的时间间隔。

    频繁备份是否合适?

    既然数据丢失的最大时间段为两次备份之间的时间间隔,提高备份频率,降低备份间隔,从而减少数据丢失量。但是,备份越频繁,需要的投入也越多。

    • 备份越多,要管理的备份文件也越多,即数据库恢复时要恢复的文件也越多。要建立一个合适的备份管理制度
    • 备份虽不会阻塞数据库的正常操作,但会占用磁盘IO。若服务器本身IO就比较繁忙,频繁的备份会降低数据库的IO性能。
    • 备份难免会因为种种因素失败,备份越频繁,遇到失败的几率越大。因此 DBA 需要及时处理错误,将备份任务恢复常态。

    日志备份的局限性
    使用日志备份,可将数据库恢复到故障点或特定的时间点。因此日志备份在备份策略中具有很重要的角色。但日志备份只能在完整恢复模式和有些大容量日志恢复模式的数据库上进行。制定备份策略,首先要决定是否需要日志备份,若需要,则数据库恢复模式就要选成完整模式,若不需要做日志备份,则数据库模式就要设置简单,否则会遇到日志文件无线增长问题。

    简单恢复模式下的备份

    简单恢复模式下,不能做日志备份,所以它只支持最简单的备份和还原方式,很容易管理。如果没有日志备份,则只能将数据库恢复到最后一次备份的结尾。若发生灾难,数据库最后一次备份之后所做的数据修改将全部丢失。

    如下图所示,数据库有5个备份,灾难发生在 t6 时间点,因此只有在时间 t5 进行的最新的一份数据库备份需要被还原。还原此备份会将数据库恢复到 t5 这个时间点,t5 时间点之后的数据更新都会丢失。
    在这里插入图片描述

    优点

    • 容易管理
    • 恢复简单

    缺点

    • 无日志备份,只能将数据库恢复到最后一次备份的结尾
    • 数据丢失风险会随时间增长和增加,直到进行下一个完整备份或差异备份为止。

    建议

    限定充足的备份频率,以避免遗失大量数据。同时,频率也不能太高而让备份变得难以管理。

    使用场景

    只适合于可频繁备份的小型数据库

    简单恢复模式下的完整数据库备份+差异数据库备份

    为降低风险,可引入差异备份,使用差异数据库备份补充数据库完整备份,从而降低工作损失风险的一种备份策略。

    如下图所示,在第一次数据库完整备份后,连续建立了三次差异备份。第三次差异备份后,进行第二次数据库完整备份,建立新的差异基准。

    在这里插入图片描述

    差异备份相对完整备份的优点

    • 开销低
    • 可频繁执行

    适用场景

    数据库数据量稍大,能够容忍较长时间数据丢失的。

    简单恢复模式总结

    不管是数据库完整备份和数据库差异备份,都不可能以比较频繁的频率进行,一般都只能在晚间进行。若数据库比较庞大,或者不允许比较长时间的数据丢失,这样的备份策略是不能满足要求的,必须引入日志备份,建立更为复杂,但是也更强大的恢复策略。

    完整恢复模式下的备份

    选取完整恢复模式可以使用日志备份。由于日志备份只复制上次日志备份以来的所有日志记录,所以开销会比数据库备份小很多,可以定义一种很频繁的频率(5分钟甚至更短)来做备份,以达到在最大限度内防止出现故障时丢失数据的目的。

    使用日志备份的优点

    • 允许将数据库还原到日志备份内包含的任何时间点(时点恢复)
    • 假定可以在发生严重故障后备份活动日志,则可将数据库一直还原到没有发生数据丢失的故障点处

    使用日志备份的缺点

    • 日志备份文件数量多
    • 恢复备份时,需要严格按照备份产生的顺序依次恢复。中间不能有任何备份缺失或跳跃。所以日志备份做的越多,还原时间越长,管理复杂性也越高

    下图所示为完整恢复模式下的最简单备份策略,在此图中,已完成了数据库备份 Db_1 及两个例行日志备份 Log_1 和 Log_2。在 Log_2 日志备份后的某个时间,数据库出现故障。在还原这三个备份前,DBA 必须首先备份活动日志(日志尾部),然后还原 Db_1 、Log_1 、Log_2,并且不恢复数据库,接着 DBA 还原并恢复尾(Tail)日志文件。这一步可以把数据库恢复到故障点,从而恢复所有数据。如果尾日志能够成功地备份和恢复,这次灾难可能甚至不会带来任何数据丢失。如果灾难毁坏的时日志文件,使得尾日志不能成功备份和恢复,这次灾难造成的数据丢失就是从 Log_2 以后的所有修改。

    在这里插入图片描述

    数据丢失最大时间段

    在第一个完整数据库备份完成,并且常规日志备份开始之后,潜在的工作丢失风险存在事件仅为数据库损坏时间点,即到上一次常规日志备份的那一段时间。

    建议

    建议经常执行日志备份,以将工作丢失的风险限定在业务要求所允许的范围内。

    缺点

    • 灾难发生后,需要恢复的日志文件数量太多。

      每1小时做一次日志备份。每周在周日做一次数据库完整备份。若灾难在周5发生,则不得不恢复 5*24=120个日志备份。恢复日志文件过多其花费的时间成本较大。

    模拟场景
    为了最大程度地缩短还原时间,可对相同数据进行一系列差异备份做补充。

    完整数据库备份 + 差异数据库备份+日志备份

    下图所示为使用差异数据库备份及一系列例行日志备份来补充完整数据库备份。使用事务日志备份可缩短潜在的工作丢失风险的存在时间,使该风险仅在最新日志备份之后存在。在第一个数据库备份完成后,每天做一个差异数据库备份,而在工作时间进行若干日志备份。
    在这里插入图片描述

    上图中第一个数据库备份创建之前,数据库存在潜在的工作丢失风险(从时间 t0 到时间 t1)。该备份建立之后,例行日志备份将工作丢失的风险降为丢失自最近日志备份之后所做的修改(最近备份的时间为 t14)。如果发生故障,则应立即尝试备份活动日志(尾部日志),若此“尾部日志备份”成功,则数据库可还原到故障点。

    下面以 AdventureWorksDW2018 数据库为例,来了解完整恢复模式下的数据库备份
    AdventureWorksDW 数据库的安装请参考 SQL SERVER 自带数据库下载安装

    实践前准备

    清空表 msdb..backupset 上 2018/09/28 之前的记录,注意时间

    USE msdb;  
    GO  
    EXEC sp_delete_backuphistory @oldest_date = '09/28/2018';  
    

    AdventureWorksDW2018 库的恢复模式修改为完整恢复模式,否则会报 4208 错误

    USE master ;  
    ALTER DATABASE AdventureWorksDW2018 SET RECOVERY FULL ;
    

    显示 AdventureWorksDW2018 这个数据库历史上曾经的备份信息。

    use msdb;
    select distinct s.first_lsn, s.last_lsn,
                    s.database_backup_lsn, s.backup_start_date, s.backup_finish_date,
    				s.type, y.physical_device_name 
      from msdb..backupset s inner join 
           msdb..backupfile f on f.backup_set_id = s.backup_set_id inner join
    	   msdb..backupmediaset m on s.media_set_id = m.media_set_id inner join
    	   msdb..backupmediafamily y on m.media_set_id = y.media_set_id
     where (s.database_name = 'AdventureWorksDW2018')
     order by s.backup_finish_date desc;
    

    备份信息字段含义
    对于日志备份来讲

    字段含义
    first_lsn标识备份集中第一个日志记录的日志序列号
    last_lsn标识备份集之后的下一条日志记录的日志序列号
    (fisrt_lsn, last_lsn-1)标识此日志备份所包含的所有日志序列
    last_lsn-1表示前面一条日志序列号,而不表示日志序列号减 1,因为日志序列号虽然是递增的,但并不表示一定以 1 为单位递增
    (fisrt_lsn, last_lsn)表示做数据恢复时,在做 roll forward(前滚)动作时,一定要遍历的 LSN,不然的话数据库在做恢复的时候,数据会不一致
    database_backup_lsn标识上一次数据库做全备份的起始 LSN

    TYPE
    标识数据库备份的类型

    类型含义
    D数据库
    L日志
    I差异数据库
    F文件或文件组

    1. 对数据库做一个全备份

    BACKUP DATABASE [AdventureWorksDW2018] TO DISK='F:\backup\AdvFull1.bak'
    

    查询数据库的历史备份记录,显式一个全备份
    在这里插入图片描述

    2. 对数据库做一个操作,然后做一个日志备份

    --drop table t1;
    use AdventureWorksDW2018;
    create table t1(number int, name nvarchar(50));
    insert into t1 values(1, 'a');
    go 
    BACKUP LOG [AdventureWorksDW2018] TO DISK='F:\backup\AdvLog2.bak'
    

    再次执行查询,可看到又添加了一条新的记录如下图所示。此备份时日志备份,LSN 是从 5700000002880000157000000039200001

    在这里插入图片描述

    3. 对数据库做一个操作,再做一个日志备份

      use AdventureWorksDW2018;
      insert into t1 values(2, 'b');
      go
      BACKUP LOG [AdventureWorksDW2018] TO DISK='F:\backup\AdvLog3.bak'
    

    再次执行查询,可看到又添加了一条新的记录如下图所示。这个备份日志备份,LSN 是从 5700000003920000157000000040800001,可观察到这个日志备份的 first_lsn 和上一次日志备份的 last_lsn 一定是一样的。这是因为数据库在做日志备份的时候,LSN 要求是连续的。

    在这里插入图片描述

    4.对数据库做一个操作,再做一个差异备份

    use AdventureWorksDW2018;
    insert into t1 values(3, 'c');
    go 
    BACKUP DATABASE [AdventureWorksDW2018] TO DISK='F:\backup\AdvDiff4.bak' WITH DIFFERENTIAL;
    

    再次执行查询,可看到又添加了一条新的记录,这个备份时差异备份,如下图所示
    在这里插入图片描述

    5. 一直这样操作,最后对数据库做一次日志操作,如下图所示

    -- 插入一条数据,再做一个差异备份
    use AdventureWorksDW2018;
    insert into t1 values(4, 'd');
    go 
    BACKUP DATABASE [AdventureWorksDW2018] TO DISK='F:\backup\AdvDiff5.bak' WITH DIFFERENTIAL;
    -- 插入一条数据,再做一个日志备份
    use AdventureWorksDW2018;
    insert into t1 values(6, 'f');
    go
    BACKUP LOG [AdventureWorksDW2018] TO DISK='F:\backup\AdvLog7.bak'
    -- 插入一条数据,再做一个日志备份
    use AdventureWorksDW2018;
    insert into t1 values(8, '8');
    go
    BACKUP LOG [AdventureWorksDW2018] TO DISK='F:\backup\AdvLog8.bak'
    -- 插入一条数据,再做一个差异备份
    use AdventureWorksDW2018;
    insert into t1 values(9, '9');
    go 
    BACKUP DATABASE [AdventureWorksDW2018] TO DISK='F:\backup\AdvDiff9.bak' WITH DIFFERENTIAL;
    -- 插入一条数据,再做一个日志备份
    use AdventureWorksDW2018;
    insert into t1 values(10, '10');
    go
    BACKUP LOG [AdventureWorksDW2018] TO DISK='F:\backup\AdvLog10.bak'
    -- 插入一条数据,再做一个日志备份
    use AdventureWorksDW2018;
    insert into t1 values(11, '11');
    go
    BACKUP LOG [AdventureWorksDW2018] TO DISK='F:\backup\AdvLog11.bak'
    

    在这里插入图片描述

    总结
    first
    不管是全备份还是差异备份,都不会影响 LSN 的序列。因此,即使最近的几个全备份或差异备份受损,只要有一个全备份,以及该全备份后所有的日志备份,我们也是能够完整无缺地把数据恢复出来,只是恢复的时间会稍微长一点。中间的差异备份或其他全备份只是减少了需要恢复的日志备份数目。这进一步说明了日志备份的重要性。
    second
    日志备份的 LSN 是连续的。否则在恢复的时候,会碰到日志链断裂的问题,恢复时不能继续下去的。

    参考资料

    <<SQL Server 2012 实施与管理实战指南>>

    查看或更改数据库的恢复模式 (SQL Server)
    维护计划实现备份:每周数据库完整备份、每天差异备份、每小时日志备份

    SQL Server 2012入门备份与恢复数据库篇:总揽

    windows7 设置文件夹的权限设置

    展开全文
  • 数据库数据的备份与还原最好是使用数据库自带的客户端软件来实现,JAVA可以通过调用mysqldump、mysql客户端软件分别进行mysql数据库备份还原,当然前提是JAVA服务器必须安装mysql客户端软件
  • SQLServer数据库备份的使用

    千次阅读 2022-01-13 22:34:24
    SQLServer数据库备份的使用 方法一:使用SQL语句添加语句 1. 数据库备份 选择想要备份的数据库,”右键“→”任务“→”生成脚本“。 直接“下一步”。 选择好具体的数据库对象,然后点击“下一步”。 选择要保存...
  • 数据库备份文件还原方法

    千次阅读 2021-02-10 11:11:12
    一、SQL数据库备份:1、依次打开 开始菜单 → 程序 → Microsoft SQL Server 2008 → SQL Server Management Studio → 数据库:Dsideal_school_db既是我们需要备份的学籍数据库图(1)2、选择要备份数据库...
  • MySQL几种方法的数据库备份

    万次阅读 2021-01-28 02:50:26
    MySQL有几个方法来备份最近博客一直想写点。可是不知道写什么,感觉...MySQL数据库算是经常使用的数据库中最好使用的数据库了,对于备份的操作也不例外。所以今天分享一下MySQL数据库备份的几种方式。方式一:使用...
  • PostgreSQL数据库备份和恢复

    万次阅读 多人点赞 2020-09-10 10:48:04
    pg_dump 是备份数据库指令; 10.194.227.231是数据库的ip地址; postgres 是数据库的用户名; postgres 是数据库名; > 意思是导出到指定目录; 4、图文并茂 备份 二、恢复 1、备份命令 psql
  • 2011年下半年系统架构设计师考试上午真题试题(综合知识) 数据备份是信息系统运行管理时保护数据的重要...()可针对上次任何一种备份进行,将上次备份后所有发生变化的数据进行备份,并将备份后的数据进行标记。 ...
  • 数据库备份数据库备份数据库备份数据库备份数据库备份数据库备份
  • java实现oracle数据库备份

    热门讨论 2011-01-23 21:33:17
    java_web java实现oracle 数据库备份
  • 在操作数据库时难免会发生一些意外造成数据丟失。例如:突然断电、管理员的操 作失误都可能导致数据的...为了确保数据的安全,需要定期对数据库进行备份,从而当遇到数据库中数据丢失或者出错的情况可将数据进行还原。
  • 软件特色: 1、纯“绿色化”、永久免费、无需安装、操作便捷,极小化内存占用; 2、全面支持(32/64位)Windows操作系统与SQL Server服务器;...8、完美支持超大SQL数据库备份(经测试:支持10G或更大SQL数据库备份)。
  • SQL Server如何备份数据库?完整数据库备份方式

    万次阅读 多人点赞 2020-03-30 13:14:23
    完整数据库备份与恢复 完整数据库备份: 在对象资源管理器栏中选中所需要备份数据库后右击—>任务—>备份 进入到设置界面后备份类型选择完整,添加按钮可选择备份文件的存储位置,在这里我按照MSSQL默认的目录...
  • SQL Server 2012 数据库备份还原

    万次阅读 多人点赞 2019-07-09 14:59:40
    数据库备份2.创建备份设备使用SSMS工具创建备份设备使用SQL方式创建备份设备3.完整备份与还原使用SSMS工具完整备份与还原使用SQL方式完整备份与还原4.差异备份与还原使用SSMS工具差异备份与还原使用SQL方式差异备份...
  • mysql数据库备份与恢复

    千次阅读 2021-07-25 18:15:49
    在开发中经常需要用到对线上的数据库做一些备份操作,以便应对一些突发状况下数据库的快速恢复,下面针对常用的数据库备份操作做简单的总结 环境准备 本文以mysql5.7进行说明,因此需要提前在linux环境下安装mysql...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 583,825
精华内容 233,530
关键字:

数据库的备份

友情链接: LL1.rar