标签: backup

如何在 Postgres 中每小时做一次增量备份?

尝试对单个 Postgres 服务器(Win7 64)进行每小时增量备份。

我有以下设置postgresql.conf

max_wal_senders = 2
wal_level       = archive
archive_mode    = on
archive_command = 'copy "%p" "c:\\postgres\\foo\\%f"'
Run Code Online (Sandbox Code Playgroud)

(重新开始)

我做了一个基本备份 pg_basebackup -U postgres -D ..\foo -F t -x

它在base.tar文件foo夹中创建了一个大文件并添加了一些 16,384 KB 的文件,我认为这些文件是 WAL。

我不明白的是为什么 WALfoo不会改变data/pg_xlog变化中的 WAL 。pg 不应该复制它们吗?它是如何决定这样做的?

也许我需要设置archive_timeout=3600

我见过几个站点(pg 的邮件列表、bacula 的 postgres 页面)说您需要调用 pg_start_backup() 和 pg_stop_backup(),但我相信这些不是必需的。真的吗?

次要问题:

  1. 多久data/pg_xlog写入一次 WAL ?什么触发写入?

    如果我\q在 psql 中执行一些 DML,它似乎会更新 WAL 。或者在 pgAdmin 中编辑一个表,然后关闭窗口。我认为它会在提交时写入。

  2. 最佳实践?pg_basebackup 每周一次?将 …

postgresql backup windows postgresql-9.4

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

PostgreSQL 如何在启用 WAL 的备份中间处理检查点?

在 PostgreSQL v9.0 上,我有一个 WAL 归档系统在工作。因此 WAL 文件定期存档(当创建 3 个 WAL 或 WAL 超过 15 分钟时)。

现在我添加 PG_DATA 目录(不包括 pg_xlog 子目录)的二进制包。为此,我执行了pg_start_backup(),二进制副本和pg_stop_backup().

我想我很清楚 pg_start_backup 和 pg_stop_backup 在做什么,第一个创建检查点,最后一个确保最后一个 WAL 文件被存档。

官方文档中我们可以看到对于二进制数据副本我们应该:

使用任何方便的文件系统备份工具执行备份,例如 tar 或 cpio(不是 pg_dump 或 pg_dumpall)。在执行此操作时停止数据库的正常操作既不必要也不可取。

所以我很困惑。这意味着在我们制作副本时可以执行检查点。我看到很多文档说明复制命令应该允许在执行复制时更改数据,我对此没意见,只是找到合适的工具的问题。但我的问题是postgreSQL 将如何处理包含一些不一致文件(一些来自检查点之前,一些来自检查点之后)的 pg_data 内容的恢复

通过重放事务日志 Postgresql 能够将所有这些文件置于正确的状态吗?我看到在执行备份时创建表和删除操作是危险的,是不是有一些像vacuum命令这样的危险操作?pg_backup 是否暂停真空操作?我应该在二进制复制过程开始时复制 global/pg_control 文件吗?我应该使用启用快照的文件系统(如使用 xfs-freeze)来获得更快的恢复过程吗?

我看到备份脚本崩溃不会自动启动 pg_stop_backup,所以我的备份状态有可能会持续很长时间(直到我的 nagios 打电话给某人修复 pg_stop_backup() )。因此,如果这两个命令在 PostgreSQL 中有任何不同,我想知道它,以了解它可能产生的影响。

请赐教。

postgresql backup

17
推荐指数
1
解决办法
2281
查看次数

PostgreSQL 9.1 热备份错误:数据库系统正在启动

我一直在为 Postgres 9.1 进行热备份工作一段时间,但遇到了一个一致的问题。在从服务器上重新启动 Postgres 后,pg_log 目录下的 pgstartup 日志文件和每日日志文件读取没有错误。但是,当我尝试使用 psql 命令进入数据库时​​,出现错误:

致命:数据库系统正在启动。

