作者信息

php中文网

认证0级讲师

视频教程分类
推荐视频教程
  • 千万级数据并发解决方案(理论+实战)千万级数据并发解决方案(理论+实战)
  • Laravel基础与实战Laravel基础与实战
  • UNI-APP开发(仿饿了么)UNI-APP开发(仿饿了么)
  • ThinkPHP6开发CMS系统ThinkPHP6开发CMS系统
  • 首页 >数据库 >mysql教程 > 正文

    replcounters on ServerName

    原创2016-06-07 17:38:44713 关注公众号:每天精选资源文章推送

    昨天发现发布服务器S(SQL Server 2008 R2),出现大量如下错误 错误细节如下所示: Date : 04 : 14 PM : 44 : 00 PM)Source spid52Message Reader Subsystem: agent xxxxx failed. The process could . 我在发布服务器S上启用Launch Replication Monitor(复

    昨天发现发布服务器S(SQL Server 2008 R2),出现大量如下错误

    clip_image001

    错误细节如下所示:

    Date :04:14 PM :44:00 PM) Source spid52 Message Reader Subsystem: agent xxxxx failed. The process could .

    我在发布服务器S上启用Launch Replication Monitor(复制监视器),查看一些具体情况,如下所示

    clip_image002

    Error messages: The process could . (Source: MSSQL_REPL, Error number: MSSQL_REPL20011) Get help: http://help/MSSQL_REPL20011 The specified LSN {the log {000988e1:0000577e:00b4}. (Source: MSSQLServer, Error number: 18768) Get help: http://help/18768 The process could . (Source: MSSQL_REPL, Error number: MSSQL_REPL22017) Get help: http://help/MSSQL_REPL22017 The process could . (Source: MSSQL_REPL, Error number: MSSQL_REPL22037) Get help: http://help/MSSQL_REPL22037

    另外发现Log Reader Agent(日志读取器代理)呈现错误状态,首先尝试通过关闭Log Reader Agent(日志读取器代理),然后重启Log Reader Agent(日志读取器代理),Log Reader Agent(日志读取器代理)依然启动不了,重启SQL Server Agent(SQL Server 代理),问题仍然存在,检查msrepl_commands记录数,当时记录数是761490,可以排除颁发库的 msrepl_commands 表里面的数据太多,导致清理花费太长时间的原因。

    SELECT COUNT(1) FROM msrepl_commands

    于是执行下面SQL:

    , , , , sp_repldone , , , , sp_replflush

    SQL执行完成后,日志读取器代理成功启动。重启初始化订阅后,问题解决。

    下面是MSDN关于sp_repflush 和sp_repldone的解释:

    sp_replflush 用于事务复制。

    为了提高效率,项目定义存储在缓存中。只要修改或删除项目定义,,其他复制存储过程都可使用 sp_replflush。

    只有一个客户端连接有权访问给定数据库的日志读取器。如果某个客户端有权访问数据库的日志读取器,则执行 sp_replflush 将导致该客户端释放其访问权。这样一来,其他客户端就能使用 sp_replcmds 或 sp_replshowcmds 扫描事务日志了

    sp_repldone 用于事务复制。

    sp_repldone 由日志读取器进程用来跟踪哪些事务已分发。

    使用 sp_repldone,您可以手动通知服务器事务已复制(即已发送到分发服务器)。它还允许您更改被标记为下一个等待复制的事务。您可以在已复制事务的列表中前后移动。(所有小于或等于该事务的事务都将标记为已分发。)

    可以使用 sp_repltrans 或 sp_replcmds 获得所需的参数 xactid 和 xact_seqno。

    参考资料:

    #bm892474

    高并发千万级数据库系统解决方案

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

  • 相关标签:replcounters ServerName
  • 相关文章

    相关视频


    专题推荐