记一次 MySQL 服务硬盘扩容
91
2023-12-08
版本说明
操作系统:CentOS 7.9
MySQL:8.0.35
背景介绍
MySQL 8 数据库所在的服务器磁盘已经被数据文件和binlog文件撑爆了,云服务器通过添加磁盘的方式给服务器扩容,详细记录磁盘扩容的整个过程。
操作步骤
磁盘挂载
查看新磁盘名称
$> lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 300M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 97.7G 0 part /
sdb 8:16 0 1G 0 disk < 这里是新添加的磁盘
sr0 11:0 1 1024M 0 rom
新建分区
$> fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x6865ddf7.
Command (m for help): n < 输入n新建分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p < 输入p建立主分区
Partition number (1-4, default 1): < 其余默认就好 ...
First sector (2048-2097151, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151):
Using default value 2097151
Partition 1 of type Linux and of size 1023 MiB is set
Command (m for help): w < 输入w保存
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
再次输入 lsblk 查看
$> lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 300M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 97.7G 0 part /
sdb 8:16 0 1G 0 disk
└─sdb1 8:17 0 1023M 0 part < 新分好的磁盘区在这里
sr0 11:0 1 1024M 0 rom
格式化分区
$> mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 261888 blocks
13094 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
挂载分区
$> mkdir /test
$> mount /dev/sdb1 /test
$> lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 300M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 97.7G 0 part /
sdb 8:16 0 1G 0 disk
└─sdb1 8:17 0 1023M 0 part /test < 已经挂载好啦
sr0 11:0 1 1024M 0 rom
自动挂载磁盘,通过UUID挂载
$> blkid /dev/sdb1
/dev/sdb1: UUID="72668e39-d36a-4ca7-9318-ff609b79c4ac" TYPE="ext4"
$> vi /etc/fstab
---------
UUID=72668e39-d36a-4ca7-9318-ff609b79c4ac /test ext4 defaults 0 0 < 添加并保存
两套方案
方案一:通过文件夹软链接替换数据目录
停止 MySQL 服务
/etc/init.d/mysql stop
# 或
systemctl stop mysqld
拷贝 MySQL 的数据目录到新的位置
cp -R /usr/local/mysql/data/ /data/mysql/
将原有的数据目录修改名称
mv /usr/local/mysql/data/ /usr/local/mysql/data_bak/
因为当前使用 root 用户操作,所以拷贝后的数据目录为 root 用户和用户组所有,此处修改目录的所有者权限,赋给 mysql 用户和用户组
chown -R mysql.mysql /data/mysql/data
通过链接命令在 MySQL原有数据目录位置创建目录软链接
ln -s /data/mysql/data/ /usr/local/mysql/data
启动 MySQL 服务
/etc/init.d/mysql start
# 或
systemctl start mysqld
方案二:重新配置 MySQL
停止 MySQL 服务
/etc/init.d/mysql stop
# 或
systemctl stop mysqld
拷贝整个 MySQL 目录到新的位置
cp -R /usr/local/mysql /data/mysql/
修改目录的所有者权限,赋给 mysql 用户和用户组
chown -R mysql.mysql /data/mysql/
修改 MySQL 配置文件 my.cnf,将文件中的`/usr/local/mysql`替换为新的位置`/data/mysql/`
cp /etc/my.cnf /etc/my.cnf.bak
vi /etc/my.cnf
修改 MySQL 启动脚本文件,同样将文件中的`/usr/local/mysql`替换为新的位置`/data/mysql/`
cp /etc/init.d/mysqld /etc/init.d/mysqld.bak
vi /etc/init.d/mysqld
启动 MySQL 服务
/etc/init.d/mysql start
# 或
systemctl daemon-reload
systemctl start mysqld
参考
- 0
- 0
-
分享