2012年10月

<p style="font-family: 宋体,'Arial Narrow',arial,serif; color: #a7a7a7; background-color: #1c1c1c; line-height: 28px;">使用svnsync备份很简单,步骤如下: 
一、在备份机上创建一个空库:svnadmin create SMP 
二、更改该库的钩子脚本pre-revprop-change(因为svnsync要改这个库的属性,也就是要将源库的属性备份到这个库,所以要启用这个脚本): 
cd SMP/hooks; 
cp pre-revprop-change.tmpl pre-revprop-change; 
chmod 755 pre-revprop-change; 
vi pre-revprop-change; 
将该脚本后面的三句注释掉,或者干脆将它弄成一个空文件。 
三、初始化,此时还没有备份任何数据: 
svnsync init file:///home/backup/svn/svnsync/SMP/ http://svntest.subversion.com/repos/SMP ;
语法是:svnsync init {你刚创建的库url} {源库url} 
注意本地url是三个斜杠的:/// 
四、开始备份: 
svnsync sync file:///home/backup/svn/svnsync/SMP 
这是就一个个版本进行备份了。 

附录: 
可能的报错一: 
Failed to get lock on destination repos, currently held by 'bug1.corp.scmbbs.com:0c424c20-2e3b-0410-bd34-7fdd53c25d02' 
Failed to get lock on destination repos, currently held by 'bug1.corp.scmbbs.com:0c424c20-2e3b-0410-bd34-7fdd53c25d02' 
Failed to get lock on destination repos, currently held by 'bug1.corp.scmbbs.com:0c424c20-2e3b-0410-bd34-7fdd53c25d02' 
Failed to get lock on destination repos, currently held by 'bug1.corp.scmbbs.com:0c424c20-2e3b-0410-bd34-7fdd53c25d02' 
Failed to get lock on destination repos, currently held by 'bug1.corp.scmbbs.com:0c424c20-2e3b-0410-bd34-7fdd53c25d02' 
Failed to get lock on destination repos, currently held by 'bug1.corp.scmbbs.com:0c424c20-2e3b-0410-bd34-7fdd53c25d02' 
Failed to get lock on destination repos, currently held by 'bug1.corp.scmbbs.com:0c424c20-2e3b-0410-bd34-7fdd53c25d02' 
Failed to get lock on destination repos, currently held by 'bug1.corp.scmbbs.com:0c424c20-2e3b-0410-bd34-7fdd53c25d02' 
Failed to get lock on destination repos, currently held by 'bug1.corp.scmbbs.com:0c424c20-2e3b-0410-bd34-7fdd53c25d02' 
Failed to get lock on destination repos, currently held by 'bug1.corp.scmbbs.com:0c424c20-2e3b-0410-bd34-7fdd53c25d02' 
svnsync: Couldn't get lock on destination repos after 10 attempts 
这个时候可能属性被锁了,删掉属性: 
svn propdel svn:sync-lock --revprop -r0 file:///home/backup/svn/svnsync/SMP 
删除成功后,再试一遍基本就可以了。 
如果反复操作都是同样错误的话,有可能是你的svn安装的有问题,重新安装一遍就好了,俺就是这样。 

