我们在不同城市有三台辅助数据库服务器和一台主服务器。我的问题是我想要异步事务提交到所有三个数据库,但是提交到主数据库时会发生主键数据冲突......因为可以在所有三个服务器上生成相同的 ID。那么哪种技术可用于这种场景来维护主键冲突问题......
注意-所有三个辅助服务器都作为“复制发布者”工作,而主服务器作为订阅者(alwayson 的主要副本)工作。
我这边的解决方案- 我在辅助服务器上提交记录,我在所有辅助服务器上使用了一些技巧,例如..server 1(种子值 = 1 增量 = 3),服务器 2(种子值 = 2 增量 = 3), server 3 (seed value = 3 increment by = 3)...根据这个设置,我的主键值永远不会冲突...所以请建议我是否正确?
replication sql-server primary-key availability-groups data-synchronization
我目前有一个 PostgreSQL 从属节点存在问题,但在主节点中不会出现这些问题。似乎与节点同步过程有关。
完整的堆栈跟踪:
org.postgresql.util.PSQLException: ERROR: canceling statement due to conflict with recovery
Detail: User query might have needed to see row versions that must be removed.
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2103)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1836)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:512)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:388)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:273)
at org.apache.tomcat.dbcp.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:82)
at org.apache.tomcat.dbcp.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:82)
at cl.waypoint.mailer.reportes.BasicReport.getSingleColumn(BasicReport.java:542)
at cl.waypoint.mailer.reportes.BasicReport.getSingleColumn(BasicReport.java:518)
at cl.waypoint.mailer.reportes.StatusSemanalClientes.updateIgnicion(StatusSemanalClientes.java:448)
at cl.waypoint.mailer.reportes.StatusSemanalClientes.access$2(StatusSemanalClientes.java:447)
at cl.waypoint.mailer.reportes.StatusSemanalClientes$TempAndDoorLocator.call(StatusSemanalClientes.java:414)
at cl.waypoint.mailer.reportes.StatusSemanalClientes$TempAndDoorLocator.call(StatusSemanalClientes.java:1)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Run Code Online (Sandbox Code Playgroud)
数据库版本:
PostgreSQL 9.4.9 on x86_64-unknown-linux-gnu, compiled by gcc (Debian 4.9.2-10) 4.9.2, 64-bit
Run Code Online (Sandbox Code Playgroud)
操作系统版本:
Distributor ID: …Run Code Online (Sandbox Code Playgroud) postgresql data-synchronization postgresql-9.4 master-slave-replication
我有 2 个 Amazon RDS MySQL 实例,一个是 MySql v5.5,新的一个是 5.6。我想把5.5升级到5.6,但你现在不能升级,所以我们正在尝试迁移数据。我做了 5.5 的转储并将转储导入 5.6 但由于我需要将停机时间保持在最低限度,我决定尝试在两者之间进行数据同步。
我有什么选择?
我需要尽量保持在 5 小时以内!
我正在做一个项目,在该项目中,客户需要一个在线和一个离线应用程序。离线应用程序数据将手动同步到链接到 Web 应用程序的在线数据库。
数据库是MySQL,部分功能需要在线也可以离线使用。假设没有互联网访问权限的任何用户都将使用离线应用程序。一旦他完成了他的工作,并且可以访问互联网,他将通过单击将他的所有工作/数据同步到在线数据库。
我知道如何将数据推送到在线数据库,但这里的复杂性在于如何按顺序维护记录的索引/主键,而不丢失任何数据或不匹配任何数据。
用户将离线数据同步到在线时,如何按顺序维护主键?
我们有一个 PostgreSQL 9.4.9 生产服务器,它正在复制到一个从属实例,但今天我发现该实例不同步!
显而易见的操作是重新创建从属节点,为复制活动设置指标和适当的警报,因此我们可以有效地监控主节点和从属节点之间的同步状态。
但是,由于同步失败,我想首先诊断问题并尝试确定其根本原因,因为这将是大约 6 个月内第二次发生这种情况。
问题:如何诊断复制过程中失败的内容,以便这次可以以更好的方式完成?
版本说明:
PostgreSQL 9.4.9 on x86_64-unknown-linux-gnu, compiled by gcc (Debian 4.9.2-10) 4.9.2, 64-bit
Run Code Online (Sandbox Code Playgroud)
从从节点,在/var/log/postgresql/postgresql-9.4-main.log我可以看到:
2017-07-18 19:43:55 UTC [12816-1] LOG: started streaming WAL from primary at 125D/68000000 on timeline 1
2017-07-18 19:43:55 UTC [12816-2] FATAL: could not receive data from WAL stream: ERROR: requested WAL segment 000000010000125D00000068 has already been removed
2017-07-18 19:44:00 UTC [12817-1] LOG: started streaming WAL from primary at 125D/68000000 on timeline 1 …Run Code Online (Sandbox Code Playgroud) postgresql replication data-synchronization postgresql-9.4 master-slave-replication
SQL14 是主服务器,SQL16 是辅助副本,它们使用同步提交可用性模式进行设置:
截至昨天,数据似乎停止从主服务器同步到副本服务器。今天早上我们暂停了可用性数据库,然后恢复了它。当我现在看到新数据通过时,这似乎再次启动了同步,但仪表板中的重做队列大小和估计恢复时间仍然很大并且还在继续增长。
我可以检查/做些什么来解决这个问题?
附加信息:服务器版本:SQL Server 2016 Enterprise - SP1(在主服务器和辅助服务器上)
此外,我们有一些长时间运行的索引重新组织/重新构建作业在早上早些时候在主服务器上失败。(那是大约 4 小时前的事,但现在这是否仍然可能是导致此问题的潜在因素?)
不知道里面有没有什么线索?
replication sql-server availability-groups data-synchronization sql-server-2016
想象一个场景,您有一个数据库的主实例和一个自动同步的辅助实例 - 与可用性组非常相似。
我的问题是我是否可以向辅助实例添加其他对象 - 特别是物化(索引)视图 - 而不需要该视图同步回主实例。
这可能吗?
(“为什么?”,我听到你问?因为我不希望维护视图的性能影响影响主实例。如果需要,可以找到辅助实例使用异步提交模式。)
如何通过查看 lsn 来监控 Postgresql 12 中的逻辑复制?
我所做的:检查发布者和订阅者上的一些列。
出版方:
select * from pg_stat_replication; -- 查看 REPLAY_LSN
select * from pg_replication_slots; -- 参见 CONFIRMED_FLUSH_LSN
订阅方:
select * from pg_catalog.pg_stat_subscription; -- 查看 RECEIVED_LSN 和 LATEST_END_LSN
我确保这些列中的所有值都相同。
我对么 ?或者是否有其他方法可以通过检查某些参数来查看复制工作?
replication ×4
postgresql ×3
mysql ×2
sql-server ×2
amazon-rds ×1
migration ×1
mysqldump ×1
primary-key ×1