自己在平时练习搭建主备集群时遇到了一些问题,简单记录一下,问题不大但都是坑!
问题一:
环境:Win10,VMware Workstation 15,银河麒麟v10,dm8
场景:在搭建实时主备时,主库和备库均启动到mount状态,但是在启动守护进程之后,发现主备库的状态依然是mount,不是open。
分析:
(1)主备能够到mount状态,说明之前的操作没什么大的问题,但是启动守护进程却没有任何效果,是否是dmwatcher.ini配置出错呢?检查配置文件的端口和IP信息发现是没有问题的。
(2)去监视器里边看看有没有什么报错。show一下,发现只有主库的信息,没有备库的信息,如下图。
然后输入tip命令,发现主库不可加入其它实例,同样是没有备库的信息,如下图。
附:如果重新启动监视器报一下错误,先去修改dmmonitor.ini文件中的确认监视器参数(MON_DW_CONFIRM)为0,登录成功之后再修改回去。
(3)此时锁定问题出在备库上,是什么原因导致监视器收集不到备库的信息呢?网络问题?看看备库防火墙是否关了,确定关掉之后,将主机、备机、监视器分别ping一下,看是否能ping通。结果发现主库ping备库、监视器ping备库都不通。那么什么原因导致网络不通呢?
(4)考虑到当时的环境是VMware搭建的集群,主机和备机不是同一个阶段配置的,会不会是网络模式的问题呢?打开网络适配器查看设置,发现一个是桥接模式,一个是NAT模式,模式不同当然网络就不通了。其实,通过网段也能猜到是网络模式的问题。
解决:修改网络模式后,根据新的IP信息修改dmmal.ini和dmmonitor.ini,再次启动数据守护进程,就能启动到open状态了。
问题二:
场景:在备机上初始化实例后,没有用disql验证是否能够登录成功,然后就进行来了数据库恢复,修改了dm.ini文件。在搭建集群时,没有用默认端口,而是换了其他端口。
报错:在备机启动到mount状态后,修改数据库模式,发现disql无法正常登录,报错“创建SOCKET失败”。再次修改dm.ini文件的端口号为默认的5236,用disql登录5236还是报错。
解决:重新初始化实例,用默认端口登录成功之后,退出登录,关闭数据库服务进行数据库恢复,再次将备机启动到mount状态,修改数据库模式时发现此时就可以使用disql正常登录了。
附加小问题: 在同一个数据库上初始化实例时,会有提示是否要覆盖一些配置文件、数据文件等信息,此时最好还是谨慎一些,因为我当初覆盖掉之后,进行备机数据恢复时报错了,说是缺少某个文件。如果不确定覆盖文件会有什么后果,最好还是在一个新的库下边初始化实例。
问题三:
场景:数据库名不同。在主、备机器上初始化数据库实例时,当时用的是./dminit命令行方式,由于要修改实例名,当时就把所有数字1修改为了2,导致主机数据库名为“DM01”,备机的数据库名为“DM02”。
报错:目前还不确定问题二的报错是否是改问题导致,也是后来才意识到的错误。
当时使用的命令(在实际操作时一定要将数据库名写成一样的):
./dminit path=/dm8/data db_name=DM01 instance_name=DMSVR01 port_num=5236 page_size=16 EXTENT_SIZE=32 LOG_SIZE=500 SYSDBA_PWD=DM01SYSDBA
./dminit path=/dm8/data db_name=DM02 instance_name=DMSVR02 port_num=5236 page_size=16 EXTENT_SIZE=32 LOG_SIZE=500 SYSDBA_PWD=DM02SYSDBA
命令行方式创建数据库实例需要注册数据库服务,注册服务要用root。 命令:
./dm_service_installer.sh -t dmserver -p DMSVR01 -dm_ini /dm8/data/DM01/dm.ini