搞定Mysql binlog relaylog 日志迁移

回覆文章
yehlu
Site Admin
文章: 3244
註冊時間: 2004-04-15 17:20:21
來自: CodeCharge Support Engineer

搞定Mysql binlog relaylog 日志迁移

文章 yehlu »

http://gavins.blog.51cto.com/2315765/828195

搞定Mysql binlog relaylog 日志迁移

背景:

默认情况下,mysql的数据、binlog、relaylog都是保存在同一个磁盘上,路径根据每个人的设置不一。

当mysql数据库中数据或日志增长很快时,磁盘可能面临空间不够或者IO性能跟不上,所以把日志迁移到其他磁盘是首先想到的工作。

但日志迁移的文档并不多,本文根据实践记录,希望对大家有点参考作用。

假设迁移前的路径如下:
binlog: /data/mysql_data/
mysql数据: /data/mysql_data/
mysql relay log :/data/mysql_data/


计划迁移的目标路径是:
binlog: /data2/mysql_binlog/
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


如果出现如下错误,则可能是没有修改:
/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


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



一般就可以顺利搞定了,发现磁盘空了很多,是不是让你感觉轻松了不少呢!
回覆文章

回到「MySQL」