refactor: 将数据库配置内置到脚本中,简化使用流程
改进内容: 1. export_database.sh - 将数据库配置直接内置在脚本顶部 - 移除外部配置文件依赖 - 配置项: DB_HOST, DB_PORT, DB_USER, DB_PASS, DB_NAME 2. import_database.sh - 将三个环境的配置内置在脚本顶部 - 配置项: DEV_DB_*, TEST_DB_*, PROD_DB_* - 无需额外配置文件 3. 更新操作指南 - 反映配置内置的变化 - 更新配置步骤说明 - 更新文件结构说明 优点: - 使用更简单,无需创建配置文件 - 配置集中在一处,易于管理 - 减少文件依赖 使用方法: 1. 编辑 export_database.sh 顶部配置数据库信息 2. 编辑 import_database.sh 顶部配置目标环境数据库信息 3. ./export_database.sh # 导出数据库 4. ./import_database.sh <dev|test|prod> # 导入到目标环境
This commit is contained in:
@@ -5,6 +5,30 @@
|
||||
|
||||
set -e # 遇到错误立即退出
|
||||
|
||||
# =====================================================
|
||||
# 数据库配置(请根据实际情况修改)
|
||||
# =====================================================
|
||||
|
||||
# 源数据库配置(开发环境)
|
||||
DB_HOST="116.62.17.81"
|
||||
DB_PORT="3306"
|
||||
DB_USER="root"
|
||||
DB_PASS="Kfcx@1234"
|
||||
DB_NAME="ccdi"
|
||||
|
||||
# 导出文件配置
|
||||
BACKUP_DIR="doc/database/backup"
|
||||
STRUCTURE_FILE="ccdi_structure.sql"
|
||||
DATA_FILE="ccdi_data.sql"
|
||||
|
||||
# mysqldump 参数配置
|
||||
CHARACTER_SET="utf8mb4"
|
||||
MAX_ALLOWED_PACKET="512M"
|
||||
|
||||
# =====================================================
|
||||
# 脚本逻辑(无需修改)
|
||||
# =====================================================
|
||||
|
||||
# 颜色定义
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
@@ -26,21 +50,6 @@ log_error() {
|
||||
|
||||
# 脚本目录
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
CONFIG_FILE="${SCRIPT_DIR}/db_config.conf"
|
||||
|
||||
# 检查配置文件
|
||||
check_config() {
|
||||
if [ ! -f "$CONFIG_FILE" ]; then
|
||||
log_error "配置文件不存在: $CONFIG_FILE"
|
||||
log_info "请先复制配置模板: cp db_config.conf.template db_config.conf"
|
||||
log_info "然后编辑 db_config.conf 填写实际数据库连接信息"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 加载配置文件
|
||||
source "$CONFIG_FILE"
|
||||
log_info "配置文件加载成功"
|
||||
}
|
||||
|
||||
# 检查 mysqldump 命令
|
||||
check_mysqldump() {
|
||||
@@ -70,25 +79,25 @@ export_structure() {
|
||||
local temp_file=$(mktemp)
|
||||
|
||||
# 导出表结构到临时文件
|
||||
mysqldump -h "$SOURCE_DB_HOST" \
|
||||
-P "$SOURCE_DB_PORT" \
|
||||
-u "$SOURCE_DB_USER" \
|
||||
-p"$SOURCE_DB_PASS" \
|
||||
mysqldump -h "$DB_HOST" \
|
||||
-P "$DB_PORT" \
|
||||
-u "$DB_USER" \
|
||||
-p"$DB_PASS" \
|
||||
--no-data \
|
||||
--skip-triggers \
|
||||
--skip-add-drop-table \
|
||||
--default-character-set=utf8mb4 \
|
||||
--default-character-set=$CHARACTER_SET \
|
||||
--single-transaction \
|
||||
--max_allowed_packet=$MAX_ALLOWED_PACKET \
|
||||
"$SOURCE_DB_NAME" > "$temp_file" 2>/dev/null
|
||||
"$DB_NAME" > "$temp_file" 2>/dev/null
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
# 添加字符集声明到文件头部
|
||||
{
|
||||
echo "-- CCDI 数据库表结构"
|
||||
echo "-- 导出时间: $(date '+%Y-%m-%d %H:%M:%S')"
|
||||
echo "-- 源数据库: ${SOURCE_DB_HOST}:${SOURCE_DB_PORT}/${SOURCE_DB_NAME}"
|
||||
echo "-- 字符集: utf8mb4"
|
||||
echo "-- 源数据库: ${DB_HOST}:${DB_PORT}/${DB_NAME}"
|
||||
echo "-- 字符集: ${CHARACTER_SET}"
|
||||
echo ""
|
||||
echo "SET NAMES utf8mb4;"
|
||||
echo "SET CHARACTER SET utf8mb4;"
|
||||
@@ -119,26 +128,26 @@ export_data() {
|
||||
local temp_file=$(mktemp)
|
||||
|
||||
# 导出数据到临时文件
|
||||
mysqldump -h "$SOURCE_DB_HOST" \
|
||||
-P "$SOURCE_DB_PORT" \
|
||||
-u "$SOURCE_DB_USER" \
|
||||
-p"$SOURCE_DB_PASS" \
|
||||
mysqldump -h "$DB_HOST" \
|
||||
-P "$DB_PORT" \
|
||||
-u "$DB_USER" \
|
||||
-p"$DB_PASS" \
|
||||
--no-create-info \
|
||||
--skip-triggers \
|
||||
--default-character-set=utf8mb4 \
|
||||
--default-character-set=$CHARACTER_SET \
|
||||
--single-transaction \
|
||||
--complete-insert \
|
||||
--extended-insert \
|
||||
--max_allowed_packet=$MAX_ALLOWED_PACKET \
|
||||
"$SOURCE_DB_NAME" > "$temp_file" 2>/dev/null
|
||||
"$DB_NAME" > "$temp_file" 2>/dev/null
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
# 添加字符集声明到文件头部
|
||||
{
|
||||
echo "-- CCDI 数据库数据"
|
||||
echo "-- 导出时间: $(date '+%Y-%m-%d %H:%M:%S')"
|
||||
echo "-- 源数据库: ${SOURCE_DB_HOST}:${SOURCE_DB_PORT}/${SOURCE_DB_NAME}"
|
||||
echo "-- 字符集: utf8mb4"
|
||||
echo "-- 源数据库: ${DB_HOST}:${DB_PORT}/${DB_NAME}"
|
||||
echo "-- 字符集: ${CHARACTER_SET}"
|
||||
echo ""
|
||||
echo "SET NAMES utf8mb4;"
|
||||
echo "SET CHARACTER SET utf8mb4;"
|
||||
@@ -200,7 +209,6 @@ verify_export() {
|
||||
export_database() {
|
||||
log_info "========== 开始导出数据库 =========="
|
||||
|
||||
check_config
|
||||
check_mysqldump
|
||||
create_backup_dir
|
||||
export_structure
|
||||
@@ -225,9 +233,12 @@ show_usage() {
|
||||
echo " - ccdi_structure.sql (表结构)"
|
||||
echo " - ccdi_data.sql (数据)"
|
||||
echo ""
|
||||
echo "配置:"
|
||||
echo " 数据库配置已内置在脚本顶部,请根据实际情况修改"
|
||||
echo " 配置项: DB_HOST, DB_PORT, DB_USER, DB_PASS, DB_NAME"
|
||||
echo ""
|
||||
echo "前置条件:"
|
||||
echo " 1. 已配置 db_config.conf 文件"
|
||||
echo " 2. 已安装 MySQL 客户端工具(mysqldump)"
|
||||
echo " 已安装 MySQL 客户端工具(mysqldump)"
|
||||
echo ""
|
||||
echo "示例:"
|
||||
echo " $0 # 导出数据库(默认)"
|
||||
|
||||
Reference in New Issue
Block a user