Heim > Datenbank > MySQL-Tutorial > Hauptteil

如何查看distirbution agent的执行进度

WBOY
Freigeben: 2016-06-07 17:42:28
Original
1064 Leute haben es durchsucht

在 transactional replication troubleshooting 的过程中,经常会遇到下面的场景: 客户在发布端执行了一个几百万行的更新,结果导致性能下降。 客户很想知道目前 distribution agent 的进度,完成的百分比,决定是等下去还是跳过这个过程。如果已经完成了 9

transactional replication troubleshooting的过程中,服务器空间,经常会遇到下面的场景:

客户在发布端执行了一个几百万行的更新,结果导致性能下降。 客户很想知道目前distribution agent的进度,香港虚拟主机,完成的百分比,决定是等下去还是跳过这个过程。如果已经完成了90%,那么贸然停止就非常可惜了,并且rollback的操作也是要很长时间的。

   

下面介绍如何查看进度。

对比结果就可以知道进度了。

   

如果没有启用verbose log,就比较麻烦了,下面是具体的步骤。

  • 找到相应的distribution agent 名称和publisher_database_id

    select *From distribution..msdistribution_agents

  • 通过名称就可以找到distribution agent进行的process id. distributor上执行下面的语句。

    select hostprocess from sys.sysprocesses where program_name=@mergeAgentName

  • 同一个distribution agent进程的process id是相同的,所以可以通过这个process id(对应trace里的client process id),免备案空间,使用sql server trace得到distribution agent正在subscriber端执行的语句.
  • 假设我们得到了下面这个语句exec [dbo].[sp_MSupd_dbota] default,511,4,0x02
  • 根据这个存储过程,我们可以得到相应的aritlce_id

  • subscription database 执行sp_helptext,得到表的名称
  • distribution数据库查询得出article_id. select article_id from msarticles where destination_object=@tablename
  • select transaction_timestamp,* From MSreplication_subscriptions where distribution_agent=@distribution_agent

  • 接下来就可找到distribution agent当前正在执行的xact_seqno. 将第一步得到的publisher_database_id,5步得到的article_id和上一步得到的xact_seqno带入下面的查询

    select xact_seqno,count(*) as number From distribution..msrepl_commands with(nolock)

    where publisher_database_id=@publisher_database_id and article_id=@article_id

    xact_seqno>@xact_seqno group by xact_seqno order by xact_seqno

  • 顺序靠前,并且number较大的就是正在执行的事务了。 您可能会问,为什么不是第六步得到的xact_seqno的下一个呢(select min(xact_seqno)From distribution..msrepl_commands with(nolock)where publisher_database_id=@publisher_database_id and xact_seqno>@xact_seqno).

  • 用第四步得到的语句去查找,这样就可以知道当前执行到了什么位置
  • Verwandte Etiketten:
    Quelle:php.cn
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!