溫馨提示×

ubuntu下sqladmin腳本編寫

小樊
41
2025-10-01 07:43:40
欄目: 云計算

在 Ubuntu 下編寫一個用于管理 SQL 數據庫的腳本,可以使用 Bash 腳本結合常用的命令行工具,如 mysqlpsql。以下是一個示例,展示如何編寫一個簡單的 Bash 腳本來備份和恢復 MySQL 數據庫。你可以根據具體需求進行修改和擴展。

前提條件

  1. 安裝 MySQL 客戶端: 確保你的系統中已經安裝了 MySQL 客戶端工具。如果沒有安裝,可以使用以下命令安裝:

    sudo apt update
    sudo apt install mysql-client
    
  2. 腳本權限: 使用文本編輯器(如 nano、vim)創建腳本文件,并賦予執行權限。

    nano sqladmin.sh
    chmod +x sqladmin.sh
    

示例腳本:備份和恢復 MySQL 數據庫

#!/bin/bash

# 配置部分
DB_HOST="localhost"
DB_USER="your_username"
DB_PASSWORD="your_password"
DB_NAME="your_database"

BACKUP_DIR="/path/to/backup/directory"
DATE=$(date +"%Y%m%d%H%M%S")
BACKUP_FILE="$BACKUP_DIR/$DB_NAME-$DATE.sql"

# 創建備份目錄(如果不存在)
mkdir -p "$BACKUP_DIR"

# 備份函數
backup_database() {
    echo "開始備份數據庫 $DB_NAME ..."
    mysqldump -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" > "$BACKUP_FILE"
    if [ $? -eq 0 ]; then
        echo "數據庫備份成功: $BACKUP_FILE"
    else
        echo "數據庫備份失??!"
        exit 1
    fi
}

# 恢復函數
restore_database() {
    echo "開始恢復數據庫 $DB_NAME$1 ..."
    mysql -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" < "$1"
    if [ $? -eq 0 ]; then
        echo "數據庫恢復成功!"
    else
        echo "數據庫恢復失??!"
        exit 1
    fi
}

# 主菜單
while true; do
    echo "==================== SQL Admin 菜單 ====================="
    echo "1. 備份數據庫"
    echo "2. 恢復數據庫"
    echo "3. 退出"
    echo "請選擇操作 (1-3): "
    read -r choice

    case $choice in
        1)
            backup_database
            ;;
        2)
            echo "請輸入要恢復的備份文件路徑:"
            read -r restore_file
            restore_database "$restore_file"
            ;;
        3)
            echo "退出腳本。"
            exit 0
            ;;
        *)
            echo "無效的選擇,請重新輸入。"
            ;;
    esac
done

腳本說明

  1. 配置部分

    • DB_HOST:數據庫主機地址,通常為 localhost。
    • DB_USER:數據庫用戶名。
    • DB_PASSWORD:數據庫密碼。
    • DB_NAME:要備份或恢復的數據庫名稱。
    • BACKUP_DIR:備份文件存放的目錄。
  2. 備份函數 (backup_database)

    • 使用 mysqldump 命令備份指定數據庫,并將備份文件保存到指定目錄。
    • 備份文件名包含數據庫名稱和當前日期時間,以避免覆蓋。
  3. 恢復函數 (restore_database)

    • 接受一個備份文件路徑作為參數,使用 mysql 命令將備份文件恢復到數據庫中。
  4. 主菜單

    • 提供用戶選擇備份、恢復或退出操作。
    • 根據用戶選擇調用相應的函數。

使用步驟

  1. 編輯腳本: 打開腳本文件,填寫正確的數據庫連接信息和備份目錄路徑。

    nano sqladmin.sh
    
  2. 賦予執行權限

    chmod +x sqladmin.sh
    
  3. 運行腳本

    ./sqladmin.sh
    

注意事項

  • 安全性:在腳本中明文存儲數據庫密碼存在安全風險??梢钥紤]使用 .my.cnf 文件來存儲憑據,或者通過環境變量傳遞密碼。

    示例 .my.cnf 配置:

    [client]
    user=your_username
    password=your_password
    host=localhost
    

    確保 .my.cnf 文件權限設置為僅用戶可讀:

    chmod 600 ~/.my.cnf
    

    修改腳本中的 mysqldumpmysql 命令,去掉 -p 參數:

    mysqldump "$DB_NAME" > "$BACKUP_FILE"
    mysql "$DB_NAME" < "$1"
    
  • 錯誤處理:腳本中基本的錯誤處理已添加,可以根據需要擴展更詳細的日志記錄和錯誤處理機制。

  • 定時任務:可以使用 cron 設置定時備份任務。例如,每天凌晨 2 點執行備份:

    crontab -e
    

    添加以下行:

    0 2 * * * /path/to/sqladmin.sh backup
    

擴展功能

根據需求,你可以為腳本添加更多功能,例如:

  • 刪除舊備份:自動刪除超過一定時間的備份文件,以節省存儲空間。
  • 壓縮備份文件:使用 gzip 壓縮備份文件,減少存儲占用。
  • 支持 PostgreSQL:如果需要管理 PostgreSQL 數據庫,可以添加相應的函數和工具(如 pg_dumppg_restore)。
  • 日志記錄:將操作日志記錄到文件中,便于后續審計和排查問題。

示例:添加刪除舊備份功能

以下是如何在腳本中添加刪除 7 天前備份的功能:

# 刪除舊備份函數
delete_old_backups() {
    echo "刪除 7 天前的備份文件..."
    find "$BACKUP_DIR" -type f -name "*.sql" -mtime +7 -exec rm {} \;
    if [ $? -eq 0 ]; then
        echo "舊備份文件刪除成功。"
    else
        echo "刪除舊備份文件失??!"
    fi
}

# 在主菜單中添加選項
echo "4. 刪除舊備份"
read -r choice

case $choice in
    1)
        backup_database
        ;;
    2)
        # ... 恢復邏輯
        ;;
    3)
        exit 0
        ;;
    4)
        delete_old_backups
        ;;
    *)
        echo "無效的選擇,請重新輸入。"
        ;;
esac

通過以上步驟,你可以創建一個功能完善的 SQL 管理腳本,幫助你在 Ubuntu 系統上更方便地管理數據庫。如果有更具體的需求或遇到問題,歡迎進一步提問!

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女