可能报错二、 
svnsync: REPORT request failed on 'http://svn1.subversion.com/repos/Relevance'
svnsync: The requested report is unknown. 
这是因为你源库的版本太低了,svnsync所需要的函数Report是svn1.4后加入的。没办法,对你的库进行升级后才能备份。
 </p><p style="font-family: 宋体,'Arial Narrow',arial,serif; color: #a7a7a7; background-color: #1c1c1c; line-height: 28px;">由于执行svnsync sync file:///home/backup/svn/svnsync/SMP 过程中容易出现错误一,避免中途人工干预,我写了一个脚本,来自动修复错误。脚本里面的路径自己来修改吧,我的环境是本地备份到另外一个硬盘。</p><p style="font-family: 宋体,'Arial Narrow',arial,serif; color: #a7a7a7; background-color: #1c1c1c; line-height: 28px;"> </p><ol style="color: #5c5c5c; background-color: #f7f7f7; margin-left: 3em; margin-right: 0px; margin-bottom: 1px;"><li><p><span style="color: black; background-color: inherit;"><span style="background-color: inherit;">[root@smb svn_bak]# cat svnsync.sh </span> </span></p></li><li><p><span style="color: black; background-color: inherit;"><span style="color: gray; background-color: inherit;">#!/bin/bash </span><span style="background-color: inherit;"> </span></span></p></li><li><p><span style="color: #006699; background-color: inherit;">while</span><span style="color: black; background-color: inherit;"> (:)  </span></p></li><li><p><span style="color: #006699; background-color: inherit;">do</span><span style="color: black; background-color: inherit;"> </span></p></li><li><p><span style="color: black; background-color: inherit;">        svnsync sync file:</span><span style="color: #008200; background-color: inherit;">///svn_bak/svnbak/ </span><span style="color: black; background-color: inherit;"> </span></p></li><li><p><span style="color: black; background-color: inherit;">        </span><span style="color: #006699; background-color: inherit;">if</span><span style="color: black; background-color: inherit;"> [ $? != 0 ]  </span></p></li><li><p><span style="color: black; background-color: inherit;">        then  </span></p></li><li><p><span style="color: black; background-color: inherit;">        svn propdel svn:sync-</span><span style="color: #006699; background-color: inherit;">lock</span><span style="color: black; background-color: inherit;"> --revprop -r0  file:</span><span style="color: #008200; background-color: inherit;">///svn_bak/svnbak/ </span><span style="color: black; background-color: inherit;"> </span></p></li><li><p><span style="color: black; background-color: inherit;">        fi  </span></p></li><li><p><span style="color: black; background-color: inherit;">        sleep 60  </span></p></li><li><p><span style="color: black; background-color: inherit;">done  </span></p></li></ol><p style="font-family: 宋体,'Arial Narrow',arial,serif; color: #a7a7a7; background-color: #1c1c1c; line-height: 28px;"> </p><p>
</p>

