公司半年前上线一个新的项目,采购了一批阿里云主机,磁盘组成是40G系统盘+100G的数据盘,数据库采用MariaDB Galera Cluster集群部署,由于业务数据量快速增长,导致磁盘存储空间剩余量很少,急需要扩容,先总结整个项目规划中埋下的坑;
1、没有DBA对数据库的容量规划,而前期的运维人员采购时选用100G的SSD云盘;
2、数据库默认使用共享表空间,缺点是删除数据后不释放空间,当数据快速增长后,我们采取了先删除临时表数据的方式来尽量避免暴力扩容,争取在春节期间稳定,删除部分数据后,容量还是那么的大,只能考虑扩容;
3、整个项目的部署上存在弊端,当初为了更好的利用服务器资源采取了将redis和mysql交叉部署的方式,如示例:
序号 | 服务器 | 配置 | 部署应用 | 其他应用 |
1 | MariaDB Galera Cluster 1 | 8核16G 100G SSD云盘 | mysql 节点1 | redis备 |
2 | MariaDB Galera Cluster 2 | mysql 节点2 | redis主 | |
3 | MariaDB Galera Cluster 3 | 8核16G 100G 普通云盘 | mysql 节点3 | 接口程序、短信、彩信程序 |
弊端:应用耦合性比较高,而采取的方式必须要重启服务器,由于耦合性太高,导致真个扩容难度太大,重启服务器期间不仅数据库受影响,应用程序也会受影响。
具体操作:
由于节点3是整个系统的 接口程序和登录程序的一个节点,在SLB后端切掉流量后,先用此设备扩容测试,测试成功后再扩容其他服务器。
(1)、在控制台找到示例的磁盘扩容,一般在产生快照的过程中不能扩容,等扩容订单完成后,在阿里云控制台重启服务器,不是远程连接客户端重启,此处踩坑 晚上12点多给阿里云打电话、提工单,最后发现是必须在控制台重启。
以下步骤和截图复制阿里云帮助文档
如果主机之前并未划分过分区,只是使用裸盘格式化使用,那么可以使用如下方法进行原地扩容。
- 查看当前挂载信息,可以看到是裸盘挂载,磁盘大小 5G。
- 运行 umount /dev/xvdb 取消挂载。
- 控制台进行磁盘扩容,然后重新挂载(按量付费的云盘);或者控制台重启服务器(普通云盘)。
- 系统内查看磁盘,已经是升级后的 6G 了。
-
依次运行如下命令。
e2fsck -f /dev/xvdb
resize2fs /dev/xvdb - mount /dev/xvdb/mnt 重新挂载磁盘。可以看到磁盘已经扩容成功。
在扩容SSD的时候,遇到了一部分问题,但是由于时间紧急并未截图,也过去好几周了忘记了整个过程,所以在此不做详细的描述,注意事项: