标签: replication

AWS RDS Postgres 逻辑复制

我正在使用 AWS RDS Postgres 和 RDS 的逻辑复制支持

编辑:注意,这与 PostgreSQL 10 中的逻辑复制功能不同。它是基于相同底层逻辑解码功能的 AWS RDS 功能。

我正在复制 Postgres -> Postgres 。基本上将许多数据库合并为一个数据库。

我遇到的问题是,在一段时间内数据库中没有活动磁盘被填满时。我想控制 WAL 可以使用多少存储空间。我调整了 wal_segments 以保留。仍然磁盘正在填满。我可以设置任何参数来控制磁盘使用,而不是对表进行一些虚拟更新。当前参数是

wal_keep_segments =4 
wal_max_size =128 
wal_min_size 16 
Run Code Online (Sandbox Code Playgroud)

穆拉利

postgresql replication aws amazon-rds

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

将事务复制订阅者移动到另一台服务器而无需重新创建快照

我在同一台服务器上有发布者和订阅者。我需要将订阅者的数据库移动到另一台服务器但不创建新快照。我试过这个步骤:

  • 停止所有代理
  • 备份订阅者的数据库
  • 使用KEEP_REPLICATION在另一台服务器上恢复订阅者的数据库
  • 更改了syssubscriptionsMSsubscriber_infoMSsubscriber_schedule 中的服务器名称
  • 更改计划任务中的服务器名称以进行复制

然后我启动了代理并收到错误 20053(服务器未注册)。我通过将链接服务器添加到新服务器来修复它

之后,我收到错误 20044(订阅已过时或不存在),但订阅存在。

我做错了什么或者我错过了任何步骤?

我不能使用备份初始化,因为订阅者有一些额外的表、视图、例程。谢谢

replication sql-server transactional-replication sql-server-2016

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

设置主 - 从复制:连接到主时出错(错误代码:2003)

我在两个不同的托管公司的两个不同的服务器上配置它。

这是我遵循的设置教程:https : //www.digitalocean.com/community/tutorials/how-to-set-up-master-slave-replication-in-mysql

高手my.cnf设置如下:

bind-address = 00.000.000.00
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = mydatabase
Run Code Online (Sandbox Code Playgroud)

在奴隶上:

server-id = 2
relay-log = /var/log/mysql/mysql-relay-bin.log
expire_logs_days = 10
max_binlog_size = 100M
binlog_do_db = mydatabase
Run Code Online (Sandbox Code Playgroud)

一切看起来都不错,直到我尝试检查 mysql> SHOW SLAVE STATUS\G

*************************** 1. row ***************************
Slave_IO_State: Connecting to master
Master_Host: 000.000.000.00
Master_User: slave_user
Master_Port: 3306
Connect_Retry: 60
Master_Log_File:
Read_Master_Log_Pos: 4
Relay_Log_File: mysql-relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File:
Slave_IO_Running: Connecting
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 0 …
Run Code Online (Sandbox Code Playgroud)

mysql replication

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

在 PostgreSQL 10 中只复制几个表

除了这几个表之外,我需要在具有不同目的和模式的数据库之间保持更新几个表。

我当前的解决方案是一个 cron 作业,它每分钟左右从一个数据库中进行选择并插入到另一个数据库中,但我想知道 PostgreSQL 版本 10 是否有更强大的解决方案。

replication postgresql-10

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

Postgres 9.4 wal_level=logical 增加磁盘空间

我正在尝试使用 AWS Database Migration Service 将数据从 RDS Postgres 实例迁移到 Aurora MySQL 实例。

数据库迁移服务要求将wal_level设置为源 Postgres DB 中的逻辑值。但是完成后,Postgres 开始消耗大量磁盘空间,以至于实例变得无法使用。

WAL 日志保留多长时间?是否可以启用其他设置来限制磁盘空间的使用?

replication migration postgresql-9.4 write-ahead-logging amazon-rds

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

在 PostgreSQL 上允许逻辑复制订阅者的安全考虑

我经营一个非营利组织,致力于分享类似于维基百科的数据。

