【Linux】MySQL數據目錄遷移步驟(含流程圖踩坑經驗)

在生產環境中,有時候你會遇到一些看似簡單但實際上很棘手的問題。最近我就碰到了一次典型的服務器磁盤空間告急,最后通過遷移 MySQL 數據目錄成功解決了問題。本文記錄整個過程,包括我的分析思路、遷移步驟、踩坑和經驗總結,希望對你有幫助。


一、問題背景

公司的一臺業務數據庫服務器,運行的是 MySQL 8.0.20,數據目錄默認放在:

/data/mysql-8.0.20/data

隨著業務數據的增長,/data 分區的空間漸漸被吃滿,監控報警開始提示:

Disk space usage on /data exceeds 98%

打開 df -h 一看,果然 /data 分區只剩不到 1GB,而 /home 分區卻很空閑,有幾十 MB 可用。


二、分析思路

  1. 確認空間問題是否由 MySQL 引起

    du -sh /data/mysql-8.0.20/data
    

    結果:

    38G /data/mysql-8.0.20/data
    

    → 明確是 MySQL 數據目錄占了大頭。

  2. 能否擴容 /data 分區?

    • 由于這臺是虛擬機,業務部門不方便短期擴容。
    • 考慮將數據目錄遷移至磁盤更大的 /home 分區
  3. 遷移 MySQL 數據目錄的關鍵點

    • 必須 停庫遷移,否則數據會不一致。
    • 遷移后需要修改 配置文件 datadir
    • 新路徑權限必須正確(mysql:mysql,SELinux 要處理)。
    • 遷移過程要有 回退方案(先復制,驗證成功后再刪舊數據)。

三、實現步驟

在正式進行遷移前,我們先看一下整個遷移的流程圖,幫助你對后續的步驟有直觀印象。
在這里插入圖片描述

1. 停止 MySQL 服務

sudo systemctl stop mysqld
ps -ef | grep mysqld   # 確認進程關閉

2. 創建新目錄

sudo mkdir -p /home/mysql/data

3. 遷移數據

建議先復制,確保安全:

