精华内容
下载资源
问答
  •  为防止系统出现操作失误或系统故障导致数据丢失以及介质损坏导致的问题,所以需要对数据库进行备份 (2) 备份方式: 1.物理备份(使用rman对数据库进行备份) 2.逻辑备份(使用expdp对数据库进行备份) (3...

    windows环境下的oracle数据库的备份方案

     

    (1)           备份目的

      为防止系统出现操作失误或系统故障导致数据丢失以及介质损坏导致的问题,所以需要对数据库进行备份

    (2)           备份方式:

    1.物理备份(使用rman对数据库进行备份)

    2.逻辑备份(使用expdp对数据库进行备份)

    (3)           备份策略:

    物理备份策略每周的周日凌晨3:00对数据库进行全量备份,周二,周四,周六的凌晨3:00对数据库进行一级增量备份

    逻辑备份策略每1月对数据库进行一次逻辑导出备份,每个月的1号凌晨1:00

    注:

    备份保留30天,30天前的删除,设置如下:

    SQL> alter system setcontrol_file_record_keep_time=60;

    系统已更改。

    SQL> show parametercontrol_file_record_keep_time;

    NAME        TYPE    VALUE

    control_file_record_keep_time  integer  60

    RMAN> configure retentionpolicy to recovery window of 30 days;

    新的 RMAN 配置参数:

    CONFIGURE RETENTION POLICY TORECOVERY WINDOW OF 30 DAYS;

    已成功存储新的RMAN 配置参数

    RMAN> show all;

    db_unique_name ORA 的数据库的 RMAN配置参数为:

    CONFIGURE RETENTION POLICY TORECOVERY WINDOW OF 30 DAYS;

    CONFIGURE BACKUP OPTIMIZATION OFF;# default

    备份说明:

    (4)           物理备份

    规划备份文件存放目录,并建立相应的目录,如备份目录

    0级备份脚本:rmanbklevel_0.sql

    run{

    allocate channel cha1 type disk;

    crosscheck archivelog all;

    delete noprompt expired archivelog all;

    crosscheck backup;

    delete noprompt expired backup;

    sql 'alter system archive log current';

    backup

    incremental level 0

    database format'D:\archiveoracle\backup\incremental_level0_%d_%T_%s_%p'

    plus archivelog format'D:\archiveoracle\backup\arch_%d_%T_%s_%p' delete all input;

    backup current controlfile format 'D:\archiveoracle\backup\ctrl_%d_%I_%T_%s_%p';

    report obsolete;

    delete noprompt obsolete;

    release channel cha1;

    }

    批处理脚本:rmanbklevel_0.bat

    rman target /cmdfile='D:\archiveoracle\rmanbklevel_0.sql'log='D:\archiveoracle\rmanbklevel_0.log' append

     

    1级备份脚本:rmanbklevel_1.sql

    run{

    allocate channel cha1 type disk;

    backup

    incremental level 1 database

    format'D:\archiveoracle\backup\level1\incremental_level1_%u_%T' plus archivelog

    format'D:\archiveoracle\backup\level1\arch_%d_%T_%s_%p' delete all input;

    backup current controlfile format'D:\archiveoracle\backup\level1\ctrl_%d_%I_%T_%s_%p';

    release channel cha1;

    }

    批处理脚本:rmanbklevel_1.bat

    rman target /cmdfile='D:\archiveoracle\rmanbklevel_1.sql'log='D:\archiveoracle\rmanbklevel_1.log' append

    说明:

    rman备份前,请检查数据库是否开启归档,如果没有开启归档,请开启如下:

    sql> startup mout

    sql> alter database archivelog;

    sql> alter database open;

    设置归档目录

    alter system setlog_archive_dest_1='location=D:\archiveoracle\';

    (5)           逻辑备份

    逻辑备份使用数据泵进行备份首先要创建目录

    create directory dmp_dir as 'D:\expdpdump'  (目录根据实际情况进行修改)

    逻辑导出脚本:expdp.bat

    @echo off

    rem setbackupfile=f_database_%date:~0,4%-%date:~5,2%-%date:~8,2%.dmp

    rem setlogfile=f_database_%date:~0,4%-%date:~5,2%-%date:~8,2%.log

    rem delete 30days files

    forfiles /p "D:\expdpdump" /d-30  /c "cmd /c echo deleting @file... && del /f @path"

    rem backup schemas

    setbackupfile=expdp_%date:~0,4%-%date:~5,2%-%date:~8,2%.dmp

    setlogfile=expdp_%date:~0,4%-%date:~5,2%-%date:~8,2%.log

    expdp.exe \"sys/oracle as sysdba\"directory=dmp_dir dumpfile=%backupfile%  logfile=%logfile%schemas=scott parallel=4

    注意:里面的目录和要备份的schema根据实际情况修改

    (6)           备份部署:

      把备份的批处理文件添加的windows的定时任务中去

    如下添加步骤(以0级备份为例)

    1.       点击开始按钮,依次选择打开“所有程序—附件—系统工具”,找到“任务计划程序”

    。。。。。。。。

    展开全文
  • 数据库备份方案

    2019-10-02 16:11:30
    同时因为我的数据库日志增长非常快,大概每天在1G以上,因此必须进行收缩。 经过在系统上的测试,感觉用SQL SERVER的维护计划更可行,现将操作方式简介如下: 注:下面的说明中也提到了使用差异备份,因为...

    在SQL Server 2008下,网上以前流行的截断日志并收缩文件的方法不适合了,报语法错误。

    同时因为我的数据库日志增长非常快,大概每天在1G以上,因此必须对其进行收缩。

    经过在系统上的测试,感觉用SQL SERVER的维护计划更可行,现将操作方式简介如下:

     注:下面的说明中也提到了使用差异备份,因为数据库文件增长也非常快,因此此处也稍作说明。关注收缩数据库日志文件的可以忽略此部分内容。

    1、创建维护计划:

     

    创建维护计划

     

    2、创建子计划

    a、完整备份,每周一次

     

     完整备份

     

    b、差异备份,每天一次,或每天多次

     

     差异备份

     

    c、日志备份,每天一次

     

     日志备份

     

    d、收缩数据库

     

     收缩数据库

     

    e、删除备份文件,删除四周以前的备份文件,每天执行

     

     清除数据库备份文件

     

     f、清除日志备份文件,每天执行

     

    清除日志备份文件

     

    3、关于日志文件的增长

    如上所述,日志文件每天进行备份,同时每天清除旧的备份文件,这样日志文件虽然做了备份,但不会保留太多。(当然,如果你需要保留日志文件,则可以使用与数据库备份文件相同的清除策略)

    日志文件在备份以后,在收缩数据库时,就可以回收已备份的日志文件的空间。但文件大小不会减少,只是增加了可用空间。但这样是可以满足我们的要求的:比如每天可能产生大约1G的日志,而每次备份并回收后,可以收回绝大部分空间,收回的空间则可以满足当天的日志使用了。

    此方法不使用网上的那种截断的语句,完全使用SQL SERVER 2008的维护计划来执行,安全,可靠,定时,不用再担心日志文件占满磁盘空间了

    转载于:https://www.cnblogs.com/deepwishly/archive/2010/12/02/2551186.html

    展开全文
  • vertica数据库备份方案

    2016-05-05 02:17:15
    我先要远程的vertica数据库操作,通过vpn访问美国的那边的vertica数据库,要一个表的一个字段长度进行变更,这个数据很重要,所以不能丢失的,保险起见需要做备份,之前想过到处csv格式文件,但是通过我的操作...
  • 针对当前远程容灾备份系统普遍造价高昂的缺点,技术人员提出了一种通过基于Linux系统下的Rsync(RemoteSynchronize)远程同步框架进行改进,采用节点间数据复制技术实现数据库远程备份方案。根据容灾备份系统备份...
  • 目录透明数据加密(TDE)工作原理加密层次结构开启TDE秘钥操作目录视图和动态管理视图对备份文件进行压缩加密xp_cmdshell服务器配置选项xp_cmdshell 透明数据加密(TDE) 透明数据加密 (TDE) 技术可以加密 SQL ...

    透明数据加密(TDE)

    透明数据加密 (TDE) 技术可以加密 SQL Server、Azure SQL 数据库和 Azure Synapse Analytics(SQL 数据仓库) 数据文件。 这种加密方式称为静态数据加密。
    为了帮助保护数据库的安全,可以采取以下预防措施:

    • 设计安全的系统。
    • 对机密资产加密。

    在数据库服务器外围构建防火墙。
    但恶意方如果窃取了驱动器或备份磁带等物理介质,就可以还原或附加数据库并浏览其数据。
    一种解决方案是加密数据库中的敏感数据,并使用证书保护用于加密数据的密钥。 此解决方案可以防止没有密钥的人使用这些数据。 但必须提前规划好此类保护。
    TDE 对数据和日志文件进行实时 I/O 加密和解密。 加密使用的是数据库加密密钥 (DEK)。 数据库启动记录存储该密钥,供还原时使用。 DEK 是一种对称密钥。 它由服务器的 master 数据库存储的证书或 EKM 模块所保护的非对称密钥提供保护。
    TDE 保护静态数据,也就是数据和日志文件。 它让你可以遵循许多法律、法规和各个行业建立的准则。 借助此功能,软件开发人员可以使用 AES 和 3DES 加密算法来加密数据,且无需更改现有的应用程序。

    工作原理

    数据库文件加密在页面级执行。 已加密数据库中的页在写入磁盘之前会进行加密,在读入内存时会进行解密。 TDE 不会增加已加密数据库的大小。

    加密层次结构

    下图显示了 TDE 加密体系结构。 在 SQL 数据库上使用 TDE 时,用户仅能配置数据库级项目(数据库加密密钥和 ALTER DATABASE 部分)。
    在这里插入图片描述

    开启TDE

    1. 创建主秘钥
    2. 创建数据库证书
    3. 备份数据库证书
    4. 为数据库设置加密
    USE master
    GO
    
    -- 添加数据库主秘钥
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'PassWord'
    GO
    
    -- 添加数据库证书,Cert_Name为证书的名称
    CREATE CERTIFICATE <Cert_Name> WITH SUBJECT = '<Cert_Description>'
    GO
    
    -- 备份数据库证书,PassWord为证书的加密秘钥
    BACKUP CERTIFICATE <Cert_Name> TO FILE = 'D:\\Program Files\\SQL\\BackupEncrypted\\<Cert_Name>.cer'
    WITH PRIVATE KEY (FILE = 'D:\\Program Files\\SQL\\BackupEncrypted\\<Cert_Name>.pkey', ENCRYPTION BY PASSWORD = 'PassWord')
    GO
    
    -- 设置数据库加密算法,并添加需要加密的数据库
    USE HBStation_Cancel_Agent
    
    CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER CERTIFICATE <Cert_Name>
    
    ALTER DATABASE HBStation_Cancel_Agent SET ENCRYPTION ON
    GO
    

    启用了 TDE 的备份数据库文件也使用数据库加密密钥进行加密。 因此,在还原这些备份时,用于保护数据库加密密钥的证书必须是可用的。 因此,除了备份数据库之外,一定要注意维护好服务器证书的备份。 如果证书不再可用,就会造成数据丢失。

    还原秘钥及证书

    对数据库加密备份后若需要在另一台服务器上进行还原,需要先创建相同的主秘钥,并还原证书

    -- 添加数据库主秘钥
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'PassWord'
    GO
    
    -- 还原加密证书
    CREATE CERTIFICATE <Cert_Name> FROM FILE = 'D:\\Program Files\\SQL\\BackupEncrypted\\<Cert_Name>.cer'
    WITH PRIVATE KEY (FILE = 'D:\\Program Files\\SQL\\BackupEncrypted\\<Cert_Name>.pkey', DECRYPTION BY PASSWORD = 'PassWord')
    GO
    
    -- 还原数据库
    RESTORE DATABASE [DBName] FROM  DISK = N'D:\Program Files\SQL\databackup\full\DBName.bak' WITH  FILE = 1,  MOVE N'DBName' TO N'D:\Program Files\SQL\ListDBData\DBName.ndf',  MOVE N'DBName_log' TO N'D:\Program Files\SQL\ListDBData\DBName_log.ldf',  NOUNLOAD,  REPLACE,  STATS = 10
    GO
    

    删除主秘钥及加密证书

    当停止数据加密后不再需要主秘钥时,可以删除主秘钥和加密证书

    USE master
    
    -- 删除加密证书
    DROP CERTIFICATE <Cert_Name>;
    GO
    
    -- 删除主秘钥
    DROP MASTER KEY;
    GO
    

    秘钥操作

    1. CREATE DATABASE ENCRYPTION KEY

    创建用于透明数据库加密的秘钥

    -- Syntax for SQL Server  
    CREATE DATABASE ENCRYPTION KEY  
           WITH ALGORITHM = { AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY }  
       ENCRYPTION BY SERVER   
        {  
            CERTIFICATE Encryptor_Name |  
            ASYMMETRIC KEY Encryptor_Name  
        }  
    [ ; ]
    

    参数

    • WITH ALGORITHM = { AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY }
      指定用于加密密钥的加密算法。
    • ENCRYPTION BY SERVER CERTIFICATE Encryptor_Name
      指定用于加密数据库加密密钥的加密程序的名称。
    • ENCRYPTION BY SERVER ASYMMETRIC KEY Encryptor_Name
      指定用于加密数据库加密密钥的非对称密钥的名称。 要使用非对称密钥对数据库加密密钥进行加密,非对称密钥必须驻留在可扩展密钥管理提供程序上。
    1. ALTER DATABASE ENCRYPTION KEY

    修改秘钥信息

    -- Syntax for SQL Server  
    ALTER DATABASE ENCRYPTION KEY  
          REGENERATE WITH ALGORITHM = { AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY }  
       |  
       ENCRYPTION BY SERVER   
        {  
            CERTIFICATE Encryptor_Name |  
            ASYMMETRIC KEY Encryptor_Name  
        }  
    [ ; ]
    

    参数

    • REGENERATE WITH ALGORITHM = { AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY }
      指定用于加密密钥的加密算法。
    • ENCRYPTION BY SERVER CERTIFICATE Encryptor_Name
      指定用于加密数据库加密密钥的证书的名称。
    • ENCRYPTION BY SERVER ASYMMETRIC KEY Encryptor_Name
      指定用于加密数据库加密密钥的非对称密钥的名称。

    注意
    用于加密数据库加密密钥的证书或非对称密钥必须位于 master 系统数据库中。
    数据库所有者 (dbo) 发生更改时,不必重新生成数据库加密密钥。
    在数据库加密密钥修改过两次后,必须执行日志备份才能再次对数据库加密密钥进行修改。

    1. DROP DATABASE ENCRYPTION KEY

    删除数据库秘钥

    DROP DATABASE ENCRYPTION KEY
    

    如果数据库已加密,则必须先使用 ALTER DATABASE 语句对数据库进行解密。 请先等待解密完成,再删除数据库加密密钥。

    示例

    ALTER DATABASE <DBName> SET ENCRYPTION OFF;
    GO
    
    USE <DBName>
    GO
    
    DROP DATABASE ENCRYPTION KEY;
    GO
    

    目录视图和动态管理视图

    1. sys.databases

    查看数据库的基础信息

    SELECT name, is_encrypted FROM sys.databases
    
    1. sys.certificates

    查看数据库证书信息

    1. sys.dm_database_encryption_keys

    用于提供有关数据库加密密钥的信息以及加密状态的动态管理视图。

    列名 数据类型 说明
    database_id int 数据库 ID。
    encryption_state int 指示数据库是加密的还是未加密的。
    0 = 不存在数据库加密密钥,未加密
    1 = 未加密
    2 = 正在进行加密
    3 = 已加密
    4 = 正在更改密钥
    5 = 正在进行解密
    6 = 正在进行保护更改(正在更改对数据库加密密钥进行加密的证书或非对称密钥)。
    create_date datetime 显示加密密钥的创建日期(UTC)。
    regenerate_date datetime 显示重新生成加密密钥的日期(UTC)。
    modify_date datetime 显示加密密钥的修改日期(UTC)。
    set_date datetime 显示加密密钥应用于数据库的日期(UTC)。
    opened_date datetime 显示上次打开数据库密钥的时间(UTC)。
    key_algorithm nvarchar(32) 显示用于密钥的算法。
    key_length int 显示密钥的长度。
    encryptor_thumbprint varbinary(20) 显示加密程序的指纹。
    encryptor_type nvarchar(32) 适用范围: SQL Server ( SQL Server 2012 (11.x) 到当前版本)。
    描述加密程序。
    percent_complete real 数据库加密状态更改的完成百分比。 如果未发生状态更改,则为 0。
    encryption_state_desc nvarchar(32) 适用于:SQL Server 2019 (15.x) 及更高版本。
    指示数据库是否已加密或未加密的字符串。
    NONE
    未加密过
    DECRYPTION_IN_PROGRESS
    ENCRYPTION_IN_PROGRESS
    KEY_CHANGE_IN_PROGRESS
    PROTECTION_CHANGE_IN_PROGRESS
    encryption_scan_state int 适用于:SQL Server 2019 (15.x) 及更高版本。
    指示加密扫描的当前状态。
    0 = 未启动任何扫描,TDE 未启用
    1 = 正在进行扫描。
    2 = 正在进行扫描,但已挂起,用户可以继续。
    3 = 由于某种原因中止扫描,需要手动干预。 请联系 Microsoft 支持部门以获得更多帮助。
    4 = 扫描已成功完成,TDE 已启用并且加密已完成。
    encryption_scan_state_desc nvarchar(32) 适用于:SQL Server 2019 (15.x) 及更高版本。
    指示加密扫描当前状态的字符串。
    NONE
    RUNNING
    SUSPENDED
    ABORTED
    完成
    encryption_scan_modify_date datetime 适用于:SQL Server 2019 (15.x) 及更高版本。
    显示上次修改加密扫描状态的日期(UTC)。

    当数据库设置为加密时,将加密全文检索。 在 SQL Server 2008 之前的 SQL Server 版本中创建的这些索引由 SQL Server 2008 或更高版本导入数据库,并由 TDE 加密。

    对备份文件进行压缩加密

    压缩备份的基础是利用WinRAR,使用数据库xp_cmdshell存储过程,执行cmd命令来对文件进行压缩加密备份

    xp_cmdshell服务器配置选项

    如果需要启用 xp_cmdshell,可以使用基于策略的管理或运行 sp_configure 系统存储过程,如以下代码示例所示:

    -- To allow advanced options to be changed.  
    EXECUTE sp_configure 'show advanced options', 1;  
    GO  
    -- To update the currently configured value for advanced options.  
    RECONFIGURE;  
    GO  
    -- To enable the feature.  
    EXECUTE sp_configure 'xp_cmdshell', 1;  
    GO  
    -- To update the currently configured value for this feature.  
    RECONFIGURE;  
    GO
    

    xp_cmdshell

    EXEC xp_cmdshell { 'command_string' } [ , no_output ]
    

    参数

    • " command_string "
      包含要传递到操作系统的命令的字符串。 command_string为varchar (8000) 或nvarchar (4000),无默认值。 command_string不能包含一组以上的双引号。 如果在command_string中引用的文件路径或程序名称中有空格,则需要使用一对引号。 如果不方便使用内含的空格,则可考虑使用 FAT 8.3 文件名作为解决方法。
    • no_output
      可选参数,指定不应向客户端返回任何输出。

    返回代码值
    0(成功)或 1(失败)

    Xp_cmdshell生成的 Windows 进程与服务帐户具有相同的安全权限 SQL Server 。
    xp_cmdshell同步操作。 在命令 shell 命令执行完毕之前,不会将控制权返回给调用方。
    可以使用基于策略的管理或通过执行sp_configure来启用和禁用xp_cmdshell 。

    示例:

    DECLARE @path varchar(2000) = dbo.a_getInitConfig('Backup_Path')
    DECLARE @FileName varchar(200) = 'HBStation_Cancel_Agent' + '_' + REPLACE(CONVERT(varchar, GETDATE(), 23), '-', '') + '_Full'
    DECLARE @bakName varchar(200) = @FileName + '.bak'
    DECLARE @rarName varchar(200) = @FileName + '.rar'
    DECLARE @cmd nvarchar(2000)
    
    -- 完成备份数据库
    EXEC('BACKUP DATABASE [HBStation_Cancel_Agent] TO DISK = '''+@path + @bakName+''' WITH NOFORMAT, INIT,  NAME = '''+@bakName +''', COMPRESSION ')
    
    -- password为压缩密码
    -- 将备份文件进行压缩,并删除原文件
    SET @cmd = 'C:/Progra~1/WinRAR/RAR.exe a -ppassword -df -ep1 "'+ @path + @rarName +'" "'+ @path + @bakName +'"'
    
    EXEC xp_cmdshell @cmd
    
    
    展开全文
  • 数据库备份数据库备份方案:全量备份全量备份就是指某一个时间点上的所有数据或应用进行的一个完全拷贝,数据恢复快,备份时间长增量备份增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前...

    数据库备份

    数据库备份方案:

    全量备份

    全量备份就是指对某一个时间点上的所有数据或应用进行的一个完全拷贝,

    数据恢复快,备份时间长

    增量备份

    增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份

    与前一次相比增加和者被修改的文件。

    没有重复的备份数据

    备份时间短

    恢复数据时必须按一定的顺序进行

    差异备份

    备份上一次的完全备份后发生变化的所有文件,差异备份是指在一次全备份后到进行差异备份的这段时间内

    对那些增加或者修改文件的备份。在进行恢复时,我们只需对第一次全量备份和最后一次差异备份进行恢复。

    备份的工具mysqldump

    /语法:

    mysqldump [OPTIONS] database [tables ...]

    mysqldump [OPTIONS] --all-databases [OPTIONS]

    mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]

    //常用的OPTIONS:

    -uUSERNAME //指定数据库用户名

    -hHOST //指定服务器主机,请使用ip地址

    -pPASSWORD //指定数据库用户的密码

    -P# //指定数据库监听的端口,这里的#需用实际的端口号代替,如-P3307

    1.全量备份

    mysql> show databases;

    +--------------------+

    | Database |

    +--------------------+

    | information_schema |

    | mysql |

    | performance_schema |

    | sys |

    | test |

    +--------------------+

    5 rows in set (0.01 sec)

    mysql> use test;

    Database changed

    mysql> show tables;

    +----------------+

    | Tables_in_test |

    +----------------+

    | name |

    | run |

    +----------------+

    2 rows in set (0.00 sec)

    #备份所有数据库

    [root@localhost ~]# mysqldump -uroot -p --all-databases > all-$(date +%F-%T).mysql

    Enter password:

    #备份test数据库name表

    [root@localhost ~]# mysqldump -uroot -p test name > table-$(date +%F-%T).mysql

    Enter password:

    #备份test数据库

    [root@localhost ~]# mysqldump -uroot -p --databases test > DBtest-$(date +%F-%T).mysql

    Enter password:

    [root@localhost ~]# ls

    all-2020-12-29-22:53:34.mysql DBtest-2020-12-29-22:59:41.mysql table-2020-12-29-22:57:34.mysql table-2020-12-29-22:58:33.mysql

    数据库恢复

    #误删test数据库

    mysql> drop database test;

    Query OK, 2 rows affected (0.01 sec)

    mysql> show databases;

    +--------------------+

    | Database |

    +--------------------+

    | information_schema |

    | mysql |

    | performance_schema |

    | sys |

    +--------------------+

    4 rows in set (0.00 sec)

    #恢复test数据库

    [root@localhost ~]# mysql -uroot -p < DBtest-2020-12-29-22\:59\:41.mysql

    Enter password:

    [root@localhost ~]# mysql -uroot -p -e 'show databases;'

    Enter password:

    +--------------------+

    | Database |

    +--------------------+

    | information_schema |

    | mysql |

    | performance_schema |

    | sys |

    | test |

    +--------------------+

    2.差异备份

    开启MySQL服务器的二进制日志功能

    [root@localhost ~]# vim /etc/my.cnf

    [mysqld]

    basedir = /usr/local/mysql

    datadir = /opt/data

    socket = /tmp/mysql.sock

    port = 3306

    pid-file = /opt/data/mysql.pid

    user = mysql

    skip-name-resolve

    server-id=1 #设置服务器标识符

    log-bin=mysql_bin #开启二进制日志功能

    #重启服务

    [root@localhost ~]# service mysqld restart

    Shutting down MySQL.. SUCCESS!

    Starting MySQL. SUCCESS!

    对数据库进行完全备份

    mysql> show databases ;

    +--------------------+

    | Database |

    +--------------------+

    | information_schema |

    | mysql |

    | test |

    +--------------------+

    3 rows in set (0.01 sec)

    mysql> use test;

    Reading table information for completion of table and column names

    You can turn off this feature to get a quicker startup with -A

    Database changed

    mysql> show tables;

    +----------------+

    | Tables_in_test |

    +----------------+

    | name |

    | run |

    +----------------+

    2 rows in set (0.00 sec)

    mysql> select * from name;

    +----+---------+------+

    | id | name | age |

    +----+---------+------+

    | 1 | tom | 18 |

    | 2 | jerry | 19 |

    | 3 | battle | 20 |

    | 4 | between | 21 |

    +----+---------+------+

    4 rows in set (0.00 sec)

    mysql> select * from run;

    +----+----------+------+

    | id | name | age |

    +----+----------+------+

    | 1 | xiaoming | 20 |

    | 2 | huahua | 22 |

    | 3 | yechui | 25 |

    +----+----------+------+

    3 rows in set (0.00 sec)

    #全量备份数据库

    [root@localhost ~]#  mysqldump -uroot -p --single-transaction --flush-logs --master-data=2 --all-databases --delete-master-logs > all-$(date +%F-%T).sql

    Enter password:

    [root@localhost ~]# ls

    all-2020-12-30-09:38:40.sql

    #新增内容

    mysql> insert run(name,age) values('xx',12),('cc',18);

    Query OK, 2 rows affected (0.00 sec)

    Records: 2  Duplicates: 0  Warnings: 0

    mysql> select * from run;

    +----+----------+------+

    | id | name     | age  |

    +----+----------+------+

    |  1 | xiaoming |   20 |

    |  2 | huahua   |   22 |

    |  3 | yechui   |   25 |

    |  4 | xx       |   12 |

    |  5 | cc       |   18 |

    +----+----------+------+

    5 rows in set (0.00 sec)

    误删test数据库

    [root@localhost ~]#

    [root@localhost ~]# mysql -uroot -p -e 'drop database test;'

    Enter password:

    [root@localhost ~]# mysql -uroot -p -e 'show databases;'

    Enter password:

    +--------------------+

    | Database |

    +--------------------+

    | information_schema |

    | mysql |

    | performance_schema |

    | sys |

    +--------------------+

    差异备份的恢复

    刷新创建新的二进制日志

    [root@localhost ~]# ll /opt/data/

    total 123128

    -rw-r-----. 1 mysql mysql 56 Dec 28 18:44 auto.cnf

    -rw-------. 1 mysql mysql 1676 Dec 28 18:44 ca-key.pem

    -rw-r--r--. 1 mysql mysql 1112 Dec 28 18:44 ca.pem

    -rw-r--r--. 1 mysql mysql 1112 Dec 28 18:44 client-cert.pem

    -rw-------. 1 mysql mysql 1676 Dec 28 18:44 client-key.pem

    -rw-r-----. 1 mysql mysql 963 Dec 30 09:37 ib_buffer_pool

    -rw-r-----. 1 mysql mysql 12582912 Dec 30 09:54 ibdata1

    -rw-r-----. 1 mysql mysql 50331648 Dec 30 09:54 ib_logfile0

    -rw-r-----. 1 mysql mysql 50331648 Dec 28 18:44 ib_logfile1

    -rw-r-----. 1 mysql mysql 12582912 Dec 30 09:38 ibtmp1

    -rw-r-----. 1 mysql mysql 163944 Dec 30 09:37 localhost.localdomain.err

    drwxr-x---. 2 mysql mysql 4096 Dec 30 09:37 mysql

    -rw-r-----. 1 mysql mysql 582 Dec 30 09:52 mysql_bin.000010

    -rw-r-----. 1 mysql mysql 19 Dec 30 09:38 mysql_bin.index

    -rw-r-----. 1 mysql mysql 5 Dec 30 09:37 mysql.pid

    -rw-r--r--. 1 root root 6 Dec 30 09:37 mysql_upgrade_info

    drwxr-x---. 2 mysql mysql 8192 Dec 30 09:37 performance_schema

    -rw-------. 1 mysql mysql 1676 Dec 28 18:44 private_key.pem

    -rw-r--r--. 1 mysql mysql 452 Dec 28 18:44 public_key.pem

    -rw-r--r--. 1 mysql mysql 1112 Dec 28 18:44 server-cert.pem

    -rw-------. 1 mysql mysql 1680 Dec 28 18:44 server-key.pem

    drwxr-x---. 2 mysql mysql 8192 Dec 30 09:37 sys

    [root@localhost ~]# mysqladmin -uroot -p flush-logs #刷新创建新的二进制文件

    Enter password:

    [root@localhost ~]# ll /opt/data/

    total 123132

    -rw-r-----. 1 mysql mysql 56 Dec 28 18:44 auto.cnf

    -rw-------. 1 mysql mysql 1676 Dec 28 18:44 ca-key.pem

    -rw-r--r--. 1 mysql mysql 1112 Dec 28 18:44 ca.pem

    -rw-r--r--. 1 mysql mysql 1112 Dec 28 18:44 client-cert.pem

    -rw-------. 1 mysql mysql 1676 Dec 28 18:44 client-key.pem

    -rw-r-----. 1 mysql mysql 963 Dec 30 09:37 ib_buffer_pool

    -rw-r-----. 1 mysql mysql 12582912 Dec 30 09:54 ibdata1

    -rw-r-----. 1 mysql mysql 50331648 Dec 30 09:54 ib_logfile0

    -rw-r-----. 1 mysql mysql 50331648 Dec 28 18:44 ib_logfile1

    -rw-r-----. 1 mysql mysql 12582912 Dec 30 09:38 ibtmp1

    -rw-r-----. 1 mysql mysql 163944 Dec 30 09:37 localhost.localdomain.err

    drwxr-x---. 2 mysql mysql 4096 Dec 30 09:37 mysql

    -rw-r-----. 1 mysql mysql 629 Dec 30 09:55 mysql_bin.000010

    -rw-r-----. 1 mysql mysql 154 Dec 30 09:55 mysql_bin.000011

    恢复完全备份

    [root@localhost ~]# mysql -uroot -p < all-2020-12-30-09\:38\:40.sql

    Enter password:

    [root@localhost ~]# mysql -uroot -p -e 'show databases;'

    Enter password:

    +--------------------+

    | Database |

    +--------------------+

    | information_schema |

    | mysql |

    | performance_schema |

    | sys |

    | test |

    +--------------------+

    [root@localhost ~]# mysql -uroot -p -e 'select * from test.run;'

    Enter password:

    +----+----------+------+

    | id | name | age |

    +----+----------+------+

    | 1 | xiaoming | 20 |

    | 2 | huahua | 22 |

    | 3 | yechui | 25 |

    +----+----------+------+

    [root@localhost ~]#

    恢复差异备份

    #j检查误删时数据库在什么位置

    mysql> show binlog events in 'mysql_bin.000010';

    +------------------+-----+----------------+-----------+-------------+---------------------------------------+

    | Log_name | Pos | Event_type | Server_id | End_log_pos | Info |

    +------------------+-----+----------------+-----------+-------------+---------------------------------------+

    | mysql_bin.000010 | 4 | Format_desc | 1 | 123 | Server ver: 5.7.31-log, Binlog ver: 4 |

    | mysql_bin.000010 | 123 | Previous_gtids | 1 | 154 | |

    | mysql_bin.000010 | 154 | Anonymous_Gtid | 1 | 219 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' |

    | mysql_bin.000010 | 219 | Query | 1 | 291 | BEGIN |

    | mysql_bin.000010 | 291 | Table_map | 1 | 341 | table_id: 175 (test.run) |

    | mysql_bin.000010 | 341 | Write_rows | 1 | 394 | table_id: 175 flags: STMT_END_F |

    | mysql_bin.000010 | 394 | Xid | 1 | 425 | COMMIT /* xid=956 */ |

    | mysql_bin.000010 | 425 | Anonymous_Gtid | 1 | 490 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' |

    | mysql_bin.000010 | 490 | Query | 1 | 582 | drop database test |

    | mysql_bin.000010 | 582 | Rotate | 1 | 629 | mysql_bin.000011;pos=4 |

    +------------------+-----+----------------+-----------+-------------+---------------------------------------+

    10 rows in set (0.00 sec)

    #使用mysqlbinlog恢复差异备份

    Bye

    [root@localhost ~]# mysqlbinlog --stop-position=490 /opt/data/mysql_bin.000010 | mysql -uroot -p

    Enter password:

    [root@localhost ~]# mysql -uroot -p -e 'select * from test.run;'

    Enter password:

    +----+----------+------+

    | id | name | age |

    +----+----------+------+

    | 1 | xiaoming | 20 |

    | 2 | huahua | 22 |

    | 3 | yechui | 25 |

    | 4 | xx | 12 |

    | 5 | cc | 18 |

    +----+----------+------+

    报错:mysqldump: Couldn't execute 'SHOW VARIABLES LIKE 'gtid\_mode'': Table 'performance_schema.session_variables' doesn't exist (1146)

    解决办法:mysql_upgrade -u root -p --force    #更新

    service mysqld restart  #重启服务

    展开全文
  • MySQL数据库备份和恢复方案小结

    千次阅读 2017-12-20 20:08:11
    这两天在调研MySQL数据库备份和恢复方案备份对象是大量Innodb表,或者加上少量的MyISAM表。   InnoDB备份常见问题: 文件一致性:数据文件、缓存、日志文件必须保持严格一致。加锁的方法没法保证一致性,...
  • 文章目录MySQL数据库的备份【1】数据的备份认识(1)...数据备份的配置方法(1)物理冷备(2)MySQL完整备份与恢复1】备份整个数据库:2】备份多个数据库:3】备份表4】所有库进行备份(3)MySQL增量备份与恢复(4)M
  • 数据库增量备份恢复

    2020-06-29 11:39:49
    (误操作恢复的解决方案案例) 作业2: 1:创建client 库 在创建表之前 我们需要root 用户授权 方便我们使用外部工具来创建表 创建user_info 表 进入虚拟机查看数据库表 用户id 前面没有0 (原因 在添加...
  • 数据库常用备份方案2. mysql备份工具mysqldump3. mysql数据恢复1.4 差异备份与恢复1.4.1. mysql差异备份1.4.2. mysql差异备份恢复 1. 数据库常用备份方案 数据库备份方案: 全量备份 增量备份 差异备份 备份...
  • PostgreSQL自带一个客户端pgAdmin,里面有个备份,恢复选项,也能对数据库进行备份 恢复(还原),但最近发现数据库慢慢庞大的时候,经常出错,备份的文件过程中出错的几率那是相当大,手动调节灰常有限。...
  • 经济普查全国数据库备份方案的选择研究 在经济普查数据处理过程中,为了各专业调查组能顺利地本专业的数据进行审核汇总等操作,确保数据处理系统数据库的安全,可靠,并在意外发生时能尽快恢复到最近可用的状态,...
  • 数据库的备份是相当重要的,尤其是当发生数据文件...在 MySQL 数据库中提供了许多的备份方案,主要包括逻辑备份、物理备份、全备份以及增量备份。读者可以根据自己的需求来选择适合自己使用的方式备份数据。物理备份...
  • 数据库备份的分类

    千次阅读 2014-12-27 21:51:41
    一、按数据库备份的本质划分逻辑备份物理备份逻辑备份:指通过逻辑导出数据进行备份。将数据库中的用户对象导出到一个二进制文件中,逻辑备份使用导入导出工具:EXPDP/IMPDP或EXP/IMP,由于将数据库对象导出到操作...
  • 数据库的备份是相当重要的,尤其是当发生数据文件...在 MySQL 数据库中提供了许多的备份方案,主要包括逻辑备份、物理备份、全备份以及增量备份。读者可以根据自己的需求来选择适合自己使用的方式备份数据。物理备份...
  • postgresql数据库备份和恢复

    千次阅读 2017-04-19 22:23:15
    PostgreSQL自带一个客户端pgAdmin,里面有个备份,恢复选项,也能对数据库进行备份 恢复(还原),但最近发现数据库慢慢庞大的时候,经常出错,备份的文件过程中出错的几率那是相当大,手动调节灰常有限。...
  • mysql数据库备份

    2018-10-06 16:15:25
    下面,就mysql数据库误删除后的恢复方案进行说明。 一、工作场景 (1)MySQL数据库每晚12:00自动完全备份。 (2)某天早上上班,9点的时候,一同事犯晕drop了一个数据库! (3)需要紧急恢复!可利用备份的数据文件...
  • Sybase数据库自动备份的实现

    千次阅读 2011-10-24 22:18:59
    那么有什么方法实现对数据库的自动备份呢?其实方法有很多。下面介绍笔者平时使用的、简单而容易实现的、针对本地网监控系统Sybase数据库备份方法。  1 全量备份方案  (1)传统方法:使用Sybase的Backup...
  • 1、创建名称为 LZZG 的 DATABASE LINK,计划在对应的DBLINK下面创建表AC01备份表,执行以下SQL报错,提示 ORA-02021:不允许远程数据库进行DDL操作 CREATE TABLE AC01_BAK@LZZG AS SELECT * FROM AC01@LZZG; 2、...
  • Xtrabackup简介 Percona XtraBackup是开源免费的MySQL数据库热备份软件,它能InnoDB和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM的备份同样需要加表锁)。...1、无需停止数据库进行InnoDB热备
  • 数据库的备份是相当重要的,尤其是当发生数据文件...在 MySQL 数据库中提供了许多的备份方案,主要包括逻辑备份、物理备份、全备份以及增量备份。读者可以根据自己的需求来选择适合自己使用的方式备份数据。1) 物...
  • 运维工程师的日常工作需要各种数据进行备份,其中数据库数据的备份当属重点之一,为了方便管理,选择哪种备份方案是很重要的。数据备份种类全量备份全量备份就是指某一个时间点上的所有数据或应用进行的一个完全...
  • 数据库的备份是相当重要的,尤其是当发生数据文件...在 MySQL 数据库中提供了许多的备份方案,主要包括逻辑备份、物理备份、全备份以及增量备份。读者可以根据自己的需求来选择适合自己使用的方式备份数据。物理备份...
  • (1)物理备份对数据库进行物理文件(数据文件、日志文件等)的备份 (2)逻辑备份:对数据逻辑组件(表、库等数据库对象)的备份 (3)完全备份:每次对数据库进行完整的备份 优点:备份与恢复操作简单 缺点:...
  • PostgreSQL自带一个客户端pgAdmin,里面有个备份,恢复选项,也能对数据库进行备份 恢复(还原),但最近发现数据库慢慢庞大的时候,经常出错,备份的文件过程中出错的几率那是相当大,手动调节灰常有限。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 699
精华内容 279
关键字:

对数据库进行备份方案