데이터베이스 설치시 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> 파일을 찾을 수 없으며 오류 메시지에 <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.index
결국 검색을 통해 binlog.index
파일에는 각 binlog
파일의 절대 경로 주소가 저장되어 있는 것으로 나타났습니다. 내용은 다음과 같습니다.
# 重启实例 mysql> restart; # 启动主从复制 mysql> start replica;
binlog.index
파일에서 binlog
의 절대 경로를 수정합니다.
relaylog.index
파일에 로그인🎜 rrreee🎜데이터베이스를 재시작하고 마스터-슬레이브 복제를 시작하세요🎜rrreee🎜이제 마스터-슬레이브 복제가 정상으로 돌아옵니다. 🎜위 내용은 데이터 디렉터리 이동 후 MySQL이 시작되지 않는 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!