recovery.conf 文件也不会转为 recovery.done。我已经广泛研究了这个错误并始终找到相同的响应:在我尝试重新启动 Postgres 之前,数据库没有完全关闭。我重新启动 Postgres 的唯一方法是通过service postgresql-9.1 restartor/etc/init.d/postgresql-9.1 restart命令。收到此错误后,我终止了所有进程并再次尝试重新启动数据库,但仍然收到相同的错误。我不知道从哪里开始以及如何解决这个问题。以下是我为完成热备份所做的确切过程。

主服务器配置:

pg_hba.conf,添加了以下行:

主机复制 postgres IPAddressOfSlaveServer 信任

postgresql.conf:

wal_level = hot_standby
max_wal_senders = 5
听地址 = '*'
端口 = 5432
max_wal_senders = 5
wal_keep_segments = 32

从服务器配置:

postgresql.conf:

hot_standby = 开

恢复.conf:

待机模式 = 开
primary_conninfo = host=IPAddressOfMasterServer
端口 = 5432
用户 = postgres
restore_command = 'cp /var/lib/pgsql/9.1/data/pg_xlog/%f "%p"'

配置两台服务器后

我在主服务器上更改为 postgres 用户并运行命令:

psql -c …

postgresql backup

17
推荐指数
3
解决办法
8万
查看次数

我可以在没有 SQL Server 的情况下还原 SQL Server .bak 文件吗?

我有一些.bak来自 SQL Server 2005 转储的大文件。

我可以在不使用 SQL Server 的情况下将这些恢复到 PostgreSQL、MySQL 或纯文本文件吗?

开源解决方案将是最有用的。

sql-server backup restore

17
推荐指数
2
解决办法
4万
查看次数

使用 WITH REPLACE 还原备份时出现错误 3154

我的计算机上安装了 SQL 2012 SP1。我做了一个数据库的备份test.bak

我有一个test2同名的数据库,但数据发生了变化。

我想test.bak通过test2数据库恢复。

我总是收到错误:

错误 3154:备份集包含现有数据库以外的数据库的备份。

我试过:

  1. 我右键单击 test2 -> Restore database -> From device

    我选择test.bak并检查了With Replace但我收到错误。

  2. 然后我尝试右键单击 test2 -> Restore file and filegroups

    我选择test.bak并检查了With Replace但我收到错误。

我可以删除旧数据库,然后使用正确的名称恢复备份,但是当我使用 SQL 2008 时,恢复现有数据库没有问题。

好像是因为我用的是SQL2012,所以经常出现这个错误!

sql-server backup restore sql-server-2012

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

10 TB 数据库备份/恢复问题

我们有一个非常大的生产数据库,有 10 TB。我们正在考虑将其迁移到云服务,但我必须了解风险并估计整个过程的持续时间。我使用 Native SQL Server 2014 SP2 备份解决方案每月备份一次数据库。持续时间几乎是 720 分钟 - 12 小时。压缩比为 5,这意味着备份大小几乎为 2 TB。我们负担不起差异备份,因为累积的差异备份需要与完整备份一样多的时间和空间,因此我们进行 T-log 备份(每个 ~200 Mb)而不是每 10 分钟 ~ 每天 144 个文件。最大的问题是拥有所有这些统计数据,有没有人知道恢复包含 10 TB 数据的 2 TB 备份需要多长时间?它会比完整备份持续时间长得多吗?

sql-server backup restore

17
推荐指数
2
解决办法
5770
查看次数

Sql Anywhere 11:恢复增量备份失败

我们想在完整备份后创建远程增量备份。这将使我们能够在发生故障时进行恢复,并使用 SQL Anywhere 网络服务器启动另一台具有尽可能接近实时备份的机器。

我们正在做一个完整的备份如下:

dbbackup -y -c "eng=ServerName.DbName;uid=dba;pwd=sql;links=tcpip(host=ServerName)"
    c:\backuppath\full
Run Code Online (Sandbox Code Playgroud)

这会备份数据库和日志文件,并且可以按预期恢复。对于增量备份,如果有多个增量备份,我已经使用重命名方案尝试了实时和增量事务日志:

