网站建设公司市场博客网
问题原因
备份时redo log被覆盖
解决方案
方法1:增加innodb_log_file_size、innodb_log_files_in_group大小,需要重启数据库
vi my.cnf
innodb_log_file_size= 2G
innodb_log_files_in_group =4
方法2: 动态配置redo log archive,不需要重启数据库,需要设置innodb_redo_log_archive_dirs
设置环境变量innodb_redo_log_archive_dirs:
mysql> set global innodb_redo_log_archive_dirs=‘redo_archive:/mysqldata’ ;
redo_archive:是自己定义标识符,在 innodb_redo_log_archive_start函数,开启归档时会用到
/mysqldata:是自己定义的路径,归档目录不要与mysqld目录有重合,否则会报错.注意目录的用户与权限
root@localhost 09:22:55 [(none)]>SELECT innodb_redo_log_archive_start(‘redo_archive’, ‘archivelog’);
开启redo归档,archivelog是指定的子目录,注意目录的用户与权限。会在/mysqldata/archivelog目录下生产一个uuid.log归档文件
[root@node1 archivelog]# pwd
/mysqldata/archivelog
[root@node1 archivelog]# ll
total 8
-r–r----- 1 mysql mysql 8192 Jan 13 17:32 archive.9e50362b-5528-11ea-b60e-08002744ce26.000001.log
关闭开启归档:
root@localhost 09:22:55 [(none)]>SELECT innodb_redo_log_archive_stop()
注意事项:
再次开启时需要删除旧的归档,否则会报错。有的备份软件会在设置好innodb_redo_log_archive_dirs后,在备份时会自动开启归档,备份结束后会复制归档,并删除归档。