数据库系统处是什么?
数据库系统处在信息系统的核心位置,是系统正常运行的必要基础。因此,在选择一款数据库时,数据库的性能和稳定性是我们首要考虑的方面。毕竟谁也不想把自己的大楼建在摇摆的地基上,这样可能永远无法摆脱后续维稳加固工作带来的困扰。如果所选择的产品因为自身技术能力的局限性,永远达不到用户的要求,最终只能重新选型数据库,这对用户来说虽算不上致命,但也大伤元气。
在数年的工作中,我们参与解决过很多起因人为或者硬件故障导致的数据库故障,而这些问题也都因为前期的系统架构设计不完善导致系统停运时间过长。那本文就从这些问题出发,结合达梦数据库成熟的产品,用最简单的方式介绍达梦数据库是如何为应用系统助力的。
“阵列硬盘坏了,数据库读写文件异常,系统停运啦!”
近年来,遇到太多的类似问题。系统建设初期,用户最先考虑的都是磁盘阵列自身的RAID机制。“坏了几块硬盘无所谓,我们可以通过阵列的冗余热插拔更换硬盘”,听了太多的这种胸有成竹。但是,面对永远无法预知的硬件故障,我们无法想象到它会坏到什么程度。我们遇到过的最糟糕的一个案例是存储在某次重启后挂载不上了,只能进行重新格式化。整体格式化!这不是开玩笑,对,就是所有的数据就在那一瞬间都化作一股青烟,烟消云散~
为了保证最起码的数据安全,在系统建设之初,需要优先考虑数据的冗余。这样就需要两份独立的数据存储空间,一份存储空间出现极端灾难后,另一份可以快速接管访问请求,继续对外提供服务。
首先,大家不要被HA集群误导,在选择HA集群时一定要清楚他能做什么。单纯的操作系统层级的HA集群实现的是对服务器的冗余,而对存储上的数据依然是单点。他更多的是来进行VIP地址、磁盘阵列、数据库服务的管理。当主机服务器出现异常后,整体可以挂载到冷备备机。对,没错,就是把磁盘阵列挂载到冷备备机,原封不动的挂载。所以,他对数据库来说就是个单机。当然,现在市面上的一些数据库本身带了HA功能(在主备集群中提供VIP地址挂载的功能),大家区别他与操作系统HA的区别就是看他有几份数据。如果只有一份,那就要小心了,可能他的HA就是实现了操作系统的HA功能,进行VIP和存储的挂载管理。在出现存储故障时,他也无法提供持续的访问功能。
在针对这种场景时,我们可以选择采用达梦的数据守护集群[1]或者读写分离集群[2]。应用的写入入口永远是主机,主机将REDO日志包通过达梦MAL邮件系统发送到备机进行日志重做,实现高效的数据同步功能。备机对外支持只读事务,在读写分离集群下可以实现对应用透明的只读事务自动分发到备库,主备之间数据同步可以选择高性能模式和强一致模式。并且,集群支持一主多备以及异步备机。在此不做过多解释,详见官方文档。