干过Sybase运维的都知道,master设备一坏,数据库直接起不来。要是没备份,哭都来不及。2025年我就遇到过一回——AIX系统里lv_master因为存储故障变成closed状态,数据库挂了整整4小时。还好有一套成熟的恢复流程,最后把master库从备份里拉回来了。今天把这套步骤拆开揉碎讲给你,每个命令都是实测过的。
动手之前,先确认你还有没有救。如果数据库还能启动(哪怕只读),赶紧做一个master备份:
dump database master to '/backup/master.dat'别省这一步。哪怕你待会儿要删设备重建,这个备份也是你最后的安全绳。
接下来查看当前master设备的大小和状态。用AIX的LVM命令:
# lsvg -l datavg输出里找到类似这样的行:
lv_master raw 10 10 10 closed/syncd N/A注意closed/syncd表示逻辑卷已经关闭(损坏或人为关闭)。10指的是10个LP(逻辑分区)。一个LP默认是256MB?不一定,取决于你的PP size。用lsvg datavg看PP大小。假设PP=256MB,那么10个LP就是2.5GB。记下这个数字。
然后删掉这个损坏的逻辑卷:
# rmlv -f lv_master-f是强制删除,不问你确认。我当年第一次敲这个命令手都在抖。但只要备份做好了,大胆删。
用同样的名字、同样的大小重建:
# mklv -t raw -y lv_master datavg 10-t raw表示生成为裸设备(Sybase必须用裸设备)。-y lv_master指定逻辑卷名。datavg是卷组名。最后的10就是刚才那个LP数量。
重建后,设备路径是/dev/rlv_master(字符设备)和/dev/lv_master(块设备)。Sybase需要字符设备。
接下来在这个空设备上写入一个新的master数据库结构:
$ dataserver -d /dev/rlv_master -w master-w参数会在设备上覆盖写入一个全新的master数据库。这一步很快,几秒钟。注意:这个命令要在Sybase用户(比如sybase)下执行,并且环境变量已经设置好SYBASE和SYBASE_ASE。
恢复master设备,必须用单用户模式启动,否则它会尝试读取已损坏的系统表。
先复制一份主服务的RUN文件:
$ cp $SYBASE/$SYBASE_ASE/install/RUN_CRM $SYBASE/$SYBASE_ASE/install/m_RUN_CRM编辑这个新文件,在dataserver命令行最后加上-m参数。比如原来的最后一行是-M/sybase/ASE-12_5,改成:
/sybase/ASE-12_5/bin/dataserver \-sCRM \-d/dev/rlv_master \-e/sybase/ASE-12_5/install/CRM.log \-c/sybase/ASE-12_5/CRM.cfg \-M/sybase/ASE-12_5 \-m注意-m前面有空格,独立一行也行。-m表示进入master恢复模式(单用户),不会尝试启动用户数据库,也不接受网络连接。
用这个文件启动:
$ startserver -f $SYBASE/$SYBASE_ASE/install/m_RUN_CRM
启动后,用isql -U sa -P连接(密码可能为空或你的原密码)。如果能连上,说明单用户模式OK了。
这一步很多人会忽略,但极其关键。你待会儿要load database master,这需要备份服务器(Backup Server)正确连接。
先查一下:
1> select srvid, srvnetname from sysservers
2> go
srvid=1的那一行就是备份服务器。它的srvnetname必须和你实际启动的备份服务网络名一致。比如你的备份服务名叫CRM_back,那么这里也应该是CRM_back。
如果不对,直接更新(Sybase默认允许更新系统表,不需要sp_configure 'allow updates'):
1> update sysservers set srvnetname='CRM_back' where srvid=1
2> go
注意:别改错行。srvid=0是本地ASE,srvid=1是备份服务器。
备份服务器的RUN文件通常是RUN_CRM_back(名字可能不同,看你的安装)。启动它:
$ startserver -f $SYBASE/$SYBASE_ASE/install/RUN_CRM_back
确认它启动成功:ps -ef | grep Backup 应该能看到syb_backup进程。
回到isql(还是在单用户模式下),执行:
1> load database master from '/backup/master.dat'
2> go
这个过程会把备份文件里的系统表恢复到master设备上。注意:这个操作会覆盖掉你在第二步用-w新建的那个空master,所以不用担心。
加载完成后,会提示“LOAD 完成”。但别急着退出。你还需要执行:
1> online database master2> go这样master数据库才真正上线。
关闭单用户模式的ASE:
1> shutdown2> go然后用原始的RUN文件(不带-m)正常启动:
$ startserver -f $SYBASE/$SYBASE_ASE/install/RUN_CRM等几十秒,用isql登录,查几个系统表:
1> select name, status from sysdatabases2> go应该能看到你的用户数据库都在(状态为0表示正常)。再随便查一个用户表的数据,确认可用。

实测耗时:整个流程我最近一次恢复(2025年12月,master设备约2.5GB,备份文件1.8GB)总耗时约20分钟。其中load步骤最久,大概12分钟。如果你设备更大,时间会相应增加。
两个最容易踩的坑:
最后说句掏心窝的话:定期备份master设备比什么恢复技巧都重要。我后来写了个crontab,每周日凌晨3点自动dump master到另一块硬盘。再没慌过。你如果还没做,看完这篇就去配一下。
武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks 等。