我们有一个 Postgres RDS 实例,我们为它创建了一个只读副本实例。我们面临的问题是,只要在只读副本上有长时间运行的查询(大约 30-40 分钟),它就不会完成并给出冲突错误。发生此冲突的原因是主 RDS 上有更新,该更新反映到只读副本,因为它遵循流式复制方法。正是出于这个原因,也由于新的需求,我们需要每天进行此复制过程,即我们需要基于触发器的方法(类似于每日备份方法)而不是持续更新。
我在AWS的控制台中看到,我们可以设置各种参数。我可以设置一些参数来满足我的要求吗?或者对我来说唯一的出路是删除只读副本实例并使用基于触发器的复制工具(如 Bucardo)并为此使用 EC2 实例?
我真的更喜欢这种方法,通过它我可以调整一些参数并实现我的目标,而不必删除只读副本实例。
我刚刚被问到我们公司是否应该考虑Data Virtualization我们的测试环境。好处如下:
但是我只找到了营销信息;没什么技术含量。据我所知,有两种方法:
在没有看到任何技术信息的情况下,这对我来说是蛇油的味道;但我想理解它,而不是一发不可收拾。
关键词:[数据即服务] [数据虚拟化] [数据虚拟化] [delphix] [denodo]
当专门为 BI/Analytics 目的启动热备用服务器时,长时间运行的查询可能很常见,是打开hot_standby_feedback还是将max_standby_*_delay设置设置为 -1更好?
我的理解是,这会hot_standby_feedback阻止主服务器执行类似操作,VACUUM直到可以安全地在备用服务器上执行同样的操作,其中max_standby_*_delay设置允许VACUUM在主服务器上开始,但备用服务器(如有必要)会等待应用任何可能与长时间冲突的真空清理运行查询。
此外,文档状态为hot_standby_feedback:
如果发现备用查询取消的次数不可接受,则存在补救的可能性。第一个选项是设置参数 hot_standby_feedback,它可以防止 VACUUM 删除最近死的行,因此不会发生清理冲突。如果你这样做,你应该注意这会延迟主节点上死行的清理,这可能会导致不受欢迎的表膨胀。但是,清理情况不会比备用查询直接在主服务器上运行更糟糕,并且您仍然可以从将执行卸载到备用服务器上获得好处。
对于max_standby_*_delay文档状态:
如果备用服务器的任务是作为决策支持查询的附加服务器,那么将最大延迟值设置为许多小时或什至 -1 可能是可以接受的,这意味着永远等待查询完成。
我仍然不清楚哪个更好,每个的确切优点和缺点是什么?
postgresql replication performance business-intelligence postgresql-performance
我找不到任何东西,所以我确定答案是否定的,你是什么,菜鸟?但我觉得无论如何都有必要问:)
是否有一个简单的实用程序可以允许在现有主服务器上启动新的从服务器,而无需在主服务器上执行转储?
我已经多次以传统方式设置奴隶,所以我并非不了解这个过程,但我很好奇是否有人和我有同样的感觉,一定有更简单的方法。
我希望这样的实用程序会使用类似于 Percona 的 Xtrabackup 的东西,但它不会输出到转储文件,而是将输出直接流式传输到从属,然后在提要结束后自动启用从属关系。
这是现实的吗?
我注意到 Xtrabackup 中的流选项,但在其仅将 tar 保存在另一台服务器上的能力之外找不到示例,这不是我想要的。我想要一个可以直接流入目标数据库的解决方案,而根本不需要使用转储文件。这在处理大型数据集时特别方便。
我们在不同城市有三台辅助数据库服务器和一台主服务器。我的问题是我想要异步事务提交到所有三个数据库,但是提交到主数据库时会发生主键数据冲突......因为可以在所有三个服务器上生成相同的 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
我正在运行带有几个客户数据库的 MySQL 服务器,其中一些数据库非常大。我们每天进行一次完整的 mysql 转储。大约需要半个小时才能完成。
在这段时间内,对 MySQL 服务器的每个请求都会得到非常缓慢的响应(有时大约 1 秒而不是 10 毫秒)。即使没有超时错误,我也希望看到查询在相当长的时间内完成,因此客户网站不会因挂起 MySQL 查询而减慢速度。
我研究了很多,了解了数据复制、LVM 快照、各种mysqldump标志选项和其他变通方法,但没有什么能真正改善这种情况。
是否有任何选项可以在 MySQL 中设置查询优先级?
如果有一种方法可以定义查询优先级,我可以给备份进程一个较低的优先级,以确保所有其他查询执行得更快。该mysqldump过程可能会SIGTSTP在受到另一个请求的挑战时暂时暂停 ( ),并SIGCONT在查询完成后继续 ( )。但是,我在 MySQL 中找不到这样的特性。
给mysqldump进程一个更高的nice值是行不通的,因为它只会增加备份进程和表锁存在的时间。(我正在锁定每个表。)此外,限制 IO 写入速率只会导致更长的痛苦。
除了 LVM 和复制之外,还有没有我错过的解决方案?
我正在尝试使用 MySQL 5.5.52 进行 MySQL 复制。我的主要问题是:如何在主从设置上正确执行“apt-get upgrade”?
到目前为止,我升级了从属节点,然后进行故障转移并将另一个节点升级为从属节点。
到目前为止它没有问题,但现在我发现了以下内容:当我升级从属时,它创建了一些二进制日志:
mysql.CREATE TABLE IF NOT EXISTS db (...)
mysql.CREATE TABLE IF NOT EXISTS host (...)
mysql.CREATE TABLE IF NOT EXISTS func (...)
...
Run Code Online (Sandbox Code Playgroud)
由于这是从节点,因此这些更改不会复制到主节点,因此在故障转移后会丢失。如果我在另一个节点的角色从主节点更改为从节点后重复此操作,也会发生同样的情况。
因此,升级所做的更改永远不会提交到复制数据库。
这是一个问题吗?
我怎样才能避免这种情况?
我可以在没有(显着)停机的情况下升级主从设置吗?
更新: 那么如果我像过去那样做会发生什么?
Node A : master
Node B : slave
Run Code Online (Sandbox Code Playgroud)
在节点 B(从节点)上:我发出apt-get upgrade,MySQL 被修补。一些二进制日志出现在节点 B 上,包含上述语句。由于这是一个从站,因此这些更改不会复制到主站。
修补节点 B 后,我切换角色(使用 Corosync-Pacemaker)。
故障转移后:
Node A : slave
Node B : master
Run Code Online (Sandbox Code Playgroud)
现在,节点 B 上的主 MySQL 包含故障转移之前节点 A 上的数据。由于修补引起的更改发生在从属设备上,因此它们不在数据库中。
如果我现在将节点 A 修补为从节点,也会发生同样的情况。
因此,最后我将有一个修补过的 MySQL,其中包含与修补之前包含的完全相同的数据。apt-get …
我正在迁移 SQL Server 群集。我想听听成功迁移的注意事项。
生产集群的规格是:
目标集群的规格是:
特别注意事项:
此时我所做和测试的内容如下:
还:
要做或考虑的事情:
我最近在 Ubuntu Server 16.04 下安装了两个相同的 MySQL 5.7 默认安装,并将它们配置为执行二进制日志复制。到目前为止,这一直工作正常,但突然复制停止继续,从属查询线程以 100% CPU 运行而没有做任何工作。
经过一番搜索,我发现从站状态表明它远远落后于主站。在Relay_Master_Log_File和位置Exec_Master_Log_Pos指示的binlog文件上使用mysqlbinlog,发现在这个位置执行的语句是:
SET @@SESSION.GTID_NEXT= 'ANONYMOUS';
在尝试执行此语句时,从站以某种方式挂起,将 CPU 负载发送到 100%(这是我首先发现情况的方式)。
除了让奴隶跳过使用SET GLOBAL sql_slave_skip_counter=1它的语句之外,我不清楚这个问题的实际原因是什么,以及我应该如何解决这个问题。
任何帮助将非常感激!
我在 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 副本?如果没有,这个问题还有其他解决方案吗?
replication ×10
mysql ×4
backup ×3
postgresql ×3
mysqldump ×2
performance ×2
sql-server ×2
amazon-rds ×1
aws ×1
binlog ×1
clustering ×1
daas ×1
migration ×1
percona ×1
primary-key ×1
restore ×1
upgrade ×1
xtrabackup ×1