Shuo
Shuo I'm a DBA(Database Administrator), we can share and discuss MySQL, MongoDB, Redis and other databases here, also including learning Python, Shell, Golang together.

MySQL手记1 — 初识数据库系统


MySQL手记1 — 初识数据库系统

很幸运,毕业的第一家公司,给应届生都安排了导师制,让应届生能够快速的成长起来。刚开始工作时,公司导师和我说:对于数据库来说,最重要的就是两个方面:安全与性能,后期你会发现,我们做的所有的工作,都是围绕着这两个方面进行展开。这句话后来,给了我很多的提示,告诉自己,怎么样才能把工作做好,而工作的重点又是什么。
公司的另一个导师告诉我:学习MySQL数据库,最准确的做法就是:阅读官方文档,然后去测试验证。所以,每每遇到一些疑问,我总是打开官方文档,查看相关的介绍,对于DBA来说,根据官方文档和测试结果,是一项基础的“素质”。测试和验证的过程很磨练人的耐心,但对于这个行业却重要,很多时候都是测试了很多种的场景,最后选出了其中的一个,做为最终上线的架构。

1
2
就拿服务器的选型来说,磁盘这块的测试,为什么选择SSD?做RAID的目的是什么?都是前期测试的结果:

一、RAID

提到RAID,即磁盘阵列(Redundant Arrays of Independent Disks),往往与运维有关,DBA同样需要知道并了解其中的原理,特别是在自建数据库的环境,一个不小心,很容易造成数据的丢失。
对于RAID的具体介绍,网络上已经有非常详尽的资料,百度百科上也有详细的介绍:磁盘阵列

1.1 RAID的选型

RAID的选型,通常考虑两个方面:数据安全、成本。按照不同RAID选型的特性,可以得到:
RAID0成本低、性能高,但安全性很低:若数据损坏,无法通过副本或者计算的形式恢复数据
RAID1的成本最高、最安全:RAID1是做数据的全量副本,当一个副本出现数据损坏的时候,可以通过另一个副本得到相同的数据,即损失一半的容量
RAID5的成本居中,但是其至少需要3块盘:总容量是(N-1)×单块硬盘容量(N是硬盘的个数)。比如3块1T的硬盘,组成raid5后就成了2T,还有1T是做校验的(所有校验信息分散放在所有磁盘上)

1
2
更详细的信息可以查看附录分享的一篇文章:https://www.cnblogs.com/Q2881064156/p/7053203.html

这也就是为什么在大多数的场景,我们会在数据库的系统中去选用较为安全的Raid10或是Raid5。

二、通用硬件选型

2.1 磁盘选型

同样,DBA需要对硬件有基础了解,通常CPU和内存,各厂商的差异不会很大。上个部分所说的Raid,也是需要服务器支持Raid卡,这些信息的了解,可以多去几次机房装机测试,多装机几次,会有基本的概念。

1
2
​对于性能差异较大的,主要是在于磁盘上,例如SSD,机械盘等的选型。当然,这些信息并非了解即可,而是需要针对IO,进行测试,包括:IOPS、吞吐量、延迟等等。

对于不同的应用环境,同样对于磁盘的要求不同:通常相同容量的SSD的价格远大于机械盘的价格,而由于SSD在随机读写上的速度,远超过机械硬盘,通常我们在MySQL数据库服务器上使用SSD,以得到更高的IO性能。这并非猜测,而是因为对于MySQL的存储来说,物理上是随机读写的,并非顺序的,SSD具有更高的随机IO性能。(当然,若有顺序读写的环境,例如文件系统,使用SSD和机械硬盘的性能差异较小,会选用成本更低的机械硬盘)
(​对于IO的测试方法,后续也将会分享)

2.2 网络

(1)网络
既然说到硬件,还有一个需要着重关注的方面——网络
通常运营商网络有固定的带宽,可以根据需要进行选择。涉及到跨机房,专线等的内容,更是需要考虑到其中的网络延迟,适时调整应用或者数据库的相关配置,以充分利用现有资源。
(后续会详细介绍在跨机房、城市、国家等情况下,数据库应当注意哪些方面,对于数据的同步及一致性等的方面,作出介绍。)

(2)网卡
市面上常见的服务器网卡主要是两种:千兆网卡、万兆网卡、光纤网卡
而对于网卡数目,又会有:单网卡、多网卡

通常对于一个数据库服务器来说,需要至少双千兆网卡,在生产环境,许多公司会绑定多个网卡,使得网络更加稳定。
当然,对于并发访问量或者数据传输要求高的场景,可选用万兆网卡甚至是光纤网卡,可以在购买服务器时,和厂家进行适配。

2.3 附:网络小工具

(1)一个是很简单的ping工具,可以获得点到点的大致网络延迟情况。生产环境中,往往是禁止ping的,可以在测试时候打开,在ping完之后,应该及时禁止ping,防止服务器网络受到ping攻击。

(2)抓包工具。在windows上,用得比较多的是wireshark工具,在linux上,tcpdump也是常用的抓包工具。通过抓包,可以获取到客户端与服务端交互的数据信息。对于DBA来说,数据库环境中,会存在客户端和数据库server连接的问题,而这些问题,又可能与JDBC、线程池等有关系,所以在遇到问题时候,进行抓包,可以使问题的排查更加迅速、准确。
​本篇主要是一个开篇概括,后续会结合DBA的日常工作,逐步介绍数据库相关的知识点​

欢迎关注公众号:朔的话

comments powered by Disqus