在shell脚本中:批量导入恢复每天备份的表 ?

在shell脚本中:批量导入恢复每天备份的表 ?

批量导入MySQL归档的表、也是生产环境有这个场景、一般数据表都是按照业务保留几个月、后期有需要就恢复归档的数据。

之前单条命令导入:
表名字
cdr_call_item_20241224.sql.gz

解压缩:
gunzip cdr_call_item_20241224.sql.gz

导入恢复:(导入表数据时候、需要有库)
xl-port
mysql -uroot -p12345678  -hlocalhost xl-port <   cdr_call_item_20241224.sql 
脚本批量导入:

测试环境简单版本:

#!/bin/bash

# 循环从 20241201 到 20241230
for ((i=20241201; i<=20241230; i++)); do
    # 文件名
    file="cdr_call_item_${i}.sql.gz"
    # 解压缩文件并将其导入到数据库
    if gunzip -c "$file" | mysql -uroot -p12345678 -hlocalhost xl-port; then
        echo "cdr_call_item_${i}.sql 导入成功"
    else
        echo "cdr_call_item_${i}.sql 导入失败"
    fi
done

生产环境详细版本:

#!/bin/bash

# 日志文件路径
LOG_FILE="import_cdr_log.txt"

# 要导入的文件列表
FILES=(
    "cdr_call_item_20250102.sql.gz"
    "cdr_call_item_20250103.sql.gz"
    "cdr_call_item_20250104.sql.gz"
    "cdr_call_item_20250105.sql.gz"
    "cdr_call_item_20250106.sql.gz"
    "cdr_call_item_20250107.sql.gz"
    "cdr_call_item_20250108.sql.gz"
    "cdr_call_item_20250109.sql.gz"
    "cdr_call_item_20250110.sql.gz"
    "cdr_call_item_20250111.sql.gz"
    "cdr_call_item_20250112.sql.gz"
    "cdr_call_item_20250113.sql.gz"
    "cdr_call_item_20250114.sql.gz"
    "cdr_call_item_20250115.sql.gz"
    "cdr_call_item_20250116.sql.gz"
    "cdr_call_item_20250117.sql.gz"
    "cdr_call_item_20250118.sql.gz"
    "cdr_call_item_20250119.sql.gz"
    "cdr_call_item_20250120.sql.gz"
    "cdr_call_item_20250121.sql.gz"
    "cdr_call_item_20250122.sql.gz"
)

# 创建或清空日志文件
echo "CDR表导入日志 - $(date)" > $LOG_FILE

# 遍历所有文件并导入
for file in "${FILES[@]}"; do
  echo "正在处理文件: $file"

  # 检查文件是否存在
  if [ ! -f "$file" ]; then
    echo "错误: 文件 $file 不存在" | tee -a $LOG_FILE
    continue
  fi

  # 临时解压并导入,不保留解压后的文件
  if gunzip -c "$file" | mysql -uroot -p12345678 --socket=/var/run/mysqld/mysqld.sock -A xl-port; then
    echo "成功导入文件: $file - $(date)" | tee -a $LOG_FILE
  else
    echo "错误: 导入文件 $file 失败" | tee -a $LOG_FILE
  fi
done

echo "所有文件处理完成。详细日志请查看 $LOG_FILE"
posted @ 2025-04-07 18:24  姬高波  阅读(19)  评论(0)    收藏  举报