技巧四 数据库扩容
随着系统使用时间的拉长,我们的最先预估的磁盘很可能会遭遇到容量瓶颈,像笔者所在的公司,最开始以为云服务自带的40G硬盘应该足够支撑一段时间了,可是没想到短短一年时间,数据库的已经增长到20G了,很快磁盘就开始报警了。
磁盘扩容
删除一些不需要的日志数据,辗转腾挪出部分空间来,终究也只是缓兵之计,根本的途径还是要扩容磁盘。由于现在基本都是云服务器,因此可以进行不停机扩容。这里假设读者已经通过云服务器后台,在线扩容了磁盘。
云服务后台虽然可以不停机在线扩容,但是磁盘的格式化还是需要我们自己进行的。首先,我们使用fdisk工具,先将我们新增的空间进行格式化。
fdisk -l
查看磁盘列表:
Disk /dev/vda: 160 GiB, 171798691840 bytes, 335544320 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x6c740fc2
Device Boot Start End Sectors Size Id Type
/dev/vda1 * 2048 83886046 83883999 40G 83 Linux
/dev/vda2 83886080 125829119 41943040 20G 5 Extended
新增的空间由于还没有格式化,不会列表中显示出来,但是我们可以从总的大小中看出磁盘已经扩容。接下来,我们使用n命令新划分分区:
root@iZp0w6djg8vh9367ij45ciZ:~# fdisk /dev/vda
Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help):
输入n,开始创建一个新分区,如果有需求可以更改其中的参数。使用默认参数可以将整个新增的空间格式化。
最后使用w命令将变更应用到磁盘中,这样就完成了新空间的划分,新分区的名字叫 /dev/vda3
创建文件系统
创建完新分区之后,我们要在其上面建立好文件系统才可以被系统使用。现在最新的Linux的文件系统格式是ext4,这里我们就使用ext4:
mkfs.ext4 /dev/vda3
这样就完成了文件系统的建立。
挂载新分区
新分区创建完成以后,我们需要将其挂载到某个文件夹后才可以使用。这里我们选择/data文件夹。
mount /dev/vda3 /data
使用df -h命令,可以看到/dev/vda3的话 说明挂载成功。
迁移Postgresql数据库
首先,我们先停止odoo服务和postgresql服务,以防止新数据产生。
service odoo stop
service postgresql stop
然后,我们使用cp命令,将postgresql的主数据文件夹拷贝到新磁盘上:
cp -rf /var/lib/postgresql /data/postgresql
等待拷贝完成,更改其权限为postgres用户:
chown postgres:postgres -R /data/postgres
然后,删除原有的数据文件夹,并创建一个软连接:
rm -rf /var/lib/postgresql
ln -s /data/postgresql /var/lib/postgresql
最后,开启postgresql和odoo服务:
service odoo start
service postgresql start