首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 安全重命名數據庫的 5 種方案:RENAME DATABASE 缺陷、文件系統級、表級重命名、mysqldump、Shell 腳本自動化

     編輯:MySQL 綜合教學

MySQL 曾在 5.1.7 引入 RENAME DATABASE,5.1.23 移除(可能丟數據)。本文對比 5 種安全重命名方案,推薦「表級重命名」或「mysqldump 導出導入」作為生產標準動作。

方案對比表

三、 方案 3 标准流程(推薦)


CREATE DATABASE `new_db_name`;
RENAME TABLE `old_db`.`table1` TO `new_db`.`table1`,
             `old_db`.`table2` TO `new_db`.`table2`;
-- 批量可用信息 Schema 生成語句
DROP DATABASE `old_db`;

四、 方案 4 mysqldump 流程


mysqldump -u root -p -h localhost old_db > old_db.sql
mysql -u root -p -h localhost -e "CREATE DATABASE new_db"
mysql -u root -p -h localhost new_db < old_db.sql
mysql -u root -p -h localhost -e "DROP DATABASE old_db"

五、 方案 5 Shell 腳本(生產就緒)


#!/bin/bash
mysqlconn="mysql -u root -p'Pass' -S /var/lib/mysql/mysql.sock"
olddb="old_db"; newdb="new_db"
$mysqlconn -e "CREATE DATABASE $newdb"
tables=$($mysqlconn -N -e "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$olddb'")
for t in $tables; do
  $mysqlconn -e "RENAME TABLE $olddb.$t TO $newdb.$t"
done
$mysqlconn -e "DROP DATABASE $olddb"

六、 必做驗證

  1. CHECKSUM TABLE old_db.table, new_db.table 對比
  2. 應用端配置更新、煙霧測試
  3. 監控錯誤日誌 30 分鐘無異常

重命名數據庫屬高風險操作,**方案 3/4/5** 三選一,**方案 1 禁用,方案 2 僅限 MyISAM**,操作前必備份。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
方案原理風險適用場景停機時間
1. RENAME DATABASE元數據改名❌ 官方移除,可能丟數據禁用-
2. 文件系統改目錄名停庫 → 改 data/db_name 目錄 → 啟庫⚠️ 僅 MyISAM/靜態表安全,InnoDB 共享表空間會壞純 MyISAM 小庫秒級
3. 表級 RENAME TABLE建新庫 → 逐表 RENAME → 刪舊庫✅ 原子級、支持 InnoDB、可驗證生產標準毫秒/表
4. mysqldump 導出導入邏輯備份 → 建新庫 → 導入 → 刪舊庫✅ 跨版本/引擎、可壓縮/並行大庫、跨實例分鐘~小時
5. Shell 腳本自動化方案 3信息 Schema 讀表名 → 批量 RENAME✅ 方案 3 自動化,避免手誤表多庫毫秒/表