我们最近有一个客户想要我们的数据库的副本,我们意识到通过使用 PostgreSQL 的新逻辑复制,我们可以将我们的数据库表复制到他们控制的服务器上。

这对于完成我们共享数据的使命非常有用。它比提供慢速 API 好 100 倍。

我们为他们创建了一个这样的角色:

CREATE ROLE some_client WITH REPLICATION LOGIN PASSWORD 'long-password';
GRANT SELECT ON TABLE some_table TO some_client;
Run Code Online (Sandbox Code Playgroud)

我们为他们创建了一个 PUBLICATION,如下所示:

CREATE PUBLICATION testpublication FOR TABLE ONLY some_table;
Run Code Online (Sandbox Code Playgroud)

这样做有风险吗?我的分析是,这使他们可以选择访问他们正在复制到他们自己的服务器的表,但仅此而已。还有其他顾虑吗?如果有顾虑,是否有办法使这项工作发挥作用?我们有不想共享的表,但我们的大多数表只有公共数据。

postgresql replication security

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

如果您随后进行快照和 rsync,则在没有 pg_start_backup 的情况下初始 rsync 是否安全?

试图想办法在不停机的情况下加速从属创建。

正常的做法是:

  1. pg_start_backup
  2. rsync 数据库文件
  3. pg_stop_backup
  4. rsync wal 文件并启动 slave

由于 2 在网络上可能需要很长时间,因此:

  1. 同步
  2. pg_start_backup
  3. 再次同步
  4. pg_stop_backup
  5. rsync wal 文件并启动 slave

?

postgresql replication

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

如何从 PostgreSQL 中的 FOR ALL TABLES 逻辑复制 PUBLICATION 中删除表

我创建了一个逻辑复制 PUBLICATION 使用FOR ALL TABLES. 现在我意识到我不想复制所有的表。我尝试从出版物中删除其中一个表格,但是:

mydb=# alter publication replicapublication drop table only migrations;
ERROR:  publication "replicapublication" is defined as FOR ALL TABLES
DETAIL:  Tables cannot be added to or dropped from FOR ALL TABLES publications.
Run Code Online (Sandbox Code Playgroud)

我已经完成了数百 GB 的巨大同步,而且我不想从新出版物开始。

问题: 1、本刊有赎回的希望吗?2. 如果没有,有没有办法创建一个完全同步的新发布,​​而不用完全同步重新开始?

谢谢。

postgresql replication

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

分发数据库上的 DBCC SHRINKFILE

我有一个来自分发数据库的 .mdf 文件,该文件正在增长。我知道缩小数据库/文件的优缺点。将 .mdf 文件缩小到更小的尺寸是否可以。在此期间是否有任何数据丢失,这是否会影响复制。?

replication sql-server shrink transactional-replication

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

如何删除数据库中的所有权限?

每次我需要恢复数据库或重新初始化复制发布时,我首先(在恢复的数据库或订阅数据库上)我编写所有权限触发器索引同义词,有时还编写统计信息

然后我执行还原或(应用快照),然后在还原的数据库上重新应用我保存的脚本。

我有一些 LIVE 服务器,其中db_denydatawriter已被大量使用,尽管我拥有以前的所有权限,但由于db_denydatawriter还原附带(因为它处于活动状态),新还原的数据库现在拥有它。

它会导致问题。

以至于现在我有了这个脚本(使用sp_foreachdb)只是为了在测试中删除它:

     declare @db_list NVARCHAR(MAX)


     SELECT @db_list  = STUFF((
                                SELECT ', ' + name FROM sys.databases
                                WHERE name NOT IN ('DBA','TABLEBACKUPS','MASTER','MSDB','MODEL','TEMPDB','distribution')
                                FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')

     SELECT [@db_list]  =@db_list 

     exec sp_foreachdb @database_list = @db_list
                     ,@exclude_list = 'dba,tablebackups,master,msdb,model,tempdb'
                     ,@command='use ?;begin try EXEC sp_droprolemember @rolename = [db_denydatawriter], @membername = [mycompany\Developers] end try begin catch end …
Run Code Online (Sandbox Code Playgroud)

replication sql-server permissions scripting restore

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