<p><span style="font-size: 13px; font-family: 'Microsoft YaHei',Simsun,Tahoma,Arial,Helvetica,sans-serif; color: #333333; background-color: #f7f7f7;">svn不支持分布式开发,所以把svn版本库保存在一台服务器上是不安全的。制作一个镜像svn版本库有多种方式,我采用subversion自带的svnsync程序。</span></p><p style="text-align: left; font-size: 13px; font-family: 'Microsoft YaHei',Simsun,Tahoma,Arial,Helvetica,sans-serif; color: #333333; background-color: #f7f7f7; line-height: 22px; margin-bottom: 22px;">此教程基于Archlinux。windows用户请注意路径表示法。</p><p style="text-align: left; font-size: 13px; font-family: 'Microsoft YaHei',Simsun,Tahoma,Arial,Helvetica,sans-serif; color: #333333; background-color: #f7f7f7; line-height: 22px; margin-bottom: 22px;">源版本库路径:http://192.168.16.10/svn/project1
镜像版本库路径:/var/svn/project1</p>一、建立镜像版本库<div><span style="color: #ff0000;">Code:</span></div><p> <span style="color: #666666;"># 创建版本库</span></p><p><span style="color: #c20cb9;">svnadmin </span>create <span style="color: #000000;">/</span>var<span style="color: #000000;">/</span>svn<span style="color: #000000;">/</span>project1</p><p><span style="color: #666666;"># 创建钩子</span></p><p><span style="color: #c20cb9;">cp </span><span style="color: #000000;">/</span>var<span style="color: #000000;">/</span>svn<span style="color: #000000;">/</span>project1<span style="color: #000000;">/</span>hooks<span style="color: #000000;">/</span>pre-revprop-change.tmpl <span style="color: #000000;">/</span>var<span style="color: #000000;">/</span>svn<span style="color: #000000;">/</span>project1<span style="color: #000000;">/</span>hooks<span style="color: #000000;">/</span>pre-revprop-change </p><p><span style="color: #666666;"># 给予钩子运行权限</span></p><p><span style="color: #c20cb9;">chmod </span>a+x <span style="color: #000000;">/</span>var<span style="color: #000000;">/</span>svn<span style="color: #000000;">/</span>project1<span style="color: #000000;">/</span>hooks<span style="color: #000000;">/</span>pre-revprop-change</p><p><span style="color: #666666;"># 编辑pre-revprop-change钩子,将最后一行的 exit&nbsp;1 改为 exit&nbsp;0</span></p><p><span style="color: #c20cb9;">vim</span><span style="color: #000000;">/</span>var<span style="color: #000000;">/</span>svn<span style="color: #000000;">/</span>project1<span style="color: #000000;">/</span>hooks<span style="color: #000000;">/</span>pre-revprop-change</p>二、初始化镜像库<div><span style="color: #ff0000;">Code:</span></div><div><span style="color: #c20cb9;">svnsync </span>init file:<span style="color: #000000;">///</span>var<span style="color: #000000;">/</span>svn<span style="color: #000000;">/</span>project1<span style="color: #000000;">/</span>http:<;span style="color: #000000;">//</span>192.168.16.10<span style="color: #000000;">/</span>svn<span style="color: #000000;">/</span>project1</div><p style="text-align: left; font-size: 13px; font-family: 'Microsoft YaHei',Simsun,Tahoma,Arial,Helvetica,sans-serif; color: #333333; background-color: #f7f7f7; line-height: 22px; margin-bottom: 22px;">然后按照提示输入密码,提示信息可能如下:</p><p style="line-height: 22px; margin-bottom: 22px;">认证领域: http://192.168.16.10 Subversion Repositories
“zrong”的密码:
认证领域: http://192.168.16.10 Subversion Repositories
用户名: zrong
“zrong”的密码:xxxx
复制版本 0 的属性。</p>三、同步<div><span style="color: #ff0000;">Code:</span></div><p><span style="color: #666666;">#以后的同步也使用这段代码进行 </span></p><p><span style="color: #c20cb9;">svnsync </span><span style="color: #c20cb9;">sync</span>file:<span style="color: #000000;">///</span>var<span style="color: #000000;">/</span>svn<span style="color: #000000;">/</span>project1</p><p style="text-align: left; font-size: 13px; font-family: 'Microsoft YaHei',Simsun,Tahoma,Arial,Helvetica,sans-serif; color: #333333; background-color: #f7f7f7; line-height: 22px; margin-bottom: 22px;">如果系统提示要保存明文密码,输入yes就可以了。这里我没有研究如何对密码进行加密。</p><p style="text-align: left; font-size: 13px; font-family: 'Microsoft YaHei',Simsun,Tahoma,Arial,Helvetica,sans-serif; color: #333333; background-color: #f7f7f7; line-height: 22px; margin-bottom: 22px;">接下来进入同步流程,同步的提示可能如下:</p><p style="line-height: 22px; margin-bottom: 22px;">已提交版本 1。
复制版本 1 的属性。
传输文件数据………………………………
已提交版本 1。</p><p style="text-align: left; font-size: 13px; font-family: 'Microsoft YaHei',Simsun,Tahoma,Arial,Helvetica,sans-serif; color: #333333; background-color: #f7f7f7; line-height: 22px; margin-bottom: 22px;">这个时间可能会很长,具体要看网速和原始版本库的大小。如果版本库中有带的的二进制文件,则进度会更慢。在svnsync同步的过程中,应该保证原始的svn数据库不要进行提交操作,否则可能会造成同步失败,同步失败会引起镜像版本库的锁定。下面会讲解如何解锁。</p>四、解锁<p style="text-align: left; font-size: 13px; font-family: 'Microsoft YaHei',Simsun,Tahoma,Arial,Helvetica,sans-serif; color: #333333; background-color: #f7f7f7; line-height: 22px; margin-bottom: 22px;">如果在同步的时候遇到下面的提示,可能是由于原始版本库同时正在提交:</p><p style="line-height: 22px; margin-bottom: 22px;">从目标版本库获得锁失败,当前被“xxxxx”持有</p><p style="text-align: left; font-size: 13px; font-family: 'Microsoft YaHei',Simsun,Tahoma,Arial,Helvetica,sans-serif; color: #333333; background-color: #f7f7f7; line-height: 22px; margin-bottom: 22px;">如果是在svn中,可以使用svn cleanup来解除锁定。但是svnsync并没有这个功能。我们可以使用下面的代码来解除锁定:</p><div><span style="color: #ff0000;">Code:</span></div><p><span style="color: #c20cb9;">svn propdel </span>svn:sync-lock <span style="color: #660033;">--revprop</span><span style="color: #660033;">-r</span><span style="color: #000000;">0</span>file:<span style="color: #000000;">///</span>var<span style="color: #000000;">/</span>svn<span style="color: #000000;">/</span>project1<span style="color: #000000;">/</span></p><p><span style="color: #666666;"># 删除属性 “svn:sync-lock” 于版本库版本 0</span></p><p><span style="color: #666666;">
</span></p>五、修改原始版本库的地址<p style="text-align: left; font-size: 13px; font-family: 'Microsoft YaHei',Simsun,Tahoma,Arial,Helvetica,sans-serif; color: #333333; background-color: #f7f7f7; line-height: 22px; margin-bottom: 22px;">如果原始版本库的地址改变了(比如说换了域名或者IP地址),在svn中可以使用 svn relocate 来实现,但在svnsync中,就必须用propset来实现了,具体代码如下:</p><div><span style="color: #ff0000;">Code:</span>
</div><p><span style="color: #c20cb9;">svn propget </span>svn:sync-from-url –-revprop <span style="color: #660033;">-r</span><span style="color: #000000;">0</span>file:<span style="color: #000000;">///</span>var<span style="color: #000000;">/</span>svn<span style="color: #000000;">/</span>project1<span style="color: #000000;">/</span><span style="color: #666666;"># 这个操作会显示原始版本库的地址(假如你忘了原始地址就很有用)</span></p><p><span style="color: #666666;"># http://192.168.16.10/svn/project1<;/span> <span style="color: #666666;"># 设置新的版本库地址</span></p><p><span style="color: #c20cb9;">svn propset </span>svn:sync-from-url –-revprop <span style="color: #660033;">-r</span><span style="color: #000000;">0</span>http:<;span style="color: #000000;">//</span>10.0.0.9<span style="color: #000000;">/</span>svn<span style="color: #000000;">/</span>project1 file:<span style="color: #000000;">///</span>var<span style="color: #000000;">/</span>svn<span style="color: #000000;">/</span>project1<span style="color: #000000;">/</span></p><p><span style="color: #666666;"># 再次同步</span></p><p><span style="color: #c20cb9;">svnsync</span><span style="color: #c20cb9;">sync </span>file:<span style="color: #000000;">///</span>var<span style="color: #000000;">/</span>svn<span style="color: #000000;">/</span>project1<span style="color: #000000;">/</span></p><p><span style="color: #000000;">
</span></p><p><span style="color: #000000;">
</span></p><p>引用自:http://zengrong.net/post/1598.htm</p><p>
</p>