sudo cp -av /data/mysql-8.0.20/data/* /home/mysql/data/

(等驗證 OK 再刪除舊目錄)


4. 修改 MySQL 配置

編輯 /etc/my.cnf(路徑可能不同,根據實際環境調整):

[mysqld]
datadir=/home/mysql/data
socket=/home/mysql/data/mysql.sock[client]
socket=/home/mysql/data/mysql.sock

5. 更新權限

sudo chown -R mysql:mysql /home/mysql/data
sudo chmod 750 /home/mysql/data

6. SELinux 處理(重要)

CentOS / RHEL 默認 /home 屬于 home_t 類型,MySQL 無法直接訪問,需要修改安全上下文:

查看 SELinux 狀態:

getenforce

如果輸出 Enforcing,執行:

sudo semanage fcontext -a -t mysqld_db_t "/home/mysql/data(/.*)?"
sudo restorecon -Rv /home/mysql/data

(如果只是驗證,可以先用 setenforce 0 暫時關閉 SELinux)


7. 啟動 MySQL

sudo systemctl start mysqld

8. 驗證新目錄生效

SHOW VARIABLES LIKE 'datadir';

結果應為:

/home/mysql/data/

9. 清理舊目錄

確認 MySQL 穩定運行幾天再刪除舊目錄:

sudo rm -rf /data/mysql-8.0.20/data

四、踩坑記錄

在遷移過程中我踩了一些坑,也分享出來避免大家踩同樣的雷:

  1. 忘記改權限 → 啟動失敗

    The server quit without updating PID file
    

    解決:chown -R mysql:mysql /home/mysql/data

  2. SELinux 拒絕訪問新目錄

    • 關閉 SELinux 后啟動成功 → 說明是安全上下文問題
    • 永久解決:使用 semanage fcontextrestorecon 修改為 mysqld_db_t
  3. 客戶端連接失敗

    • 因為 socket 文件路徑變了,要同步修改 [client] 部分的 socket 配置

五、經驗總結

  1. 生產環境操作一定要有回退方案

    • cp 而不是直接 mv
    • 保留舊數據目錄,確認沒問題后再刪
  2. 權限和 SELinux 是 MySQL 無法啟動的核心原因

    • 遷移路徑后務必 chown + SELinux 規則調整
  3. 提前規劃數據目錄的位置

    • 盡量放在可擴容的分區,或者掛載點規劃時預留足夠磁盤空間
  4. 驗證后再清理

    • 保留一段時間舊目錄,是救命稻草

六、參考命令速查表

# 停mysql
systemctl stop mysqld# 拷貝數據目錄
cp -av /data/mysql-8.0.20/data/* /home/mysql/data/# 修改配置文件
vim /etc/my.cnf# 權限
chown -R mysql:mysql /home/mysql/data
chmod 750 /home/mysql/data# SELinux規則調整
semanage fcontext -a -t mysqld_db_t "/home/mysql/data(/.*)?"
restorecon -Rv /home/mysql/data# 啟動MySQL
systemctl start mysqld# 驗證數據目錄
SHOW VARIABLES LIKE 'datadir';

💡 寫在最后
這次遷移雖然只是換了個目錄,但背后體現的是處理 🛠 生產問題的三個關鍵能力

  • 快速定位根因
  • 制定低風險方案
  • 預留回退路徑

實際生產中,看似瑣碎的小問題,通過“按步驟 + 防風險”去執行,才不會把小問題變成大事故。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/95922.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/95922.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/95922.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據驅動下的連鎖模式復制:技術科普與方法論深度解析

前言在連鎖經營的賽道上,“復制”是核心命題,但絕非簡單的“粘貼”。當行業進入數字化深水區,數據驅動正成為連鎖模式突破增長瓶頸、實現高效復制的“隱形引擎”。本文將從技術科普與方法論心得兩個維度,深度拆解數據如何重塑連鎖…

數據庫學習MySQL系列2、Windows11系統安裝MySQL方法一.msi安裝詳細教程

方法一.msi安裝詳細教程 Windows系統下MySQL——.msi安裝詳細教程(默認--只安裝服務端“Server only”)MySql官網地址:https://www.mysql.com/;快速下載通道請單擊→ No thanks, just start my download.ps:其他資源(…

html+css+vue實現增刪改查

代碼如下&#xff1a;<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>優化版 Vue.js CRUD 示例&l…

(計算機網絡)DNS解析流程及兩種途徑

在計算機網絡中&#xff0c;DNS&#xff08;Domain Name System&#xff09;用于 將域名解析為 IP 地址。一個完整的解析過程涉及 遞歸查詢、迭代查詢&#xff0c;以及多個關鍵角色&#xff08;LDNS、本地域名服務器&#xff1b;根服務器&#xff1b;頂級域名服務器&#xff1b…

數據結構——隊列(Java)

一.基本概念 隊列用來存儲邏輯關系為“一對一”的數據&#xff0c;是一種“特殊”的線性存儲結構。 特點&#xff1a; ?先進先出&#xff1a;隊列中元素的添加&#xff08;入隊enqueue&#xff09;和移除&#xff08;出隊dequeue&#xff09;遵循先進先出的原 則。 ?端點&…

【Go】:mac 環境下GoFrame安裝開發工具 gf-cli——gf_darwin_arm64

當前主要是關于gf_darwin_arm64的安裝步驟 如何快速給mac電腦安裝gfgf是什么安裝步驟方法1&#xff1a;去github下載gf-cli去git上下載對應電腦版本的gf-cli驗證下載文件是否二進制文件授予該文件權限方法2&#xff1a;去goframe官網教你下載步驟驗證gf是否安裝成功可能遇到的問…

【新】ApiHug官方文檔-ApiHug Spring Security 擴展-補充說明

概述 在上次說明中我們寫了ApiHug 如何做授權的&#xff0c; 這里有個概念的混淆&#xff0c; 其實 apihug 不是在spring security 上做的安全擴展&#xff0c; 應該是 apihug spring, 安全設計框架&#xff0c; 和本身 spring security 沒有半毛錢關系&#xff0c; 而如果你…

【Flask】測試平臺開發,新增說明書編寫和展示功能 第二十三篇

概述&#xff1a;本篇是接著上一篇&#xff0c;細分出說明書的編寫部分&#xff0c;實現這個功能的需求&#xff0c;是內部很多同事反饋&#xff0c;需要有個地方存工具&#xff0c;并且可以寫說明書&#xff0c;如果需要的人&#xff0c;那么可以在界面上直接下載工具和查看工…

Mac設置中的安全性缺少“任何來源”

問題&#xff1a;用Mac安裝軟件&#xff0c;隱私性與安全性&#xff0c;想切換“任何來源”用來下載網站的app&#xff0c;但是菜單欄找不到“任何來源”選項&#xff0c;無法安裝dmg的文件終端中一行代碼設置出來&#xff1a;sudo spctl --global-disable &#xff08;禁用Mac…

uniapp開發小程序,列表 點擊后加載更多數據

一、需求 1.初始顯示限制:將每頁條數limit改為5,確保初始只顯示5條數據 2.查看更多功能:添加了loadMore方法,點擊"查看更多"時加載下一頁數據 3.實現查看更多功能,點擊后加載更多數據 4.添加loading狀態防止重復請求 添加hasMore狀態判斷是否還有更多數據 …

Windows 部署 Gerrit 與 Apache24 配置

Windows 部署 Gerrit 與 Apache24 并配置反向代理 準備工作 下載并安裝 Java JDK 確保配置 JAVA_HOME 環境變量博主這里安裝openjdk21 https://jdk.java.net/archive/下載所需軟件 Apache24&#xff1a;https://httpd.apache.org/download.cgi Gerrit&#xff1a;https://www.g…

從 Excel 趨勢線到機器學習:拆解 AI 背后的核心框架?

引言&#xff1a;你其實早就 “玩轉” 過機器學習&#xff1f;提到 “機器學習”&#xff0c;你是不是第一時間聯想到復雜的代碼、密密麻麻的公式&#xff0c;還有那些讓人頭暈的 “算法”“模型”“訓練” 術語&#xff1f;仿佛它是高高在上的技術&#xff0c;離我們的日常無比…

Lenovo聯想YOGA Pro 16 IAH10 2025款筆記本電腦(83L0)開箱狀態預裝OEM原廠Win11系統

適用機型(MTM)&#xff1a;【83L0】 鏈接&#xff1a;https://pan.baidu.com/s/1tDpeBb93t1u0XIgqAZ3edg?pwdqy2r 提取碼&#xff1a;qy2r 聯想原裝系統自帶所有驅動、出廠主題壁紙、系統屬性聯機支持標志、系統屬性專屬LOGO標志、Office辦公軟件、聯想瀏覽器、電腦管家、…

Android 開發 - 一些畫板第三方庫(DrawBoard、FingerPaintView、PaletteLib)

一、DrawBoard 1、Dependencies 模塊級 build.gradle implementation com.github.jenly1314:drawboard:1.1.02、Test &#xff08;1&#xff09;Activity Layout activity_draw_board.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout …

捷多邦揭秘超厚銅板:從制造工藝到設計關鍵環節?

一、超厚銅板制造工藝要點超厚銅板&#xff08;3oz 及以上&#xff09;的制造工藝對精度和穩定性要求嚴苛&#xff0c;核心環節需突破多重技術壁壘。蝕刻工藝中&#xff0c;因銅箔厚度達 105μm 以上&#xff0c;需采用高濃度酸性蝕刻液&#xff08;氯化銅濃度控制在 180-220g/…

【MYSQL | 高級篇 MyCat實現分庫分表】

摘要&#xff1a;本文圍繞分庫分表展開&#xff0c;先分析單庫性能瓶頸&#xff0c;介紹垂直與水平拆分策略及實現技術&#xff0c;再詳述 MyCat 中間件的概述、環境準備、目錄結構&#xff0c;講解其入門配置與測試&#xff0c;深入說明核心配置文件&#xff0c;最后演示垂直和…

Docker部署Drawnix開源白板工具

Drawnix簡介 Drawnix 是一款開源的在線白板工具&#xff08;SaaS&#xff09;&#xff0c;集思維導圖、流程圖繪制、自由畫圖等多種功能于一體&#xff0c;支持協作與插件擴展&#xff0c;適用于個人創作、團隊協作和遠程辦公場景。它完全免費且開源&#xff0c;提供豐富的編輯…

Griffin|增強現實數據集|無人機數據集

Griffin|增強現實數據集|無人機數據集 數據來源&#xff1a;huggingface 百度網盤 構建方式 Griffin數據集的構建采用了模塊化架構&#xff0c;結合了CARLA和AirSim平臺&#xff0c;通過模擬真實世界中的無人駕駛環境和無人機動態&#xff0c;收集了超過30,000幀圖像數據&am…

力扣.1054距離相等的條形碼力扣767.重構字符串力扣47.全排列II力扣980.不同路徑III力扣509.斐波那契數列(記憶化搜索)

目錄 力扣.1054距離相等的條形碼 力扣767.重構字符串 力扣47.全排列II 力扣980.不同路徑III 力扣509.斐波那契數列&#xff08;記憶化搜索) 力扣.1054距離相等的條形碼 是否策略正確 但是假如 1 2 2 此時 1_2 此時中間只能填寫2&#xff0c;但是就不對了&#xff0c;所…

「docker」二、3分鐘快速理解docker核心要素

上一節中我們知道docker的作用&#xff0c;這節我們介紹一下docker的要素。 鏡像 docker的核心要素里面有個叫鏡像&#xff08;images&#xff09;的概念&#xff0c;鏡像的作用就類似我們安裝虛擬機用到的iso鏡像文件。鏡像里包含了我們要運行的應用&#xff0c;如&#xff…