MySQL?移動(dòng)數(shù)據(jù)目錄后啟動(dòng)失敗問題解決
- GreatSQL社區(qū)原創(chuàng)內(nèi)容未經(jīng)授權(quán)不得隨意使用,轉(zhuǎn)載請聯(lián)系小編并注明來源。
- GreatSQL是MySQL的國產(chǎn)分支版本,使用上與MySQL一致。
- 作者: 王權(quán)富貴
- 文章來源:GreatSQL社區(qū)投稿
背景概述
由于安裝數(shù)據(jù)庫時(shí)將MySQL的數(shù)據(jù)目錄放在了根目錄下,現(xiàn)在存儲(chǔ)空間不足,想通過mv將數(shù)據(jù)目錄移動(dòng)到其他目錄下,但將數(shù)據(jù)目錄移動(dòng)到其他數(shù)據(jù)目錄后,啟動(dòng)數(shù)據(jù)庫失敗。
問題復(fù)現(xiàn)
本次測試基于 MySQL 8.0.31
1.關(guān)閉數(shù)據(jù)庫
mysql> shutdown; Query OK, 0 rows affected (0.02 sec)
2.查看當(dāng)前數(shù)據(jù)目錄所在位置
shell> pwd /mysql80
3.通過mv移動(dòng)整個(gè)MySQL數(shù)據(jù)目錄到其他目錄
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.修改配置文件中數(shù)據(jù)目錄的地址
shell> sed -i 's#/mysql80#/data/mysql80#g' my5001.cnf
6.啟動(dòng)數(shù)據(jù)庫
shell> /data/mysql80/svr/mysql/bin/mysqld_safe \ --defaults-file=/data/mysql80/conf/my5001.cnf --user=mysql &
此時(shí)啟動(dòng)數(shù)據(jù)庫失敗,錯(cuò)誤日志報(bào)錯(cuò)如下:
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 not open log file.
2023-02-27T10:38:09.240657+08:00 0 [ERROR] [MY-010041] [Server] Can't init tc log
2023-02-27T10:38:09.240718+08:00 0 [ERROR] [MY-010119] [Server] Aborting
2023-02-27T10:38:10.548605+08:00 0 [System] [MY-010910] [Server] /data/mysql80/svr/mysql/bin/mysqld: Shutdown complete (mysqld 8.0.31) MySQL Community Server - GPL.
這里報(bào)錯(cuò)顯示找不到binlog
文件,并且報(bào)錯(cuò)顯示的binlog
的目錄還是之前的,但是配置文件中的目錄已經(jīng)修改
shell> grep 'log-bin' my5001.cnf log-bin=/data/mysql80/dbdata/data5001/log/binlog log-bin-trust-function-creators
7.問題解決
最后通過查找發(fā)現(xiàn) binlog.index
文件中存放著每個(gè)binlog
文件的絕對路徑地址,這里的路徑還是之前路徑,內(nèi)容如下:
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.啟動(dòng)數(shù)據(jù)庫
shell> /data/mysql80/svr/mysql/bin/mysqld_safe --defaults-file=/data/mysql80/conf/my5001.cnf --user=mysql &
數(shù)據(jù)庫啟動(dòng)成功。
9.作為從節(jié)點(diǎn)
需要注意的是,如果該實(shí)例還作為其他實(shí)例的從節(jié)點(diǎn),還需要設(shè)置 relaylog.index 文件中relay log的絕對路徑,否則會(huì)報(bào)如下錯(cuò)誤: 錯(cuò)誤日志報(bào)錯(cuò):
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.
執(zhí)行 start replica 時(shí)也會(huì)報(bào)錯(cuò):
# 客戶端報(bào)錯(cuò)
mysql> start replica;
ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository
# error log報(bào)錯(cuò)
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
10.問題解決
修改 relaylog.index
文件中relay log的絕對路徑
sed -i 's#/mysql80#/data/mysql80#g' relaylog.index
重新啟動(dòng)數(shù)據(jù)庫,并啟動(dòng)主從復(fù)制
# 重啟實(shí)例 mysql> restart; # 啟動(dòng)主從復(fù)制 mysql> start replica;
此時(shí)主從復(fù)制恢復(fù)正常。
總結(jié)
1.搭建數(shù)據(jù)庫前應(yīng)提前規(guī)劃并確定存儲(chǔ)位置及磁盤大小,以及之后數(shù)據(jù)量增長情況,避免磁盤空間不足時(shí)導(dǎo)致數(shù)據(jù)庫不能正常使用。
2.當(dāng)我們手動(dòng)進(jìn)行數(shù)據(jù)目錄的移動(dòng)時(shí),不僅需要修改配置文件中數(shù)據(jù)目錄的路徑,還需要修改 binlog.index
relaylog.index
文件中binlog
及relaylog
的絕地路徑,否則啟動(dòng)時(shí)可能出報(bào)錯(cuò),并且不能正常建立主從關(guān)系。
到此這篇關(guān)于MySQL 移動(dòng)數(shù)據(jù)目錄后啟動(dòng)失敗的文章就介紹到這了,更多相關(guān)mysql啟動(dòng)失敗內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- mysql啟動(dòng)提示mysql.host 不存在,啟動(dòng)失敗的解決方法
- MySQL下常見的啟動(dòng)失敗與備份失敗問題的解決教程
- MySQL數(shù)據(jù)庫innodb啟動(dòng)失敗無法重啟的解決方法
- MySQL常見內(nèi)存不足啟動(dòng)失敗的完美解決方法
- mysql啟動(dòng)失敗之mysql服務(wù)無法啟動(dòng)(服務(wù)沒有報(bào)告任何錯(cuò)誤)的解決方法
- Windows中Mysql啟動(dòng)失敗的完美解決方案
- MySQL啟動(dòng)失敗之MySQL服務(wù)無法啟動(dòng)的原因及解決
- MySQL 啟動(dòng)失敗(code=exited, status=1/FAILURE)異常解決方案
相關(guān)文章
Mysql 5.6使用配置文件my.ini來設(shè)置長時(shí)間連接數(shù)據(jù)庫的問題
這篇文章主要介紹了Mysql 5.6使用配置文件my.ini來設(shè)置長時(shí)間連接數(shù)據(jù)庫,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07MySQL 中 blob 和 text 數(shù)據(jù)類型詳解
本文主要介紹了MySQL中blob和text數(shù)據(jù)類型詳解,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02MySQL導(dǎo)入sql腳本錯(cuò)誤:2006 解決方法
本文給大家分享的是在使用mysql導(dǎo)入數(shù)據(jù)的時(shí)候,提示腳本錯(cuò)誤2006 MySQL server has gone away的解決方法,非常實(shí)用,有需要的小伙伴,可以參考下。2015-07-07mysql "too many connections" 錯(cuò)誤 之 mysql解決方法
解決方法是修改/etc/mysql/my.cnf,添加以下一行2009-06-06配置Mysql主從服務(wù)實(shí)現(xiàn)實(shí)例
這篇文章主要介紹了配置Mysql主從服務(wù)實(shí)現(xiàn)實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-05-05淺談innodb_autoinc_lock_mode的表現(xiàn)形式和選值參考方法
下面小編就為大家?guī)硪黄獪\談innodb_autoinc_lock_mode的表現(xiàn)形式和選值參考方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03