-- 刪除數據庫 (不可逆,慎用!)
DROP DATABASE db_name;
-- 刪除多張表
DROP TABLE tbl1, tbl2, tbl3;
RENAME TABLE 歸檔,觀察期後再物理刪除# 進入 MySQL 安裝 bin 目錄 (或配置 PATH)
cd /usr/local/mysql/bin
# 全庫備份 (結構+數據)
./mysqldump --opt db_name > db_backup.sql
# --opt 等同於 --add-drop-table --add-locks --create-options --quick --extended-insert --lock-tables --set-charset --disable-keys
# 單表備份
./mysqldump --opt db_name tbl_name > tbl_backup.sql
# 僅結構 (無數據)
./mysqldump -d --add-drop-table db_name > schema_only.sql
# 遠程備份
./mysqldump -h remote_host -u user -p db_name > remote_backup.sql
batch.sqlUSE biz_db;
SELECT * FROM orders WHERE create_time > '2023-01-01';
SELECT customer_id, amount FROM payments WHERE status='success';
# Linux/Unix
mysql -u user -p < batch.sql
# 或指定密碼 (不安全,僅內網自動化)
mysql -u user -p'password' < batch.sql
# Windows CMD
mysql -u user -p < batch.sql
mysql> SOURCE /path/to/batch.sql;
START TRANSACTION; ... COMMIT/ROLLBACK;,單條語句失敗不影響其它--force 強制繼續或腳本內捕獲mysql -u user -p < batch.sql > result.log 2>&1 記錄執行日志#!/bin/bash
# /usr/local/bin/mysql_full_backup.sh
set -euo pipefail
BACKUP_DIR="/backup/mysql/$(date +%Y%m%d)"
MYSQL_USER="backup"
MYSQL_PWD="StrongPass!"
MYSQL_HOST="localhost"
DATABASES="biz_db1 biz_db2"
mkdir -p "$BACKUP_DIR"
for DB in $DATABASES; do
echo "Backing up $DB..."
mysqldump -h"$MYSQL_HOST" -u"$MYSQL_USER" -p"$MYSQL_PWD" \
--single-transaction --routines --triggers --events \
--quick --compress "$DB" | gzip > "$BACKUP_DIR/${DB}_$(date +%H%M%S).sql.gz"
# 校驗備份文件非空
if [ ! -s "$BACKUP_DIR/${DB}_$(date +%H%M%S).sql.gz" ]; then
echo "ERROR: Empty backup for $DB" >&2
exit 1
fi
done
# 清理 7 天前備份
find /backup/mysql -type f -name "*.sql.gz" -mtime +7 -delete
echo "Full backup completed: $BACKUP_DIR"
加入 crontab 定時執行:0 2 * * * /usr/local/bin/mysql_full_backup.sh >> /var/log/mysql_backup.log 2>&1