小编Ali*_*ghi的帖子

如何获得有效且完整的 PostgreSQL 数据库备份和测试

我希望我能得到一个明确的答案,说明如何确保像使用 MS SQL Server 一样进行完整的 Postgres 备份,然后照顾孤立的用户。

从我读过的内容来看,这可能是错误的,找到一个好的 PostgreSQL 博客一直很有挑战性,所以请随时向我推荐一些,我需要弄清楚这个应用程序是如何工作的,这样我才能信任我的备份和 Slony复制。我让一位开发人员在选择s 时通过custom,directorytarformat恢复了我从 PgadminIII 获取的备份,OID但他说其中两个没有加载,tar但它只是目录,而不是数据。我现在真的很困惑。

  1. 我正在使用 PGAdminIII,它有一个pg_dumppg_dumpall选项。我想回到一切了,我需要测试恢复这个数据库的地方,并确认是的,我们需要的所有数据和我们的备份是好的。最终我想写一个自动恢复脚本,但一天一次。

pg_dumpall显然有一个-globals应该备份所有内容的选项,但帮助pg_dumpall显示了一个-g, --globals-only dump only global objects, no databases,而不是一个--globals选项。

我认为pg_dumpall至少会备份外键,但即使这样似乎也是一个“选项”。根据文档,即使pg_dumpall我需要使用一个-o选项来备份外键,我也无法想象什么时候我不想备份外键,而这作为默认选项更有意义。

  1. 我将如何照顾孤儿用户并验证我拥有一切?我想在另一台服务器上实际恢复我的备份文件并验证一切正常。如果有人对如何在 PostgreSQL 中进行真正的备份和恢复有任何建议,我将不胜感激。

我有一个 PostgreSQL 服务器,但我仍然无法理解为什么该应用程序OID默认情况下不会备份s!似乎 99.9% 的情况下您都希望如此。

更新1:

Postgres文档提到globals我正在寻找的选项似乎是此版本的默认选项,但它仍然需要该-o选项。如果有人可以验证或给我一个示例命令来恢复其他地方的单个数据库及其所需的一切,我将不胜感激。

编辑:被网站要求通过编辑我的问题来显示这个问题的独特性。这个问题提出了这个问题,并明确了备份中的 OID、全局和非全局之间的区别,以及测试恢复建议以确保备份是好的,而不是仅仅备份。由于这些答案,我能够备份、找出全局变量/oids,并使用 cron 作业在 …

postgresql backup pg-dump

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

如何在 Ubuntu 中使 MySQL 表名不区分大小写?

我使用的是 Ubuntu 13.10 和 MySQL 5.6,我知道默认情况下,数据库名称和表名称在 Ubuntu(和其他一些 *nix 环境)中区分大小写。

现在,我想让 MySQL在 Ubuntu 中不区分大小写

是否可以?如果是,我该怎么做?

mysql linux mysql-workbench ubuntu

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

使用 GUI 还原数据库 - 要还原的文件错误

我只是在摆弄 SSMS 图形界面并研究“恢复”任务的选项。

我注意到的一件事是,当我单击“生成脚本”时,查询的第一行是:

 RESTORE DATABASE [MyDatabase] FROM  DISK = N'Server_Patch\Database_name_LOGSHIPPING.BKP' WITH  FILE = 1,  NORECOVERY,  NOUNLOAD,  STATS = 5 ( and a lot of log backups for point in time )
Run Code Online (Sandbox Code Playgroud)

好的,没问题,但是,我每天都在备份这个数据库。这Database_name_LOGSHIPPING.BKP是我一个月前为日志传送制作的文件的名称。

为什么当我尝试使用 SSMS 图形界面恢复备份时,它指向这个备份文件?我什至没有这个文件了。


通过 MSSQLTIPS 的这个查询,我可以看到这个数据库的所有备份:

