当数据文件和日志文件变得比较庞大,或者由于其他原因,有时需要迁移binlog。本文简明演示mysql的binlog迁移过程。

场景:原先的binlog是放在/usr/local/mysql/data/底下,现在想存放在/usr/local/mysql/data/binlog/下面。

1、关闭数据库服务

myqladmin -uroot -p shutdown

2、修改配置文件

log-bin=/usr/local/mysql/binlog/mysql-bin

3、转移binlog文件

[root@host109 data]# pwd

/usr/local/mysql/data
[root@host109 data]# mkdir binlog

[root@host109 data]# mv mysql-bin* binlog/

4、修改mysql-bin.index

./mysql-bin.000002
./mysql-bin.000003
./mysql-bin.000004
./mysql-bin.000005
./mysql-bin.000006

5、开启数据库服务

常见错误:

数据库服务无法启动。

查看错误日志,里面显示这么两行:

/usr/local/mysql/bin/mysqld: File '/usr/local/mysql/data/binlog/mysql-bin.~rec~' not found (Errcode: 13 - Permission denied)
2015-12-19 01:33:57 4497 [ERROR] MYSQL_BIN_LOG::open_purge_index_file failed to open register file.
2015-12-19 01:33:57 4497 [ERROR] MYSQL_BIN_LOG::open_index_file failed to sync the index file.
2015-12-19 01:33:57 4497 [ERROR] Aborting

说明是权限问题(可根据ERROR的编号到网上查询)。 执行:

[root@host109 data]# chown -R mysql:mysql binlog

然后数据库服务就可以启动了。

 

注意事项:

通常不建议修改relay log 的位置,修改之后可能出现各种报错