<p><span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">在Windows 2003 Server 系统下配置成功</span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  1.默认情况下,独立服务器WINDOWS SERVER 2003 是作为NTP客户端工作的 ,所以必须通过修改注册表,让它作为NTP服务器运行。工作之前最好先备份注册表文件。</span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  2.修改以下选项的键值HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeTimeProvidersNtpServer内的「Enabled」设定为1,打开NTP服务器功能(默认是不开启NTP Server服务,除非电脑升级成为域控制站)</span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  3 修改以下键值HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeConfigAnnounceFlags设定为5.该设定强制主机将它自身宣布为可靠的时间源,从而使用内置的互补金属氧化物半导体 (CMOS) 时钟。(设定好后就要确定本机的电池要耐用了,做成时间服务器,时间一出错就头大了,呵呵) 如果要采用外面的时间服务器就用默认的a值即可.</span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  4.我这边的服务器同步用外部服务器,地址为210.72.145.44 (中国国家授时中心)</span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  5.重启Win32Time服务: net stop w32Time && net start W32Time</span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  6.至此,已完成服务器端设定.</span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  7.客户端的设定更改注册表即可.</span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeTimeProvidersNtpClient</span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  SpecialPollInterval     值修改成十进制43200 (单位为秒,43200为12小时)</span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  SpecialPollTimeRemaining  值修改成[时间同步服务器],0 如:192.168.1.1,0</span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  8.完成.</span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  配置 Windows 时间服务以使用外部时间源</span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  要将内部时间服务器配置为与外部时间源同步,</span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  步骤操作:</span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  1. 将服务器类型更改为 NTP。步骤操作: </span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  a. 单击“开始”,单击“运行”,键入 regedit,然后单击“确定 </span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  b. 找到并单击下面的注册表子项: </span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  HKEY_ LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeParametersType </span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  c. 在右窗格中,右键单击“Type”,然后单击“修改”。 </span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  d. 在“编辑值”的“数值数据”框中键入 NTP,然后单击“确定”。 </span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  2. 将 AnnounceFlags 设置为 5。为此,步骤操作:</span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  a. 找到并单击下面的注册表子项: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeConfigAnnounceFlags </span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  b. 在右窗格中,右键单击“AnnounceFlags”,然后单击“修改”。 </span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  c. 在“编辑 DWORD 值”的“数值数据”框中键入 5,然后单击“确定”。 </span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  3. 启用 NTPServer。为此,步骤操作:</span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  a. 找到并单击下面的注册表子项:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeTimeProvidersNtpServer </span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  b. 在右窗格中,右键单击“Enabled”,然后单击“修改”。 </span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  c. 在“编辑 DWORD 值”的“数值数据”框中键入 1,然后单击“确定”。 </span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  4. 指定时间源。步骤操作:</span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  a. 找到并单击下面的注册表子项: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeParametersNtpServer </span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  b. 在右窗格中,右键单击“NtpServer”,然后单击“修改”。 </span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  c. 在“编辑值”的“数值数据”框中键入 Peers,然后单击“确定”。</span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  是DNS名或IP地址</span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  注意:Peers 是一个占位符,应替换为您的计算机从中获取时间戳的对等端列表(以空格分隔)。列出的每个 DNS 名称都必须是唯一的。必须在每个 DNS 名称后面附加 ,0x1。如果不在每个 DNS 名称后面附加 ,0x1,则在步骤 5 中所做的更改将不会生效。 </span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  5. 选择轮询间隔。步骤操作:</span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  a. 找到并单击下面的注册表子项: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeTimeProvidersNtpClientSpecialPollInterval</span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  b. 在右窗格中,右键单击“SpecialPollInterval”,然后单击“修改”。 </span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  c. 在“编辑 DWORD 值”的“数值数据”框中键入 TimeInSeconds,然后单击“确定”。</span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  注意:TimeInSeconds 是一个占位符,应替换为您希望各次轮询之间的间隔秒数。建议值为 900(十进制)。该值将时间服务器配置为每隔 15 分钟轮询一次。 </span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  6. 配置时间校准设置。步骤操作:</span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  a. 找到并单击下面的注册表子项: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeConfigMaxPosPhaseCorrection </span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  b. 在右窗格中,右键单击“MaxPosPhaseCorrection”,然后单击“修改”。 </span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  c. 在“编辑 DWORD 值”的“基数”框中单击以选择“十进制”。 </span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  d. 在“编辑 DWORD 值”的“数值数据”框中键入 TimeInSeconds,然后单击“确定”。</span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  注意:TimeInSeconds 是一个占位符,应替换为适当的值,如 1 小时 (3600) 或 30 分钟 (1800)。您选择的值将因轮询间隔、网络状况和外部时间源而异。 </span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  e.找到并单击下面的注册表子项:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeConfigMaxNegPhaseCorrection </span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  f. 在右窗格中,右键单击“MaxNegPhaseCorrection”,然后单击“修改”。 </span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  g. 在“编辑 DWORD 值”的“基数”框中单击以选择“十进制”。 </span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  h. 在“编辑 DWORD 值”的“数值数据”框中键入 TimeInSeconds,然后单击“确定”。</span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  注意:TimeInSeconds 是一个占位符,应替换为适当的值,如 1 小时 (3600) 或 30 分钟 (1800)。您选择的值将因轮询间隔、网络状况和外部时间源而异。 </span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  7. 退出注册表编辑器。 </span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  8. 在命令提示符处,键入以下命令以重新启动 Windows 时间服务,然后按 Enter:</span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  net stop w32time && net start w32time</span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  在Windows上建NTP服务器</span>

