标签: database-backups

使用 JPA 备份数据库(设计)

我有一个工作代码,但并不总是有效。这是我的方法:

\n\n

创建备份

\n\n
    \n
  1. 为源数据库创建实体管理器
  2. \n
  3. 为目标数据库创建实体管理器(嵌入式 Derby 数据库)
  4. \n
  5. 复制实体(选择表的所有条目(现在对表顺序进行硬编码)并将它们复制到目标数据库。基本上是全选并从源分离实体并保留在目标上)
  6. \n
  7. 压缩嵌入式 Derby 数据库。
  8. \n
\n\n

从备份加载

\n\n
    \n
  1. 解压备份
  2. \n
  3. 执行备份
  4. \n
  5. 清理目标数据库(删除所有表)
  6. \n
  7. 复制实体
  8. \n
\n\n

在某些时候,我会使用 JPA 2 元数据来获取要复制的表并选择它们需要复制的顺序(由于约束)。

\n\n

由于某种原因,这种方法并不总是有效,因为我看到“丢失”的条目未恢复。

\n\n

这是代码:

\n\n
package com.bluecubs.xinco.core.server;\n\nimport java.io.File;\nimport java.io.FileInputStream;\nimport java.io.FileOutputStream;\nimport java.io.IOException;\nimport java.sql.DriverManager;\nimport java.sql.SQLException;\nimport java.text.SimpleDateFormat;\nimport java.util.Collection;\nimport java.util.Collections;\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.logging.Level;\nimport java.util.logging.Logger;\nimport java.util.zip.ZipEntry;\nimport java.util.zip.ZipInputStream;\nimport java.util.zip.ZipOutputStream;\nimport javax.persistence.EntityManager;\nimport javax.persistence.EntityManagerFactory;\nimport javax.persistence.Persistence;\nimport org.apache.commons.io.FileUtils;\nimport org.apache.commons.io.filefilter.IOFileFilter;\nimport org.apache.commons.io.filefilter.TrueFileFilter;\n\n/**\n * This is a complex task and is heavily dependant on the architecture\n * of …
Run Code Online (Sandbox Code Playgroud)

jpa database-backups

5
推荐指数
1
解决办法
7427
查看次数

Mongodump 与 --oplog 进行热备份

我正在寻找在副本集(非分片)上执行 Mongodb 备份的正确方法。

通过阅读 Mongodb 文档,我了解到“mongodump --oplog”应该足够了,即使在副本(从属)服务器上也是如此。

来自 mongodb / mongodump 文档:

--oplog 使用此选项可确保 mongodump 创建包含 oplog 的数据库转储,以创建 mongod 实例状态的时间点快照。要恢复到特定时间点备份,请结合使用此选项创建的输出和 mongorestore --oplogReplay。

如果没有 --oplog,如果在转储操作期间有写入操作,转储将不会及时反映单个时刻。更新过程中对数据库所做的更改可能会影响备份的输出

我仍然很难理解 Mongodb 如何备份并继续写入数据库并进行一致的备份,即使使用 --oplog 也是如此。我应该先锁定我的集合还是运行“mongodump --oplog ”是否安全?还有什么我应该知道的吗?

谢谢。

database-backups mongodb

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

定期将 SQLite Memory-DB 保存到文件

我有一个连续运行的程序,每秒将数据保存到 SQLite 数据库中。我想改变这一点并使用每 15 分钟保存到磁盘的内存数据库。

我的程序是用 Java 编写的,我使用SQLite4Java库。它运行良好,我有一个“作业队列”,可以使用 Java 中的 ExecutorService 处理插入。

我发现第一次写入文件时我可以使用“SQLiteConnection.initializeBackup(File)”,然后在内存中删除并创建表,并且可能使用 VACUUM 来清除内存。这工作得很好,但后来就变得棘手了...如何在 15 分钟后将内存数据库中的新数据追加/合并到现有文件中?

有标准方法可以做到这一点吗?简单地从内存数据库中的每个表中获取所有数据(并锁定它,以防止进一步插入),循环它并将其插入文件数据库中,这是一个好的做法吗?

sql sqlite database-backups

5
推荐指数
0
解决办法
3359
查看次数

如何mysqldump数据库中每个表的最后10行?

有很多关于如何从数据库表中 mysqldump 最后“n”行的文章。例如,从StackOverflowServerFaultmysqldump --user=superman --password=batman --host=gothamcity.rds.com --where="1=1 ORDER BY id DESC LIMIT 10" DB_NAME TABLE_NAME ./path/to/dump/file.sql中的这些答案中可以找到

但是,我如何告诉 mysqldump 导出数据库中每个表的最后“n”行

mysql database export database-backups

5
推荐指数
1
解决办法
6872
查看次数

加速数据库恢复

我正在使用 MS SQL 2008 R2 (10.50.1600)

我想知道为什么我的数据库非常小(近 1200 行,只有 2 个表),恢复速度这么慢(12-15 秒)。我想它与数据库内的日志文件有关(我不确定)。问题是我不关心日志文件。我只对 mdf 文件感兴趣。是否可以加快数据库恢复速度?恐怕对于一些较大的数据库来说,这将需要很长时间。恢复时间对我来说很重要。

我这样做是这样的:

BACKUP DATABASE TEST TO DISK = 'myDataBase' WITH INIT

RESTORE DATABASE TEST 
FROM DISK = 'myDataBase' 
WITH REPLACE
------------------------------------------------------------------------
Processed 256 pages for database 'myDataBase', file 'myDataBase' on file 1.
Processed 1 pages for database 'myDataBase', file 'myDataBase_log' on file 1.
RESTORE DATABASE successfully processed 257 pages in 12.218 seconds (0.164 MB/sec).
Run Code Online (Sandbox Code Playgroud)

我做了一些其他测试,并创建了空的全新数据库。恢复该数据库只花了不到一秒的时间。备份与之前相同。恢复报告:

Processed 176 pages for database 'TEST', file 'TEST' on file 1.
Processed …
Run Code Online (Sandbox Code Playgroud)

database sql-server database-restore database-backups database-performance

5
推荐指数
1
解决办法
3215
查看次数

如何将所有表导出到单独的 sql 文件中

我必须在Godaddy主机上上传我的数据库,但它限制上传超过 8 MB 的文件。所以我决定一一上传我的表。我正在寻找一个查询或一种方法来逐个导出每个表,有什么方法可以轻松完成这项工作?我用数据获取每个表的sql?

我正在使用 PHPMyAdmin。

mysql database backup phpmyadmin database-backups

5
推荐指数
1
解决办法
3150
查看次数

在 Kubernetes 上运行的 Cassandra 备份

我有一个在 Kubernetes 上运行的 3 个 Cassandra pod 集群。我想自动备份我的数据,为此我需要在每个容器内运行 nodetool snaphot 命令,我需要远程调用它。从架构的角度来看,正确的做法是什么?我是否需要修改 cassandra 映像以在其中包含 ssh 守护程序,或者我是否需要在 cassandra pod 中使用辅助容器或通过“kubectl exec”Kubernetes API 调用来执行此操作?其他选择?

database-backups kubernetes

5
推荐指数
1
解决办法
514
查看次数

如何备份可承受 Azure 服务器删除的 Azure SQL

Azure SQL 具有内置备份。如果从门户中删除 SQL 数据库和服务器,这些备份就会丢失。

备份可承受从门户删除服务器的 Azure SQL 的最佳实践是什么。

我已手动将数据库导出到存储位置,但 Azure 表示不应将其用作备份。为什么不应该使用它?我应该做什么?

azure database-backups azure-virtual-machine azure-sql-database azure-sql-server

5
推荐指数
1
解决办法
2092
查看次数

为什么 Docker 中的 pg_restore 段错误?

我正在 docker 容器内测试我的 postgres 数据库的备份/恢复过程。

我像这样转储我的数据库:

$ docker exec -ti my_postgres_container pg_dump -Fc -U postgres > db.dump
Run Code Online (Sandbox Code Playgroud)

之后,我尝试像这样恢复它:

$ docker cp db.dump my_postgres_container:/db.dump
$ docker exec -ti my_postgres_container pg_restore -U postgres -c -d postgres db.dump
Run Code Online (Sandbox Code Playgroud)

该命令返回时没有输出或错误,但没有任何反应。

因此,我尝试像这样手动恢复它:

$ docker cp db.dump my_postgres_container:/db.dump
$ docker exec -ti my_postgres_container bash
root@fdaad610bee3:/# pg_restore -U postgres -c -d postgres db.dump
Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)

为什么在尝试读取我的数据库转储时 pg_restore 出现段错误?

postgresql backup database-backups docker

5
推荐指数
2
解决办法
484
查看次数

Firebase 计费 - 终止开关

我正在尝试按照此 firebase 教程设置系统以在超出配额时禁用计费。

https://www.youtube.com/watch?v=Dk3VvRSrQIY

视频描述中链接的文档建议终止开关可以延迟几天才能生效:

注意:在产生费用和收到预算通知之间有长达几天的延迟。由于从使用资源到对活动收费之间的使用延迟,您可能会因所有服务停止时尚未到达的使用而产生额外费用。遵循此上限中的步骤,示例并不能保证您的支出不会超过预算。建议:如果您有硬性资金限制,请将最大预算设置为低于可用资金,以解决计费延迟问题。

当计费活动继续时,超出配额上限时,开关是否可能不会激活?

是否可以使用将开关置于所有其他活动之上的设置,以便我确信我不会超过上限?我在计费文档中找不到任何关于如何优先处理此功能的信息。

我已经看到我自己的代码实例运行速度非常快。其他人报告说,由于在不到几天内发生的错误以及对 GCP 和 Firebase 上限如何应用的误解,造成更严重的财务后果

我想确保我的终止开关立即被触发,如果在我开始学习如何使用函数之前超过配额,我将关闭计费。

firebase 文档包含一个警告,如果您在超出预算上限时使用终止开关停止使用 firebase,如下所示:

警告:此示例从您的项目中移除 Cloud Billing,并关闭所有资源。资源可能不会正常关闭,并且可能会被不可挽回地删除。如果您禁用 Cloud Billing,则无法正常恢复。您可以重新启用 Cloud Billing,但无法保证服务恢复,需要手动配置。

我也想了解这个警告的含义。有没有人了解终止开关(youtube.com/watch?v=Dk3VvRSrQIY)的工作原理?

我正在尝试调查被不可挽回地删除的内容。激活终止开关时数据存储是否会被删除?在删除之前,是否有机会保存以前存储在云防火墙中的数据?有没有办法下载数据库,以便我可以在这种情况下保留备份?

database-backups firebase firebase-realtime-database google-cloud-functions

5
推荐指数
1
解决办法
247
查看次数