当数据文件和日志文件变得比较庞大,或者由于其他原因,有时需要迁移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 的位置,修改之后可能出现各种报错