有个运行了3年的 Mariadb 实例,var/ibdata1 文件达到了 13GB ,问了 AI ,建议我导出所有数据,重建用户文件夹,再导入数据,以清理磁盘。

具体措施

修改 /etc/my.cnf 文件

# 开启独立表空间
innodb_file_per_table = 1

# 限制 ibdata1 的自动扩展上限
innodb_data_file_path = ibdata1:12M:autoextend:max:2G

进入 /usr/local/mariadb 文件夹。

# 导出所有数据库
./bin/mariadb-dump --all-databases --single-transaction --routines --events > /tmp/full_dump.sql

# 停止服务
systemctl stop mariadb

# 备份数据文件夹
mv var var_old

# 新建数据文件夹 
mkdir var

# 调整权限 
chown mariadb:mariadb var

# 重建数据文件夹所需文件 
./scripts/mariadb-install-db --user=mariadb --datadir=/usr/local/mariadb/var

# 启动服务 
systemctl start mariadb

# 恢复数据 
mariadb < /tmp/full_dump.sql

导入完成后,再清理一下 Binlog,因为是新数据库,binlog全是插入记录,没啥用,不如直接备份 /tmp/full_dump.sql 。

/usr/local/mariadb/bin/mariadb -u root -p
RESET MASTER;

效果还可以,清理了16G 空间。

21G    ./var_old
4.3G    ./var

参考链接

ibdata1文件非常大如何解决,ibdata单独存储

文章目录