在测试Initial Load的时候,需要观察节点刚注册之后发生的Initial Load过程。经过测试,发现注册一个节点的过程大体是这样的,这里以手工注册为例,假设B节点是Registration Server,A节点要注册到B节点上,B已经启动,A启动之后,会根据配置的registration.
在测试Initial Load的时候,需要观察节点刚注册之后发生的Initial Load过程。经过测试,发现注册一个节点的过程大体是这样的,这里以手工注册为例,假设B节点是Registration Server,A节点要注册到B节点上,B已经启动,A启动之后,会根据配置的registration.url属性尝试注册到A来获取A的信息(SYM_NODE表和SYM_NODE_SECURITY表中的信息),A这时没有为B开启注册,A是没有办法注册上的。在B端执行
../bin/symadmin--engine corp-000 open-registration store 001命令之后,就相当于接受了A的连接请求(猜测:B根据这条命令传入的参数与A一直尝试发过来的信息作比对,他们指的是同一个节点,就接受连接请求),连接建立之后,A就可以获取B的信息以填充SYM_NODE表和SYM_NODE_SECURITY表中的列了(其实SYM_NODE_IDENTITY表和SYM_NODE_HOST表也是在执行这条命令之后填充的相关的数据)。
可以看到,注册的目的,就是让A可以拥有B的信息,进一步拥有B的访问等的权限。也就是说,A到底有没有注册到B,就是看A有没有持有B的信息。那我们把A中B的信息删除掉,应该就会使A忘记先前的注册关系。
重新注册一个节点的步骤:
1. 找到了下面四个相关的表:SYM_NODE,SYM_NODE_IDENTITY,SYM_NODE_HOST,SYM_NODE_SECURITY。
在A端将这四个表清空,A的SymmetricDS控制台接着就会打印出未注册相关的信息:
[store-001] - RegistrationService - Thisnode is unregistered. It will attempt toregister using the registration.url [store-001] - DataLoaderService - Usingregistration URL ofhttp://hadoop4.highgo.com:8080/sync/corp-000/registration?nodeGroupId=store&externalId=001&syncURL=http%3A%2F%2Fhadoop3%3A31415%2Fsync%2Fstore-001&schemaVersion=%3F&databaseType=PostgreSQL&databaseVersion=9.2&symmetricVersion=3.6.14&hostName=hadoop3&ipAddress=192.168.100.59 [store-001] - DataLoaderService -Registration attempt failed. Registration was not open [store-001] - RegistrationService - Couldnot register. Sleeping before attemptingagain. [store-001] - RegistrationService -Sleeping for 17000ms
2. 这时在B节点运行开启注册的命令:
../bin/symadmin--engine corp-000 open-registration store 001
3. 在A端的数据库中查看刚才清空的几个表,可以看到已经填充了相关的信息。