root 20557 1 2 13:03 pts/0 00:00:00 /dmdb/dm/bin/dmserver dm.ini –noconsole 2.阵列库停止
由于阵列库中数据库资源是由操作系统HA软件来控制,此处也分为两个方面。 1) 只重启数据库
此时操作同单机库,停止后会由HA软件自动启动数据库。 2) 完全停止数据库
此时需要停止操作系统HA软件。停止HA时需要先停止备机节点HA,再停止主机节点HA。主备机可以通过查看/dbdata及/dbbak阵列目录挂载在的服务器确定,挂载了这两个阵列目录的服务器是主机。停止HA软件的命令为:
凝思:/etc/rc.d/init.d/openais stop 麒麟:/etc/rc.d/init.d/heartbeat stop 当返回[OK]时,说明停止成功。
1.2数据库启动
启动数据库需要使用root用户登录到数据库节点,分为单机启动和阵列库启动。 1.单机启动
执行:
etc/rc.d/init.d/dmserverd start 启动成功返回[OK]
但是数据库并未完全启动成功,通过查看数据库日志可以确定数据库是否启动完毕,数据库日志存储在/dmdb/dm/log,日志格式dm_[YYMM].log(如dm_201212.log):
tail –f /dmdb/dm/log/dm_201212.log 出现如下信息说明数据库启动完毕:
2012-12-14 10:37:01 database T00005792 check point end. 2.阵列库启动
在部署了阵列库后,数据库服务完全由操作系统HA软件来控制,如果只是重启数据库,在停止库后不需要做手动启动数据库的操作。但是如果是重启服务器后需要启动数据库服务,则只需确定HA软件已经启动即可,启动HA时先启动主机节点,待主机节点所有资源启动完毕,再启动备机节点。HA软件的启动方式:
凝思:/etc/rc.d/init.d/openais start 麒麟:/etc/rc.d/init.d/heartbeat start
HA软件启动成功返回[OK]。但是此时并未完全启动成功,可以通过crm_mon命令查看双机启动状态,如下状态说明数据库已经启动。 Online: [ his02 his01 ] Resource Group: rsc-group rsc-vip-public (ocf::heartbeat:IPaddr): Started his02 rsc-fso (ocf::heartbeat:Filesystem): Started his02 rsc-fss (ocf::heartbeat:Filesystem): Started his02 dmserver (lsb:dmserverd): Started his02 rsc-dmdata (lsb:dmagentd): Started his02 Clone Set: fencing [st-ssh] Started: [ his01 his02 ] Clone Set: rsc-clone-pingd [rsc-pingd] Started: [ his01 his02 ] 二、数据库无法连接问题定位
当数据库出现无法连接的情况时,通过如下的步骤确定数据库问题
2.1 排查是否是网络原因
ping 数据库vip地址(192.1.1.1)
ping 数据库实际地址db01(192.1.1.2)\\db02(192.1.1.3)
如果vip无法ping通,db01和db02均无法ping通,有可能网络出现问题。如果db01和db02均可以ping通,有可能操作系统HA出现故障,进行操作系统HA排查,见下。
排查操作系统HA运行情况
使用root用户连接上数据库服务器db01或db02,执行crm_mon命令查看HA运行状态,如果HA正常运行,会返回如下消息:
Last updated: Mon May 13 18:55:03 2013 Stack: openais Current DC: db02 - partition with quorum Version: 1.1.4-ac608e3491c7dfc3b3e3c36d966ae9b016f77065 2 Nodes configured, 2 expected votes 3 Resources configured. ============ Online: [ db01db02 ] Resource Group: rsc-group rsc-vip (ocf::heartbeat:IPaddr): Started db02 rsc-filesystem (ocf::heartbeat:Filesystem): Started db02 rsc-filesystem1 (ocf::heartbeat:Filesystem): Started db02 rsc-filesystem-bak (ocf::heartbeat:Filesystem): Started db02 rsc-dmserverd (lsb:dmserverd): Started db02 rsc-dmagent (lsb:dmagentd): Started db02 Clone Set: fencing [st-ssh] Started: [ db02db01 ] Clone Set: rsc-pingd-clone [rsc-pingd] Started: [ db02db01 ] 其中:
Online表示在线运行的节点;
Resource Group: rsc-group下面各个资源后面的Started db02,表示主机运行所在服务器, Started表示资源正在运行,Failed表示检测到资源运行失败,Unmanaged表示资源处于托管状态,HA无法监控资源状态。
在遇到资源出现Unmanage状态时需要将HA重新停止,停止方法:
/etc/rc.d/init.d/openais stop(麒麟操作系统为/etc/rc.d/init.d/heartbeat stop)
返回OK,说明资源停止,通过df–h 命令查看/dbdata和/dbbak目录是否已经卸载。 在遇到资源出现Failed状态时,说明HA检测到资源异常,该类问题HA会自动处理,会将相应资源重启拉起,当然还存在启动多次认为Failed的问题,该类问题,在下面只会介绍当rsc-dmserverd服务出现异常的处理情况,其余的问题数据网络问题和阵列问题,这些问题很容易判断故障原因。
2.2排查数据库是否可以连接
使用root用户登录到数据库服务器上,通过crm_mon命令查看数据库主机
Last updated: Mon May 13 18:55:03 2013 Stack: openais Current DC: db02 - partition with quorum Version: 1.1.4-ac608e3491c7dfc3b3e3c36d966ae9b016f77065 2 Nodes configured, 2 expected votes 3 Resources configured. ============ Online: [ db01 db02 ] Resource Group: rsc-group rsc-vip (ocf::heartbeat:IPaddr): Started db02 rsc-filesystem (ocf::heartbeat:Filesystem): Started db02 rsc-filesystem1 (ocf::heartbeat:Filesystem): Started db02 rsc-filesystem-bak (ocf::heartbeat:Filesystem): Started db02 rsc-dmserverd (lsb:dmserverd): Started db02 rsc-dmagent (lsb:dmagentd): Started db02 Clone Set: fencing [st-ssh] Started: [ db02 db01 ] Clone Set: rsc-pingd-clone [rsc-pingd] Started: [ db02 db01 ] 其中红色部分说明主机运行在db02上,连接到db02,进入到/dmdb/dm/bin目录下,开始排查问题:
1)检查dmserver进程是否存在
db02:~ # ps -ef|grepdmserver root 4919 25203 0 19:13 pts/0 00:00:00 grepdmserver root 89741 58 Apr23 ? 11-13:20:07 /dmdb/dm/bin/dmserver dm.ini -noconsole 返回如上红色部分信息,说明达梦服务进程正在运行:
如果达梦进程不在,结合HA问题排查部分,确认出现问题的资源。
2)达梦进程存在,使用isql工具连接数据库,在/dmdb/dm/bin目录下执行: db02:/dmdb/dm/bin # ./isql SYSDBA/SYSDBA@127.0.0.1 isql V6.0.2.79-Build(2013.04.11) login success SQL> 返回login success,说明数据库可以正常连接,并无异常,需要检查应用和网络方面故障。
返回login failed,说明数据库无法连接,使用如下命令查看数据库当前连接数: db02:/dmdb/dm/bin # netstat -anp|grep 12345|wc -l 570 一区连接数不能超过500,三区连接数不能超过1000,如果超过这两个值,说明是由于应用建立的连接数超过数据库配置上限导致。需要排查存在连接泄露的应用程序。
3)在上步骤中,如果连接数据库没有异常,查看达梦数据库检查点日志,进入到
/dmdb/dm/log目录下,达梦服务运行日志格式为dm_年月.log,该日志每个一分钟会进行一次日志记录,每一次的日志记录内容如下:
db02:/dmdb/dm/log # tail -f dm_201305.log 2013-05-13 19:23:17 database T 1169238336 check point set with type 1. 2013-05-13 19:23:17 database T 1113446720 check point start (1, 1, 20) ... 2013-05-13 19:23:17 database T 1113446720 redo log flush ... 2013-05-13 19:23:17 database T 1113446720 system buffer flush ... 2013-05-13 19:23:18 database T 1113446720 check point end. 查看日志最前端日期,是否和系统当前日期接近,如果不接近,说明数据库检查点卡住。
数据库检查点卡住,一般是有两方面的问题原因:
1. 磁盘无法访问,此时检测下数据文件所在磁盘是否可以正常读写,以及测试下读写的速度。
2. 数据库本身问题,如果磁盘没有问题,需要数据库来分析问题,此时为了尽快恢复系统,可以通过手动生成core文件先恢复系统,后期有数据库厂家分析core文件来确定问题原因。恢复系统过程如下。
此时需要重启数据库,为了分析数据库异常问题,此时需要生成一个core文件,协助分析问题,先获取dmserver的进程号,再杀掉服务,如下:
db02:/dmdb/dm/log # ps -ef|grepdmserver root8974 1 58 Apr23 ? 11-13:36:45 /dmdb/dm/bin/dmserver dm.ini -noconsole root 20703 25203 0 19:37 pts/0 00:00:00 grepdmserver db02:/dmdb/dm/log # kill -SIGSEGV 8974 Core文件生成完毕后,dmserver进程会退出,并由HA将达梦服务启动,数据库启动时,可以查看达梦服务日志,如dm_201305.log,启动时数据库会进行恢复检查,直至出现如下信息,数据库才恢复完毕:
2013-04-17 21:36:44 database T 2103912160 5 2013-04-17 21:36:44 database T 2103912160 6 2013-04-17 21:36:44 database T 2103912160 7 2013-04-17 21:36:44 database T 2103912160 8 2013-04-17 21:36:44 database T 2103912160 9 2013-04-17 21:36:44 database T 2103912160 10 2013-04-17 21:36:44 database T 2103912160 recovery db 13 end. 2013-04-17 21:38:16 database T 2103912160 rollback start... 2013-04-17 21:38:16 database T 2103912160 rollback end... 2013-04-17 21:38:18 database T 2103912160 check point set with type 17. 2013-04-17 21:38:18 database T 1116080448 check point start (17, 0, 100) ... 2013-04-17 21:38:18 database T 1116080448 redo log flush ... 2013-04-17 21:38:18 database T 1116080448 system buffer flush ... 2013-04-17 21:38:18 database T 1116080448 check point end. 三、数据库性能问题排查
数据库出现性能问题时,通常存在如下几方面问题: ? 数据库整体运行慢 ? 部分SQL语句执行效率差