linux下ibdata文件过大,需要迁移mysql目录到外挂磁盘

  前几个月发布了新项目,服务器是10G磁盘A+50G外挂磁盘B,使用yum安装的mysql,默认是装在A盘的,运行一段时间后,发现A盘的磁盘使用率已达到80%,仔细查了一番发现ibdata文件以每天50M的速度在增加,按照这个速度,用不了一个月A盘就满了,会导致mysql停止的;网上查了一些mysql目录迁移的办法,拿出来分享一下:


第一种办法(简单):

使用linux下的软连接方法,具体操作如下:(以迁移到/home/mysql/目录为例)
先停止mysql:
/etc/init.d/mysqld stop
移动数据:
mv /var/lib/mysql/* /home/mysql/
创建软连接:
ln -s /home/mysql/ /var/lib/mysql/
启动mysql:
/etc/init.d/mysqld start

即可。

--------------

service mysql stop
mv /var/lib/mysql/* /data/mysql/
ln -s /data/mysql/mysql/ /var/lib/
chown -R mysql:mysql /data/mysql/
service mysql start
--------------

第二种办法(复杂):

首先我们需要关闭MySQL,命令如下:

#service mysqld stop

然后是复制移动数据,为了安全期间,我们采用复制的命令cp,先找到mysql的原目录,一般是/var/lib/mysql,我们执行:

#cp -a mysql /home/mysql/

这样就把数据库复制到/home/mysql下面去了,注意-a这个参数一定要带着,否则有可能权限会出问题。

然后我们修改配置文件,一共有三个,下面我一一说明:

#vi /etc/my.cnf

打开之后修改datadir的目录为/home/mysql_data/mysql,把socket改成/home/mysql_data/mysql/mysql.sock,为了安全起见,你可以把原来的注释掉,然后重新加入一行,改成现在的目录。

#vi /etc/init.d/mysqld

准确的位置是/etc/rc.d/init.d/mysqld,由于这里这里有一个/etc/init.d到/etc/rc.d/init.d的映射,所以用上面的命令即可,也简单。这里主要也是修改datadir的目录为/home/mysql_data/mysql

#vi /usr/bin/mysqld_safe

这里也是修改datadir的目录

下面需要建立一个mysql.sock的链接:

#ln -s /home/mysql_data/mysql/mysql.sock /var/lib/mysql/mysql.sock

至此所有的修改都完成了,下面启动mysql

#service mysqld start

或者重启linux

#reboot

如果能正常启动,那基本上就没什么问题了。

总结需要注意事项:

1.修改datadir为新的data目录。

2.合理修改innodb_log_file_size的值为实际迁移过来的日志文件大小。

3.字符集/默认引擎的修改,要与迁移前统一。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值