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

WBOY
發布: 2023-05-26 10:13:05
轉載
2394 人瀏覽過

背景概述

由於安裝資料庫時將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
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!