首頁 > 資料庫 > mysql教程 > MySQL行動資料目錄後啟動失敗怎麼解決

MySQL行動資料目錄後啟動失敗怎麼解決

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2023-05-26 10:13:05
轉載
2570 人瀏覽過

背景概述

由於安裝資料庫時將MySQL的資料目錄放在了根目錄下,現在儲存空間不足,想透過mv將資料目錄移到其他目錄下,但將資料目錄移到其他資料目錄後,啟動資料庫失敗。

問題重複

本測試基於MySQL 8.0.31

1.關閉資料庫

mysql> shutdown;
Query OK, 0 rows affected (0.02 sec)
登入後複製

2.檢視目前資料目錄所在位置

shell> pwd
/mysql80
登入後複製

3.透過mv移動整個MySQL資料目錄到其他目錄

shell>  mv /mysql80 /data
shell>  cd /data/mysql80/svr
shell>  ln -s mysql-8.0.31-linux-glibc2.12-x86_64 mysql
登入後複製

4.修改屬主屬群組

shell> chown -R mysql.mysql /data
登入後複製

5.修改設定檔中資料目錄的位址

shell> sed -i 's#/mysql80#/data/mysql80#g' my5001.cnf
登入後複製

6.啟動資料庫

shell> /data/mysql80/svr/mysql/bin/mysqld_safe \
--defaults-file=/data/mysql80/conf/my5001.cnf --user=mysql &
登入後複製

此時啟動資料庫失敗,錯誤日誌錯誤如下:

mysqld: File '/mysql80/dbdata/data5001/log/binlog .000012' not found (OS errno 2 - No such file or directory)
2023-02-27T10:38:09.240576 08:00 0 [ERROR] [MY-010958] [Server] Could filenot. ##2023-02-27T10:38:09.240657 08:00 0 [ERROR] [MY-010041] [Server] Can't init tc log
2023-02-27T10:38:09.240718 ] [MY-010119] [Server] Aborting
2023-02-27T10:38:10.548605 08:00 0 [System] [MY-010910] [Server] /data/mysql80/svr/mysql/bin/msql Shutdown complete (mysqld 8.0.31)  MySQL Community Server - GPL.

這裡報錯顯示找不到

binlog文件,並且報錯顯示的binlog的目錄還是之前的,但是設定檔中的目錄已經修改

shell> grep 'log-bin' my5001.cnf 
log-bin=/data/mysql80/dbdata/data5001/log/binlog
log-bin-trust-function-creators
登入後複製

7.問題解決

最後透過查找發現

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
登入後複製

8.啟動資料庫

shell> /data/mysql80/svr/mysql/bin/mysqld_safe 
--defaults-file=/data/mysql80/conf/my5001.cnf --user=mysql &
登入後複製

資料庫啟動成功。

9.作為從節點

需要注意的是,如果該實例也作為其他實例的從節點,還需要設定relaylog.index 檔案中relay log的絕對路徑,否則會報下列錯誤: 錯誤日誌報錯:

2023-02-27T15:56:55.224372 08:00 0 [ERROR] [MY-010599] [Repl] log /mysql80/dbdata/data5002/log/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 relaylog -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 preslent in 'mysql. , consider deleting it.
2023-02-27T15:56:55.226622 08:00 0 [ERROR] [MY-010529] [Repl] Failed to create or recover repli010529] [Repl] Failed to create or recover repli010529] [Repl] Failed to create or recover repli.執行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 initialinfo relay log log repository, Error_code: MY-013124



10.問題解決

修改

relaylog.index
檔案中relay log的絕對路徑

sed -i 's#/mysql80#/data/mysql80#g' relaylog.index
登入後複製

重新啟動資料庫,並啟動主從複製

# 重启实例
mysql> restart;
# 启动主从复制
mysql> start replica;
登入後複製
此時主從複製恢復正常。

以上是MySQL行動資料目錄後啟動失敗怎麼解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
linux安裝mysql報錯
來自於 1970-01-01 08:00:00
0
0
0
mysql 升級後無法重新啟動mysql服務的問題
來自於 1970-01-01 08:00:00
0
0
0
MySQL停止進程
來自於 1970-01-01 08:00:00
0
0
0
phpstudy不能啟動mysql?
來自於 1970-01-01 08:00:00
0
0
0
環境中mysql
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板