dbbackup -y -t -c "eng=ServerName.DbName;uid=dba;pwd=sql;links=tcpip(host=ServerName)"
    c:\backuppath\inc

dbbackup -y -l -c "eng=ServerName.DbName;uid=dba;pwd=sql;links=tcpip(host=ServerName)" 
    c:\backuppath\live
Run Code Online (Sandbox Code Playgroud)

但是,在将事务日志应用于还原时,将事务日志应用于数据库时总是收到错误消息:

10092:无法找到事务日志中引用的表的表定义

事务日志恢复命令是:

dbeng11 "c:\dbpath\dbname.db" -a "c:\backuppath\dbname.log"
Run Code Online (Sandbox Code Playgroud)

该错误没有指定它找不到哪个表,但这是一个受控测试,没有创建或删除任何表。我插入几行然后在尝试恢复之前启动增量备份。

有谁知道在 Sql Anywhere 11 上进行增量备份和还原的正确方法吗?

更新:考虑可能与目标数据库的复杂性有关,我做了一个新的空白数据库和网络服务。然后添加了一个包含两列的表格并插入了几行。进行完整备份,然后插入和删除更多行并提交事务,然后进行增量备份。在恢复完整备份后尝试应用事务日志的增量备份时,这也失败并出现相同的错误...

编辑:

您可以点击此链接查看相同的问题,并提供更多关于 SA 的反馈:http : //sqlanywhere-forum.sybase.com/questions/4760/restoring-incrementallive-backup-failure

backup restore sybase-sql-anywhere

16
推荐指数
1
解决办法
1594
查看次数

如何备份大型MongoDB数据库

在 MongoDB 中备份大型数据集的推荐方法是什么?假设我们有大约 10TB 的数据大小 - 您将如何备份它?

我们正在考虑一个隐藏的、可能延迟的副本集节点。延迟将保护我们免受整个数据库的意外丢失。这是一个可行的解决方案,您还建议调查哪些其他选项?

谢谢!

replication mongodb backup

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

什么是最佳的 mysqldump 设置?

经过一番搜索,我最终得到了以下设置:

    mysqldump\
    --host=localhost\
    --port=3306\
    --databases ****\
    --user=****\
    --password=****\
    --default-character-set=utf8\
    --add-drop-database\
    --add-drop-table\
    --add-locks\
    --complete-insert\
    --extended-insert\
    --lock-all-tables\
    --create-options\
    --disable-keys\
    --quick\
    --order-by-primary\
    --set-charset\
    --tz-utc\
    > dump/test.sql
Run Code Online (Sandbox Code Playgroud)

到目前为止一切顺利,但我对参数和执行有一些疑问。

关于我的第一个问题,我只想确保所有这些都是必需的,并且一起使用时不会引起任何冲突。最终,我想制作一个非常强大且一致的转储文件,其中包含数百万条记录,用于创建表、数据库和插入数据。好消息是让数据库暂时不可用对我来说不是问题。我唯一的目标是制作一个健壮且一致的转储文件。

关于我的第二场音乐会,我想知道如何在命令出错时获得通知,如果是,则抛出异常。

有任何想法吗?

编辑

这是我根据 RolandoMySQLDBA 的反馈更新的 mysqldump 命令。

mysqldump\
--host=localhost\
--port=3306\
--databases ****\
--user=****\
--password=****\
--default-character-set=utf8\
--opt\
--single-transaction\
--routines\
--triggers\
--events\
--add-drop-database\
--add-drop-table\
--complete-insert\
--delayed-insert\
--tz-utc\
> dump/test.sql
Run Code Online (Sandbox Code Playgroud)

mysql mysqldump backup configuration

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

数据库防灾

我的数据库大于 250GB。我使用第三方工具进行计划备份。

计划数据库备份是保护 SQL Server 数据库免受损坏的最佳方法吗?或者你能推荐其他东西吗?

sql-server backup

16
推荐指数
1
解决办法
951
查看次数