标签: backup

DBA 新工作的第一天 - 检查备份和安全性 - 如何?还应该检查什么?

通常,当我在新环境中开始时,我倾向于检查备份在哪里,最后一次完整的时间,最后一次应用的还原时间,我也会检查安全性。

我这样做的方式是通过 T-SQL。

检查备份

        ;with Radhe as (
            SELECT  @@Servername as [Server_Name],
            B.name as Database_Name, 
            ISNULL(STR(ABS(DATEDIFF(day, GetDate(), MAX(Backup_finish_date)))), 'NEVER') as DaysSinceLastBackup,
            ISNULL(Convert(char(11), MAX(backup_finish_date), 113)+ ' ' + CONVERT(VARCHAR(8),MAX(backup_finish_date),108), 'NEVER') as LastBackupDate
            ,BackupSize_GB=CAST(COALESCE(MAX(A.BACKUP_SIZE),0)/1024.00/1024.00/1024.00 AS NUMERIC(18,2))
            ,BackupSize_MB=CAST(COALESCE(MAX(A.BACKUP_SIZE),0)/1024.00/1024.00 AS NUMERIC(18,2))
            ,media_set_id = MAX(A.media_set_id)
            ,[AVG Backup Duration]= AVG(CAST(DATEDIFF(s, A.backup_start_date, A.backup_finish_date) AS int))
            ,[Longest Backup Duration]= MAX(CAST(DATEDIFF(s, A.backup_start_date, A.backup_finish_date) AS int))
            ,A.type
            FROM sys.databases B 

            LEFT OUTER JOIN msdb.dbo.backupset A 
                         ON A.database_name = B.name 
                        AND A.is_copy_only = 0
                        AND (A.type = 'D')  --'D' full, 'L' …
Run Code Online (Sandbox Code Playgroud)

security sql-server backup restore sql-server-2014

33
推荐指数
1
解决办法
5793
查看次数

仅备份一个架构并将其还原到另一台服务器上

我有一个名为“A”的数据库,它有两个模式“B”和“C”。

我想在不同的服务器上备份和恢复架构“B”(包括数据)。不知道如何做到这一点,因为我是 Postgres 的新手。

我是否必须在名为“A”的新服务器上创建一个新数据库,然后在其上恢复架构“B”?

请帮助执行必要的命令。

在 Ubuntu 12.04 上运行的 PostgreSQL 9.1

schema postgresql backup postgresql-9.1

32
推荐指数
3
解决办法
9万
查看次数

从未知来源恢复备份的安全隐患?

场景:您收到了一个数据库备份,并被告知将其还原到服务器(该服务器已经托管了其他数据库),但没有提供有关备份包含的内容或源是否应受信任的有用信息。

问题 1:恢复很可能是恶意的备份有什么潜在影响?

问题 2:您可以采取哪些措施来保护您的服务器/其他数据库中的数据免受恢复潜在恶意备份的影响?RESTORE VERIFYONLY似乎是一个很好的第一步。最终的答案可能是“在无法访问外部世界的沙箱 VM 中恢复数据库”,但让我们假设该选项不在表中。在这种情况下还应该做什么?

security sql-server backup

32
推荐指数
6
解决办法
2484
查看次数

Mongodb 增量备份

我的任务是为 MongoDB 副本集设置增量备份,作为起点,当然,我用谷歌搜索它并在 MongoDB 文档上找不到任何内容,但我确实在 Stack Overflow 上找到了这个问题,这鼓励开发我自己的解决方案因为没有发现 Tayra 很活跃。

我阅读oplog并意识到开发一些东西来重播日志非常容易,但事实证明我没有必要像mongorestore我那样这样做。

现在我有了一个使用 bash 脚本的有效解决方案,而且非常简单,这就是我在这里询问我的逻辑是否有任何缺陷的原因,或者将来可能会咬我的东西。

下面我是如何实现的:

完整备份程序

  1. 锁定在次要成员上写入 db.fsyncLock()

  2. 拍摄快照

  3. 记录 oplog 的最后一个位置

    db.oplog.rs.find().sort({$natural:-1}).limit(1).next().ts
    
    Run Code Online (Sandbox Code Playgroud)
  4. 解锁写入 db.fsyncUnlock()

增量备份过程

  1. 锁定在次要成员上写入

  2. 在完整(或最新的增量)备份上从记录的 oplog 位置转储 oplog:

    mongodump --host <secondary> -d local -c oplog.rs -o /mnt/mongo-test_backup/1 
        --query '{ "ts" : { $gt :  Timestamp(1437725201, 50) } }'
    
    Run Code Online (Sandbox Code Playgroud)
  3. 记录最新的 oplog 位置(与完整备份相同)

  4. 解锁写入

完整备份还原过程

  1. 停止所有实例 mongod
  2. 将快照复制到将是主要的框的数据目录,但请确保排除所有local*mongod.lock 这种还原技术称为通过破坏镜像重新配置
  3. 开始初级
  4. 重新配置副本集
  5. 在没有任何数据的情况下启动辅助节点,让它们执行初始同步。或使用新local数据库从新主数据库复制数据

恢复增量备份

当我们创建增量备份时,它的存储方式如下:

/mnt/mongo-test_backup/1/local/oplog.rs.bson
/mnt/mongo-test_backup/1/local/oplog.rs.metadata.json
Run Code Online (Sandbox Code Playgroud)

我们被插入 …

mongodb backup

32
推荐指数
1
解决办法
2万
查看次数

mysqldump 与 mysqlpump

我刚刚听说mysqlpump - 看起来它是与 MySQL 5.7 一起发布的,但是 MySQL 5.7 仍然包含mysqldump。它们都是备份程序,但谁能总结一下主要区别?是否存在其中之一可能更好地工作的场景?mysqldump 会被 mysqlpump 淘汰吗?

mysql mysqldump backup export

32
推荐指数
3
解决办法
2万
查看次数

耗时超过 15 秒的 I/O 请求

通常我们每周的完整备份在大约 35 分钟内完成,每日差异备份在大约 5 分钟内完成。从星期二开始,每天的日常工作需要将近 4 个小时才能完成,远远超出了应有的要求。巧合的是,这在我们获得新的 SAN/磁盘配置后立即开始发生。

请注意,服务器正在生产中运行,我们没有整体问题,它运行平稳 - 除了主要表现在备份性能中的 IO 问题。

在备份期间查看 dm_exec_requests,备份一直在等待 ASYNC_IO_COMPLETION。啊哈,所以我们有磁盘争用!

但是,MDF(日志存储在本地磁盘上)和备份驱动器都没有任何活动(IOPS ~= 0 - 我们有足够的内存)。磁盘队列长度 ~= 0 也是如此。CPU 徘徊在 2-3% 左右,也没有问题。

SAN 是 Dell MD3220i,LUN 由 6x10k SAS 驱动器组成。服务器通过两条物理路径连接到 SAN,每条路径都通过一个单独的交换机与 SAN 的冗余连接 - 总共有四个路径,其中两个随时处于活动状态。我可以通过任务管理器验证两个连接是否都处于活动状态 - 完美均匀地分配负载。两个连接都运行 1G 全双工。

我们曾经使用巨型帧,但我已禁用它们以排除此处的任何问题 - 没有变化。我们有另一台服务器(相同的操作系统 + 配置,2008 R2)连接到其他 LUN,它没有显示任何问题。然而,它没有运行 SQL Server,而只是在它们之上共享 CIFS。但是,它的 LUN 首选路径之一与麻烦的 LUN 位于同一 SAN 控制器上 - 所以我也排除了这一点。

尽管存在以下问题,但运行几个 SQLIO 测试(10G 测试文件)似乎表明 IO 是不错的:

sqlio -kR -t8 -o8 -s30 -frandom -b8 -BN -LS -Fparam.txt
IOs/sec:  3582.20 …
Run Code Online (Sandbox Code Playgroud)

backup sql-server-2008-r2 network san

31
推荐指数
1
解决办法
1万
查看次数

如何在转储之前确定转储文件的大小?

在使用 mysqldump 之类的东西之前,如何确定或估计 SQL 转储文件的大小?

mysql mysqldump backup export database-size

29
推荐指数
1
解决办法
2万
查看次数

是否可以同时恢复sql-server bak和收缩日志?

我们有一个客户的 bak 文件,我们已将其转移到我们的开发人员办公室进行问题调查。备份当前为 25GB,还原的数据库大小大致相同,但需要 100GB 才能还原。我相信这是因为数据库设置为具有 75GB 的事务日志大小。恢复数据库后,我们可以缩小日志文件,但有没有办法在恢复中做到这一点?

sql-server-2005 sql-server backup restore

27
推荐指数
3
解决办法
4万
查看次数

在维护计划中创建备份数据库任务时,“备份集将过期:”选项有什么用

在备份数据库时,我想使用“备份集将过期: ”选项来删除/覆盖旧的数据库备份。我无法使用此选项。

关于如何在创建维护计划时使用“备份集将过期:”选项的任何建议将不胜感激。

sql-server backup maintenance

26
推荐指数
1
解决办法
7万
查看次数

mysqldump 与 INSERT ... ON DUPLICATE

我想将数据从一个数据库合并到另一个数据库。所以我创建转储,mysqldump然后将其导入另一个数据库(具有相同的表结构)。在这种情况下,我没有任何问题(例如重复条目或其他问题)。

但是为了测试目的我做了一些合并,稍后我会做最终合并。所以,我想执行几次合并(数据可能会更改)。请注意,我的表中的行永远不会删除,只能插入或更新。

我可以使用 ON DUPLICATE 选项创建 mysqldump 吗?或者我可以合并插入新数据并更新修改数据的转储?

当然,我可以ON DUPLICATE手动插入转储,但我想自动化合并过程。

mysql mysqldump backup

25
推荐指数
1
解决办法
3万
查看次数