标签: read-only-database

只读文件组中的列存储索引阻止 CheckDB

如果文件组包含列存储索引,则似乎设置文件组以read_only防止dbcc checkdb整个数据库。尝试运行checkdbcheckfilegroup对于数据库中的任何文件组,包括读写辅助文件和[PRIMARY])时,将返回以下错误...

Msg 8921, Level 16, State 1, Line 24
Check terminated. A failure was detected while collecting facts. 
Possibly tempdb out of space or a system table is inconsistent. Check previous errors.
Run Code Online (Sandbox Code Playgroud)

是否有支持在只读文件组中存储列存储数据的方法?还是在这种情况下我无法进行完整性检查?

再现

create database check_fg_ro
go
use check_fg_ro
go
exec sp_changedbowner 'sa';
go
alter database check_fg_ro add filegroup check_fg_ro_2;
alter database check_fg_ro
    add file (
         name='check_fg_ro_2'
        ,filename='C:\check_fg_ro_2.ndf'
    ) to filegroup check_fg_ro_2;
go
create table …
Run Code Online (Sandbox Code Playgroud)

sql-server filegroups columnstore dbcc-checkdb read-only-database

15
推荐指数
1
解决办法
412
查看次数

使 Postgres 数据库暂时只读(用于执行卷快照)

PostgreSQL 内置的备份机制并不总是很合适。有时,您希望将应用程序置于静止状态,因为它具有您要在备份 PG 数据的同时进行备份的外部数据。但是将应用程序置于静止状态的唯一方法是“锁定”数据库。PG 缺乏数据库范围或集群范围的锁定机制。将 PG 置于只读状态将是以下解决方案中的一部分:

  1. 停止应用程序数据(禁用登录)
  2. 停顿数据库(通过使其只读)
  3. 执行 PG 检查点或 pg_xlog_switch()
  4. 创建应用程序和数据卷的快照
  5. 恢复数据库(再次使其为 RW)
  6. 继续申请
  7. 备份快照

postgresql backup maintenance read-only-database

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

在 Amazon RDS PostgreSQL 只读副本中创建临时表

我有数十个遗留存储过程,它们在内部创建临时表,用于收集只读应用程序的结果。

我已在 Amazon RDS 中创建了 PostgreSQL 的只读副本,并尝试执行此过程,但失败了,因为它甚至不允许在只读事务中创建临时表。

有什么方法可以以最小的努力解决这个问题?

postgresql replication read-only-database amazon-rds

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

Postgres:只读用户关系的权限被拒绝

我正在尝试在 postgres 中设置一个新的只读用户。我做了以下步骤来创建新用户:

sudo -u postgres createuser --interactive
    name: read_only_user
    superuser: n
    create database: n
    Create new roles: n
Run Code Online (Sandbox Code Playgroud)

然后我用 postgres 用户登录 postgres 并执行以下命令:

ALTER USER read_only_user WITH PASSWORD '123456';
GRANT CONNECT ON DATABASE myDB TO read_only_user;
GRANT USAGE ON SCHEMA public TO read_only_user;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only_user;
GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO read_only_user;
GRANT USAGE ON ALL SEQUENCES IN SCHEMA public TO read_only_user;
Run Code Online (Sandbox Code Playgroud)

但是如果我执行以下命令:

SELECT * FROM mytable;
Run Code Online (Sandbox Code Playgroud)

我收到以下错误: …

postgresql permissions read-only-database

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

Postgres 用户无法读取表的明显原因?

情况:作为角色/组成员的 PG 用户(非超级用户,继承自父角色)无法从特定表中读取数据,即使已指定这些对象权限:

  • 数据库名称 - 连接
  • 选择 - 真
  • 插入 - 真
  • 删除 - true
  • 更新 - 正确

我无法弄清楚该tablename_tablename_id_seq对象的作用——我的所有数据库表和序列之间存在 1:1 关系,但不确定这如何影响许可。

我尝试将“用法”的复选框单击为True(在 Navicat 中),但用户仍然无法从指定的表中读取。

我尝试在 PG Admin 3&4、Navicat 和 Postico 中编辑这些权限...知道我在哪里陷入困境吗?

permissions role read-only-database

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

