집 >데이터 베이스 >MySQL 튜토리얼 >데이터 디렉터리 이동 후 MySQL이 시작되지 않는 문제를 해결하는 방법
데이터베이스 설치시 MySQL 데이터 디렉터리가 루트 디렉터리에 위치했기 때문에 이제 저장공간이 부족하여 mv를 통해 데이터 디렉터리를 다른 디렉터리로 이동하고 싶은데, 데이터 디렉터리를 다른 데이터로 이동한 후입니다. 디렉터리, 데이터베이스 시작에 실패했습니다.
이 테스트는 MySQL 8.0.31
mysql> shutdown; Query OK, 0 rows affected (0.02 sec)
shell> pwd /mysql80
shell> mv /mysql80 /data shell> cd /data/mysql80/svr shell> ln -s mysql-8.0.31-linux-glibc2.12-x86_64 mysql
shell> chown -R mysql.mysql /data
shell> sed -i 's#/mysql80#/data/mysql80#g' my5001.cnf
shell> /data/mysql80/svr/mysql/bin/mysqld_safe \ --defaults-file=/data/mysql80/conf/my5001.cnf --user=mysql &
이때 데이터베이스 시작에 실패했습니다. 오류 로그에서 다음 오류를 보고했습니다.
mysqld: 파일 '/mysql80 /dbdata/data5001/log/binlog.000012' 찾을 수 없음(OS errno 2 - 해당 파일 또는 디렉터리 없음)
2023-02-27T10:38: 09.240576+08:00 0 [ERROR] [MY-010958] [서버] 로그 파일을 열 수 없습니다.
2023-02-27T10:38:09.240657+08:00 0 [ERROR] [MY-010041] [서버] 열 수 없습니다. tc log를 초기화하지 않습니다
2023-02-27T10:38:09.240718+08 :00 0 [ERROR] [MY-010119] [서버] Aborting
2023-02-27T10:38:10.548605+08:00 0 [시스템] [MY-010910] [서버] /data/mysql80/svr/mysql/ bin/mysqld: 종료 완료(mysqld 8.0.31) MySQL 커뮤니티 서버 - GPL.
여기에 보고된 오류는 binlog 파일을 찾을 수 없으며 오류 메시지에 <code>binlog
디렉터리는 이전과 동일하지만 구성 파일의 디렉터리가 수정되었습니다binlog
文件,并且报错显示的binlog
的目录还是之前的,但是配置文件中的目录已经修改
shell> grep 'log-bin' my5001.cnf log-bin=/data/mysql80/dbdata/data5001/log/binlog log-bin-trust-function-creators
最后通过查找发现 binlog.index
文件中存放着每个binlog
文件的绝对路径地址,这里的路径还是之前路径,内容如下:
shell> cat binlog.index /mysql80/dbdata/data5001/log/binlog.000001 /mysql80/dbdata/data5001/log/binlog.000002 /mysql80/dbdata/data5001/log/binlog.000003 /mysql80/dbdata/data5001/log/binlog.000004 /mysql80/dbdata/data5001/log/binlog.000005 /mysql80/dbdata/data5001/log/binlog.000006 /mysql80/dbdata/data5001/log/binlog.000007 /mysql80/dbdata/data5001/log/binlog.000008 /mysql80/dbdata/data5001/log/binlog.000009 /mysql80/dbdata/data5001/log/binlog.000010 /mysql80/dbdata/data5001/log/binlog.000011 /mysql80/dbdata/data5001/log/binlog.000012
修改binlog.index
文件中binlog
的绝对路径:
shell> sed -i 's#/mysql80#/data/mysql80#g' binlog.index shell> cat binlog.index /data/mysql80/dbdata/data5001/log/binlog.000001 /data/mysql80/dbdata/data5001/log/binlog.000002 /data/mysql80/dbdata/data5001/log/binlog.000003 /data/mysql80/dbdata/data5001/log/binlog.000004 /data/mysql80/dbdata/data5001/log/binlog.000005 /data/mysql80/dbdata/data5001/log/binlog.000006 /data/mysql80/dbdata/data5001/log/binlog.000007 /data/mysql80/dbdata/data5001/log/binlog.000008 /data/mysql80/dbdata/data5001/log/binlog.000009 /data/mysql80/dbdata/data5001/log/binlog.000010 /data/mysql80/dbdata/data5001/log/binlog.000011 /data/mysql80/dbdata/data5001/log/binlog.000012
shell> /data/mysql80/svr/mysql/bin/mysqld_safe --defaults-file=/data/mysql80/conf/my5001.cnf --user=mysql &
数据库启动成功。
需要注意的是,如果该实例还作为其他实例的从节点,还需要设置 relaylog.index 文件中relay log的绝对路径,否则会报如下错误: 错误日志报错:
2023-02-27T15:56:55.224372+08:00 0 [ERROR] [MY-010599] [Repl] log /mysql80/dbdata/data5002/log/relaylog.000002 listed in the index, but failed to stat.
2023-02-27T15:56:55.224422+08:00 0 [ERROR] [MY-011059] [Repl] Error counting relay log space.
2023-02-27T15:56:55.226571+08:00 0 [ERROR] [MY-010426] [Repl] Slave: Failed to initialize the master info structure for channel ''; its record may still be present in 'mysql.slave_master_info' table, consider deleting it.
2023-02-27T15:56:55.226622+08:00 0 [ERROR] [MY-010529] [Repl] Failed to create or recover replication info repositories.
执行 start replica 时也会报错:
# 客户端报错
mysql> start replica;
ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository
# error log报错
2023-02-27T15:57:53.858798+08:00 8 [ERROR] [MY-013124] [Repl] Slave SQL for channel '': Slave failed to initialize relay log info structure from the repository, Error_code: MY-013124
修改 relaylog.index
sed -i 's#/mysql80#/data/mysql80#g' relaylog.index7 문제가 해결되었습니다.
결국 검색을 통해 binlog.index
파일에는 각 binlog
파일의 절대 경로 주소가 저장되어 있는 것으로 나타났습니다. 내용은 다음과 같습니다.
# 重启实例 mysql> restart; # 启动主从复制 mysql> start replica;
binlog.index
파일에서 binlog
의 절대 경로를 수정합니다.
relaylog.index
파일에 로그인🎜 rrreee🎜데이터베이스를 재시작하고 마스터-슬레이브 복제를 시작하세요🎜rrreee🎜이제 마스터-슬레이브 복제가 정상으로 돌아옵니다. 🎜위 내용은 데이터 디렉터리 이동 후 MySQL이 시작되지 않는 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!