SELECT 
CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server, 
msdb.dbo.backupset.database_name, 
msdb.dbo.backupset.backup_start_date, 
msdb.dbo.backupset.backup_finish_date, 
msdb.dbo.backupset.expiration_date, 
CASE msdb..backupset.type 
WHEN 'D' THEN 'Database' 
WHEN 'L' THEN 'Log' 
END AS backup_type, 
msdb.dbo.backupset.backup_size, 
msdb.dbo.backupmediafamily.logical_device_name, 
msdb.dbo.backupmediafamily.physical_device_name, 
msdb.dbo.backupset.name AS backupset_name, 
msdb.dbo.backupset.description 
FROM msdb.dbo.backupmediafamily 
INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id 
WHERE …
Run Code Online (Sandbox Code Playgroud)

sql-server restore sql-server-2014

20
推荐指数
1
解决办法
1886
查看次数

在 WITH 子句后使用 IF 语句

我想为 SELECT 语句创建别名,但随后我想用 TOP 子句限制结果集。如果过程 TopCount 参数大于 0,我想用 TOP 子句放置限制结果集。

但是在 WITH 子句之后,IF 语句产生了错误。我可以在 WITH 子句之后继续使用 IF 或与 SELECT 语句不同吗?

WITH
   alias AS (...)
IF @TopCount>0
   SELECT TOP (@TopCount) * FROM alias;
ELSE
   SELECT * FROM alias;
GO
Run Code Online (Sandbox Code Playgroud)

t-sql

6
推荐指数
1
解决办法
9125
查看次数

创建索引视图 GROUP BY Epoch Date

我有几个大表,我希望优化大约 60 亿行。集群键是 Epoch(Unix 日期时间,即 1970 年之后经过的秒数)和客户 ID。此表记录每个客户每种产品类型的使用数据。

例如,如果这是针对电信公司,则 TypeID 1 是本地电话,该值是该客户使用的分钟数。TypeID2 是国际电话,是该客户在那一小时内使用了多少分钟的值。假设 TypeID3 是国内通话的特殊折扣费率。

数据以 1 小时为间隔存储。我希望索引视图存储聚合的 24 小时值,因此当我们为每个客户运行 1 天的查询时,它只需在索引视图中查找 1 行而不是基表中的 24 行。

这是基表:

ColRowID (bigint)
AggregateID (int)
Epoch (int)
CustomerID (int)
TypeID  (tinyint)
ErrorID (smallint)
Value (int)
Run Code Online (Sandbox Code Playgroud)

为了我们的报告目的,我们不关心 Aggregate 或 RowID,所以我认为索引视图将如下所示:

CREATE VIEW [ixvw_AggTbl]
WITH SCHEMABINDING
AS
SELECT Epoch, CustomerID, TypeID, ErrorID, SUM(Value)
FROM DBO.BaseTbl
-- GROUP BY Epoch  (what goes here?? Epoch/86400?  If I do that I have to 
-- put Epoch/86400 in the SELECT …
Run Code Online (Sandbox Code Playgroud)

sql-server materialized-view

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

无法在 SQL Server 2014 中创建、加入或添加副本到可用性组

我有一个 2 节点 FCI 和一个非 FCI 节点上的独立 SQL Server 安装。我一直在自动化 FCI、AG 和 DB 副本的配置/安装,到目前为止,它在我的所有测试中都运行良好。

今天执行时出现以下错误:

USE [master]
GO
CREATE AVAILABILITY GROUP [AGName]
WITH (AUTOMATED_BACKUP_PREFERENCE = SECONDARY)
FOR 
REPLICA ON N'Node3\ReadOnly' WITH (ENDPOINT_URL = N'TCP://Node3-blah.blah.com:5022', FAILOVER_MODE = MANUAL, AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, SESSION_TIMEOUT = 10, BACKUP_PRIORITY = 50, PRIMARY_ROLE(ALLOW_CONNECTIONS = ALL), SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL)),
    N'Primary/Primary' WITH (ENDPOINT_URL = N'TCP://primary.blah.com:5022', FAILOVER_MODE = MANUAL, AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, SESSION_TIMEOUT = 10, BACKUP_PRIORITY = 50, PRIMARY_ROLE(ALLOW_CONNECTIONS = ALL), SECONDARY_ROLE(ALLOW_CONNECTIONS = NO));
GO
Run Code Online (Sandbox Code Playgroud)

错误:

消息 19405,级别 16,状态 …

sql-server clustering failover availability-groups

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