<span style="font-size: 16px; font-family: Arial,Helvetica,sans-serif; color: #444444; background-color: #ffffff;">  因为需要部署一台SYSLOG服务器,用作日志收集。同时需要在局域网中架设一台时间同步服务器,统一各客户端及服务器的系统时间,否则各各设备的时间不统一,日志集中后也没有意思。由于现实条件的制约只能在Windows上建syslog和ntp服务器。</span></p><div>  在网上查找大多是基于Linux下的确NTP服务器。在MS的知识库上发现关于Windwos2003自带的W32Time服务用于时间同步的设置。大致设置如下:

  1.默认情况下,独立服务器WINDOWS SERVER 2003 是作为NTP客户端工作的 ,所以必须通过修改注册表,以使系统作为NTP服务器运行。工作之前请先备份注册表文件。

  2.修改以下选项的键值HKEY_LOCAL_MACHINESYSTEM CurrentControlSetServicesW32TimeTimeProvidersNtpServer内的「Enabled」设定为 1,打开NTP服务器功能(默认是不开启NTP Server服务,除非电脑升级成为域控制站)

  3 修改以下键值HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32Time ConfigAnnounceFlags设定为5。该设定强制主机将它自身宣布为可靠的时间源,从而使用CMOS的 时钟。如果要采用外面的时间服务器就用默认的a值即可.

  4.重启Win32Time服务: net stop w32Time && net start W32Time

  设置完成。

  在Linux上使用ntpdate -q NTP服务器IP地址。测试一下,能查询时间。OK!搞掂!

  1.默认情况下,独立服务器WINDOWS SERVER 2003 是作为NTP客户端工作的 ,所以必须通过修改注册表,以使系统作为NTP服务器运行。工作之前请先备份注册表文件。

  2.修改以下选项的键值HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeTimeProvidersNtpServer内的「Enabled」设定为1,打开NTP服务器功能(默认是不开启NTP Server服务,除非电脑升级成为域控制站)

  3 修改以下键值HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeConfigAnnounceFlags设定为5.该设定强制主机将它自身宣布为可靠的时间源,从而使用内置的互补金属氧化物半导体 (CMOS) 时钟。(设定好后就要确定本机的电池要耐用了,做成时间服务器,时间一出错就头大了,呵呵) 如果要采用外面的时间服务器就用默认的a值即可.

  4.我这边的服务器同步用外部服务器,地址为210.72.145.44 (中国国家授时中心)

  5.重启Win32Time服务: net stop w32Time && net start W32Time

  6.至此,已完成服务器端设定.

  7.客户端的设定更改注册表即可.

  HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeTimeProvidersNtpClient

  SpecialPollInterval      值修改成十进制43200 (单位为秒,43200为12小时)

  SpecialPollTimeRemaining  值修改成[时间同步服务器],0 如:192.168.1.1,0

  8.完成.</div><div>