使用 postgres_fdw 从一个只读副本连接到另一个

我在 AWS 中有两个 postgres 数据库服务器,A 和 B。这些数据库有不同的表。这两个数据库也有自己的只读副本。

我的目标是一个简单的解决方案,用于从 A 副本到 B 副本进行跨数据库连接。从 master 查询不是一种选择,因为此功能适用于我团队中的分析师,而不是应用程序。

我按照说明通过执行 CREATE SERVER、CREATE USER MAPPING 和 CREATE FOREIGN TABLEs在 A 的 master 上设置 postgres_fdw ,并且我能够轻松地从 A master 查询到 B 副本。但是,这些服务器和外部表定义没有复制到 A 副本。我无法在副本上运行这些创建命令,因为它是只读的。

是否可以使用 postgres_fdw 从 A 副本到 B 副本?如果没有,这个问题还有其他解决方案吗?

postgresql replication read-only-database

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

在整个数据库的 DB2 上创建新的只读用户

我是一名 oracle/sql 服务器 DBA,对 IBM DB2 的了解有限。我们在 AIX 6 上运行 DB2 9.7 fp4。我想创建一个新用户并授予他对特定数据库的只读权限。请帮忙!

感谢和问候穆罕默德

db2 permissions users read-only-database

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

撤销写入权限与将数据库设置为只读

我计划将数据库迁移到新服务器。在过渡阶段,我不希望 Apache 用户能够向数据库写入任何内容。我有两个选择。

  1. 撤销写入权限:

    REVOKE INSERT, UPDATE ON `mydb`.* FROM 'apache'@'localhost';
    FLUSH PRIVILEGES;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将数据库设置为只读模式:

    FLUSH TABLES WITH READ LOCK;
    SET GLOBAL read_only = 1;
    
    Run Code Online (Sandbox Code Playgroud)

选择其中之一是否有任何实际考虑?

mysql innodb migration permissions read-only-database

4
推荐指数
1
解决办法
9697
查看次数

我是否需要每次都执行“创建扩展 pgcrypto”?

crypt()在我的一个函数中使用了哈希用户密码。但是我在第二天启动我的电脑时观察到,同样的事情失败了,因为密码功能在重新启动时变得不可用。它显示消息,如功能gen_salt()/crypt()未知或未定义。我执行了create extension pgcrypto;一次,它开始工作。

如何在生产环境中处理这个?即使 db 重新启动,有没有办法使该模块在 db 中永久可用?

或者我是否必须指示服务器管理器运行此命令以防他们需要重新启动数据库服务器?

或者我可以在函数本身中编写此语句,以便每次使用加密函数之前都会创建扩展?

此外,我们正在使用 db 的读取副本,它不允许执行此“创建扩展”语句,因为只有读取权限。那么如何在这样的只读环境中使用这种加密功能呢?

postgresql pgcrypto read-only-database postgresql-extensions

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

静态大型 PostgreSQL 表的查询性能

我试图尽可能详细地说明这一点。抱歉长度!

背景

protein_snp_assoc我在 PostgreSQL(版本 12.13)数据库上创建了以下分区表:

CREATE TABLE protein_snp_assoc (
  protein_id    int not null,
  snp_id        int not null,
  beta          double precision,
  se            double precision,
  logp          double precision
) PARTITION BY RANGE (snp_id);
Run Code Online (Sandbox Code Playgroud)

然后,我根据以下模板创建了 51 个分区,每个分区包含大约 1.5 亿行(总共 76.5 亿行):

CREATE TABLE IF NOT EXISTS protein_snp_assoc_(x) PARTITION OF protein_snp_assoc
  FOR VALUES FROM (y) TO (z);
Run Code Online (Sandbox Code Playgroud)

其中x范围从 1 到 51,并y, z定义间隔,每个长度为 150,000。例如,前两个和最后一个分区是:

protein_snp_assoc_1 FOR VALUES FROM (1) TO (150001),
protein_snp_assoc_2 FOR VALUES FROM (150001) TO (300001), ...
protein_snp_assoc_51 …
Run Code Online (Sandbox Code Playgroud)

postgresql database-design read-only-database query-performance postgresql-performance

4
推荐指数
1
解决办法
901
查看次数