背景:
默认情况下,mysql的数据、binlog、relaylog都是保存在同一个磁盘上,路径根据每个人的设置不一。
当mysql数据库中数据或日志增长很快时,磁盘可能面临空间不够或者IO性能跟不上,所以把日志迁移到其他磁盘是首先想到的工作。
但日志迁移的文档并不多,本文根据实践记录,希望对大家有点参考作用。
假设迁移前的路径如下:
binlog: /data/mysql_data/
mysql数据: /data/mysql_data/
mysql relay log :/data/mysql_data/
mysql数据: /data/mysql_data/
mysql relay log :/data/mysql_data/
计划迁移的目标路径是:
binlog: /data2/mysql_binlog/
relaylog :/data2/mysql_relaylog/
relaylog :/data2/mysql_relaylog/
一、迁移binlog
1、首先停止mysql
2、复制所有binlog到其他磁盘,假设是:
/data2/mysql_binlog/mysql-bin.*
同时要复制mysql-bin.index到新路径
3、修改my.cnf配置文件
log-bin=/data2/mysql_binlog/mysql-bin
4、编辑 mysql-bin.index
把内容修改为绝对路径:
/data2/mysql_binlog/mysql-bin.000001
/data2/mysql_binlog/mysql-bin.000002
/data2/mysql_binlog/mysql-bin.000003
/data2/mysql_binlog/mysql-bin.000004
/data2/mysql_binlog/mysql-bin.000002
/data2/mysql_binlog/mysql-bin.000003
/data2/mysql_binlog/mysql-bin.000004
如果出现如下错误,则可能是没有修改:
/usr/local/mysql/bin/mysqld: File './mysql-bin.000003' not found (Errcode: 2)
120301 22:51:06 [ERROR] Failed to open log (file './mysql-bin.000003', errno 2)
120301 22:51:06 [ERROR] Could not open log file
120301 22:51:06 [ERROR] Can't init tc log
120301 22:51:06 [ERROR] Aborting
120301 22:51:06 [ERROR] Failed to open log (file './mysql-bin.000003', errno 2)
120301 22:51:06 [ERROR] Could not open log file
120301 22:51:06 [ERROR] Can't init tc log
120301 22:51:06 [ERROR] Aborting
5、启动mysql
/ett/init.d/mysql start
二、迁移relay log
relaylog的迁移稍微有点不一样,不知您发现没有,my.cnf默认没有relaylog的配置,其实是有的。
1、首先停止mysql
2、把relaylog复制到目标路径,假设是:
/data2/mysql_relaylog/ubuntu-relay-bin.*
同时复制 ubuntu-relay-bin.index
3、同时在my.cnf中增加一条
relay_log=/data2/mysql_relaylog/ubuntu-relay-bin.log
4、然后编辑 ubuntu-relay-bin.index 把路径改为新的绝对路径
/data2/mysql_relaylog/ubuntu-relay-bin.*
5、编辑 relay-log.info文件
sudo vim /data1/mysqldata/relay-log.info
也是改为新的绝对路径
6、启动mysql
/ett/init.d/mysql start