</div><p>
</p>

<p>在进行 ping和route后发现网络通信都是正常的,而且在mysql机器上进行本地连接发现是很快的,所以网络问题基本上被排除了。以前也遇到过一次这样的问题,可后来就不知怎么突然好了,这次又遭遇这样的问题,所以想看看是不是mysql的配置问题。在查询mysql相关文档和网络搜索后,发现了一个配置似乎可以解决这样的问题,就是在mysql的配置文件中增加如下配置参数: 
[mysqld]
skip-name-resolve</p><p>在linux下配置文件是/etc/my.cnf,在windows下配置文件是mysql安装目录下的my.ini文件。注意该配置是加在 [mysqld]下面,在更改配置并保存后,然后重启mysql并远程连接测试,一切恢复如初。该参数的官方解释信息如下:</p><p>How MySQL uses DNS</p><p>When a new thread connects to mysqld, mysqld will spawn a new thread to handle the request. This thread will first check if the hostname is in the hostname cache. If not the thread will call gethostbyaddr_r() and gethostbyname_r() to resolve the hostname.</p><p>If the operating system doesn't support the above thread-safe calls, the thread will lock a mutex and call gethostbyaddr() and gethostbyname() instead. Note that in this case no other thread can resolve other hostnames that is not in the hostname cache until the first thread is ready.</p><p>You can disable DNS host lookup by starting mysqld with –skip-name-resolve. In this case you can however only use IP names in the MySQL privilege tables.</p><p>If you have a very slow DNS and many hosts, you can get more performance by either disabling DNS lookop with –skip-name-resolve or by increasing the HOST_CACHE_SIZE define (default: 128) and recompile mysqld.</p><p>You can disable the hostname cache with –skip-host-cache. You can clear the hostname cache with FLUSH HOSTS or mysqladmin flush-hosts.</p><p>If you don't want to allow connections over TCP/IP, you can do this by starting mysqld with –skip-networking.</p><p>根据文档说明,如果你的mysql主机查询DNS很慢或是有很多客户端主机时会导致连接很慢,由于我们的开发机器是不能够连接外网的,所以DNS解析是不可能完成的,从而也就明白了为什么连接那么慢了。同时,请注意在增加该配置参数后,mysql的授权表中的host字段就不能够使用域名而只能够使用 ip地址了,因为这是禁止了域名解析的结果。</p><p>
详细出处参考:http://www.jb51.net/article/27616.htm</p><p> </p>