今天早上我的合并复制工作正常。从一两个小时前开始,我的同步状态窗口一直显示此消息:
线程 ID 3108 将等待 15 秒,然后重试发布者“MSI-SQL-MAS01”上的查询。
谁能告诉我这是怎么回事?该数据库大小为 500Gb,而且使用率也很高。但是,复制必须工作,我们需要保持订阅者处的数据库同步。
这也是我在一分钟左右后看到的:
在发布者 'MSI-SQL-MAS01' 上执行的查询失败,因为连接被选为死锁的受害者。如果在合并过程进行内部重试后仍然看到此错误,请重新运行合并过程。
就像我刚才说的,今天早上复制工作正常。我还像建议的错误一样重新启动了合并代理,但没有结果。
我也试过
更新 sysmergepublications 集 [generation_leveling_threshold] = 0
在订阅者和发布者数据库中,但似乎没有运气……有时也会出现以下错误:
合并进程正在重试对文章“xx”所做的失败操作 - 原因:“合并进程无法同步行。”。
提前致谢。
我再也看不到我以前的错误了。我现在唯一得到的是:
“合并进程正在重试对文章 'xx' 进行的失败操作 - 原因:'合并进程无法同步该行。'。”
探查器对我来说毫无意义。我没有看到任何相关信息。
如果我重新初始化订阅,它会做什么?我希望我不需要为此创建新快照,因为此时这是不可能的。数据库大小超过 500Gb,快照需要 9 多个小时才能完成。数据库一直在生产中并且使用非常频繁,因此锁定数据库以创建快照实际上是行不通的。
好吧,这就是我在冲突查看器中看到的:
'master_server' 和 'slave_server' 都更新了同一行。解析器选择来自“master_server”的更新作为获胜者。
当我们的应用程序连接到主服务器时,如何在主服务器和从服务器上更新同一行?看起来有些东西正在用不同的内容更新两台服务器上的同一行并导致合并代理崩溃?
如果我需要还原涉及复制的数据库,我需要牢记哪些注意事项?
我正在使用PRM为 MySQL 设置 HA。
有时,MySQL slave 因一些错误而停止:
Error executing row event: 'Table 'reportingdb.tvc_ads_tag_date' doesn't exist'
Run Code Online (Sandbox Code Playgroud)
[Warning] Slave SQL: Could not execute Update_rows event on table reportingdb.7k_banner_channel_tmp; Can't find record in '7k_banner_channel_tmp', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.000854, end_log_pos 859094925, Error_code: 1032
120828 0:36:13 [Warning] Slave SQL: Could not execute Write_rows event on table reportingdb.7k_bookings_ver; Duplicate entry '1518' for key 'PRIMARY', Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event's master log mysql-bin.001022, end_log_pos …
我正在使用 SQL 2012 运行合并复制。
在 SQL 2012 中为复制添加的删除触发器似乎有一个令人讨厌的后果。
在删除触发器里面是这样的,
select @xe_message = CAST('replica_id: ' + convert(nvarchar(100), @replnick) + ', article_id: ' + convert(nvarchar(100), @tablenick) + ', rowguid: ' + case when @article_rows_deleted = 1 then convert(nvarchar(100), @rowguid) else N'0' end + ', generation: ' + case when @is_mergeagent = 1 then N'0' else convert(nvarchar(100), @newgen) end + ', Reason: -1' AS varbinary(1000));
exec master..sp_repl_generateevent 1, N'Event : ppm_insert', @xe_message
Run Code Online (Sandbox Code Playgroud)
如果某人不在系统管理员角色中进行删除,则会发生错误,
Msg 8189, Level 14, State 10, Procedure sp_repl_generateevent, Line 1 …Run Code Online (Sandbox Code Playgroud) 我有一个事务复制拓扑如下:
纽约出版数据库同一台服务器拥有分销商
纽约 - 订阅者
LON - 订阅者
HK - 订阅者
我们正在使用沼泽标准的单向事务复制。所有机器 SQL 2008 R2
快照可以很好地应用于所有订阅者,然后开始分发命令,正如您所期望的那样,但仅对于一个订阅者(伦敦),一大堆 2000-400 万个命令就会“卡住”。您可以在 msrepl_commands 中看到命令,在 msrepl_transaction 中可以看到事务。复制监视器显示有 xxxxx 未传递的命令。所有命令都被毫无问题地传递给其他 2 个订阅者。
问题是他们只是呆在那里。复制监视器说没有什么可复制的,什么也没有发生,它们只是停留在原地。我找到的唯一方法是拆除订阅并重新初始化!?!
我知道 NY 和 Lon 之间存在网络“信号”,我可以在 msrepl_errors 中看到存在一些通信故障。但是,我希望复制能够将它们恢复原状?分发代理运行良好。
我如何解决这个问题,并强制 SQL Server 选择这些命令并交付它们。
replication sql-server sql-server-2008-r2 transactional-replication
我有一个 MySQL RDS 实例(“生产”),我需要从中将增量数据复制到另一个 MySQL RDS 实例(“报告”)。“增量数据”是某些表中的新行。目前,我通过一个 PHP 脚本完成此操作,该脚本根据上次更新时间从“生产”查询并将 CSV 文件写入磁盘,然后使用 mysqlimport.exe 将文件导入“报告”。
我目前的方法需要大约 80 秒。这是最强大和最有效的方法吗?我找到了其他用于“一次性”传输的工具,但没有找到“企业增量数据库复制”工具。
由于报告端的批处理操作,我们当前的过程不是“连续”复制。不过这可能是可以协商的。放松这种限制会打开工具,使这变得容易吗?
相关相关文章/问题:亚马逊关于导入数据的文章好像主要是处理批处理(初始加载)的情况。 http://aws.amazon.com/articles/2933
当在同一实例上从一个数据库移动到另一个数据库时,这可以通过存储过程来完成(我的问题是它们是不同的实例)。请参阅:保持 MySQL 暂存数据库在同一台服务器上从生产更新
我不能将两个数据库放在同一个实例上,因为我们的实例负载相当大。
有什么方法可以强制 SQL Server 永远不要将订阅标记为非活动状态?
当出现连接问题并且我不想每次都重新初始化订阅时,它会偶尔发生。
请注意,我不是在谈论订阅被标记为过期......就像不活动一样。
我们将保留设置为 0(无限)。我宁愿拥有一个大型分发数据库,也不愿通过 WAN 为订阅者重新初始化 15GB 的数据库。无论如何,这里真正的问题是,它们有时会在短短几个小时内被标记为不活动……或者有时是几天……这似乎是零星的。有什么方法可以告诉为什么 SQL 决定将它们标记为非活动状态?
我们内部拥有主 SQL Server(目前有 15 个主服务器(总共约 500 个数据库),大多数服务器具有十六进制核心处理器)。
这些被镜像到附近建筑物中的其他备份服务器(通过专用的 0ms 光纤链路)。
我们想要做的是在数英里外的异地数据中心维护我们数据的实时副本(作为更大的 DR 项目的一部分 - 即如果我们所在地区存在通信问题)。
目前我们使用 SQL Server 2008 R2 - 标准版。
显然,使用 SQL Server 2008 R2 的“标准版”将我们限制为同步镜像,因为异步是“企业版”功能。
我们已经完成了异地同步镜像的测试,但延迟使它成为不可能。
我很想升级到 SQL Server 2012 Enterprise 并实施 AlwaysOn 可用性组,但该公司不愿意花费 100,000 英镑以上来升级 SQL 许可(2012 年的每核许可 + 我们的六核处理器 = 史诗般的失败)-他们甚至不愿意花钱升级到 2008 Enterprise,所以这也是窗口之外的异步镜像。
因此,由于这些财务限制,我的手被束缚在 2008 R2 标准版上。
留给我的唯一选择是日志传送和复制(如果我遗漏了什么,请纠正我)——日志传送很粗糙——但是如果管理得当是可行的——所以我们现在把它放在次要位置。
我的问题:
replication sql-server mirroring sql-server-2008-r2 high-availability
我们正在使用具有可更新订阅的事务复制。1 个发布者,1 个订阅者。
SQL 复制在 3/6 上午 10 点开始遇到约束错误,因为两个不同办公室的人员输入了违反唯一约束的数据。完全符合预期。
但是,在 3/6 的下午 12:08,SQL Replication 停止报告该错误,而是说:
“发布'TheDB'的初始快照尚不可用。”
为什么它会停止重试复制,而是开始抛出此错误?现在我们需要重新生成快照。
[000] 请求运行作业 COTOPSVR\TheDB-TheDB-COTCPSVR\DB-3(来自用户 CTOB\Administrator)被拒绝,因为该作业已经根据用户 sa 的请求运行
有任何想法吗?我知道如何解决这个问题……我想防止这种情况再次发生。
replication sql-server-2008 sql-server transactional-replication
我想使用脚本来监控 MySQL 数据库的复制状态,就像在这个 bash 脚本中一样:https : //gist.github.com/wesdeboer/1791632
我想创建一个仅用于查询复制状态的用户。所以基本上这个用户只需要运行以下命令:
"SHOW SLAVE STATUS \G"
Run Code Online (Sandbox Code Playgroud)
我需要授予用户的最低权限集是什么?
(这甚至是可以GRANT编辑的东西吗?
replication ×10
sql-server ×7
mysql ×3
amazon-rds ×1
aws ×1
backup ×1
merge ×1
mirroring ×1
mysql-5.5 ×1
permissions ×1
restore ×1