Mysql/系统运维

【环境安装记录深入学习一:mysql数据库使用移动目录的方式进行迁移】Linux环境MySQL 的迁移(对data目录的直接拷贝)

daimafengzi · 10月24日 · 2023年 · · · 本文共999个字 · 预计阅读4分钟14次已读

在虚拟机的测试MySQL直接复制data目录方式迁移

服务器A: centos-release-7-8.2003.0.el7.centos.x86_64/MySQL 5.7.32
服务器B: centos-release-7-8.2003.0.el7.centos.x86_64/MySQL 5.7.32

停止服务器A和服务器B的MySQL服务

systemctl stop mysqld
  • 将服务器A的MySQL的data目录从服务器A,除了ib_logfile*外统一复制到服务器B的data目录下
  • 可能会报错,可以用cat /var/log/mysqld.log查看日志
##进入到拷贝数据的目录
cd /var/lib/mysql/
##因为上传的数据拥有者是root,我们需要变更成mysql
chown -R mysql.mysql *
##这一步暂定,如果有报错,说无权限,则
 chmod -R 777 *
## 配置文件中加上 lower_case_table_names=1 即可。 #是否对sql语句大小写敏感,1表示不敏感
vim /etc/my.cnf
#加上这句话
lower_case_table_names=1

报错一:

mysqld: File '.\binlog.000005' not found (OS errno 2 - No such file or directory)
2022-07-19T01:01:20.153111Z 0 [ERROR] [MY-010958] [Server] Could not open log file.
2022-07-19T01:01:20.154277Z 0 [ERROR] [MY-010041] [Server] Can't init tc log

提示找不到 “binlog.000005”文件,由于打不开这个文件,因此启动终止。这个是MySQL运行时使用的二进制日志文件,主要用于记录更改数据的语句,这里由于不知何种原因被删除了,造成MySQL服务无法正常启动。

.\binlog.000004
.\binlog.000005

解决方案

可以看到最后一个文件为“binlog.000005”,解决的办法很简单,就是删除“binlog.index”文件,这样MySQL将默认重建“binlog.000001”二进制日志文件,MySQL服务正常启动!
systemctl start mysqld

0 条回应