欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL?移動數(shù)據(jù)目錄后啟動失敗問題解決

 更新時間:2023年04月23日 10:18:48   作者:GreatSQL  
由于安裝數(shù)據(jù)庫時將MySQL的數(shù)據(jù)目錄放在了根目錄下,現(xiàn)在存儲空間不足,遇到這個問題如何解決呢,下面小編給大家?guī)砹薽ysql移動數(shù)據(jù)目錄啟動失敗解決方法,感興趣的朋友一起看看吧
  • 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ù)庫時將MySQL的數(shù)據(jù)目錄放在了根目錄下,現(xiàn)在存儲空間不足,想通過mv將數(shù)據(jù)目錄移動到其他目錄下,但將數(shù)據(jù)目錄移動到其他數(shù)據(jù)目錄后,啟動數(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移動整個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.啟動數(shù)據(jù)庫

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

此時啟動數(shù)據(jù)庫失敗,錯誤日志報錯如下:

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.

這里報錯顯示找不到binlog文件,并且報錯顯示的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 文件中存放著每個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.啟動數(shù)據(jù)庫

shell> /data/mysql80/svr/mysql/bin/mysqld_safe 
--defaults-file=/data/mysql80/conf/my5001.cnf --user=mysql &

數(shù)據(jù)庫啟動成功。

9.作為從節(jié)點

需要注意的是,如果該實例還作為其他實例的從節(jié)點,還需要設(shè)置 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.

執(zhí)行 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

10.問題解決

修改 relaylog.index 文件中relay log的絕對路徑

sed -i 's#/mysql80#/data/mysql80#g' relaylog.index

重新啟動數(shù)據(jù)庫,并啟動主從復(fù)制

# 重啟實例
mysql> restart;
# 啟動主從復(fù)制
mysql> start replica;

此時主從復(fù)制恢復(fù)正常。

總結(jié)

1.搭建數(shù)據(jù)庫前應(yīng)提前規(guī)劃并確定存儲位置及磁盤大小,以及之后數(shù)據(jù)量增長情況,避免磁盤空間不足時導(dǎo)致數(shù)據(jù)庫不能正常使用。

2.當(dāng)我們手動進(jìn)行數(shù)據(jù)目錄的移動時,不僅需要修改配置文件中數(shù)據(jù)目錄的路徑,還需要修改 binlog.index relaylog.index 文件中binlogrelaylog的絕地路徑,否則啟動時可能出報錯,并且不能正常建立主從關(guān)系。

到此這篇關(guān)于MySQL 移動數(shù)據(jù)目錄后啟動失敗的文章就介紹到這了,更多相關(guān)mysql啟動失敗內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論