数据库备份(简单版)

前戏:准备数据

1 #1.1 传输文件到服务器的安全目录,powerShell
2 scp D:\load_user_100w_sort.sql hj@192.168.3.97:/var/lib/mysql-files
3 #数据传送完毕之后
1  #1.2 改权限
2 sudo chown mysql:mysql /var/lib/mysql-files/load_user_100w_sort.sql
3 sudo chmod 644 /var/lib/mysql-files/load_user_100w_sort.sql
1 #1.3.1 sql文件
2 mysql -u haojie -p LiveDataBase < /var/lib/mysql-files/load_user_100w_sort.sql
 1 #1.3.2csv文件
 2 #登录MySQL 里执行
 3 USE LiveDataBase;
 4 LOAD DATA INFILE '/var/lib/mysql-files/load_user_100w_sort.sql'
 5 INTO TABLE tb_user
 6 FIELDS TERMINATED BY ','
 7 ENCLOSED BY ''
 8 LINES TERMINATED BY '\n'
 9 IGNORE 1 LINES  -- 如果第一行是列名,加上这行
10 (id, username, password, name, birthday, sex);

 

Part1:写脚本备份数据库

1 #2.1.专门建一个目录存放脚本(推荐方式)
2 sudo mkdir -p /opt/backup_scripts
3 #在目录下建脚本文件
4 sudo touch your_backup.sh

#脚本内容

 #!/bin/bash

# 这是一个最基础的MySQL/MariaDB自动备份脚本

# --- 配置参数 --------------------------
BACKUP_DIR="/backup/mysql"          # 备份文件存放目录
DB_USER
="root" # 数据库用户名(建议用专门的备份账号) DB_PASSWORD="your_password" # 数据库密码 DB_NAME="your_database" # 要备份的数据库名(用 --all-databases 可备份所有库) DATE=$(date +%Y%m%d_%H%M%S) # 获取当前时间,用于命名 RETENTION_DAYS=7 # 备份文件保留的天数 # --- 脚本主体 -------------------------- # 1. 创建当天的备份目录(-p 参数可以创建整个路径) mkdir -p $BACKUP_DIR # 2. 执行备份并压缩 echo "开始备份数据库: $DB_NAME" mysqldump -u $DB_USER -p$DB_PASSWORD $DB_NAME | gzip > $BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz
# 一般一个服务器上有多个关键数据库,都需要备份,并且备份完之后,需要放到一个压缩文件夹里.tar.gz

  #删除7天前的备份文件
  find $[BACKUP] -atime +7 -name "*.tar.gz" -exec rm -rf {} \;

# 3. 检查上一步命令是否执行成功
if [ $? -eq 0 ]; then
    echo "数据库备份成功: ${DB_NAME}_${DATE}.sql.gz"
else
    echo "错误:数据库备份失败!" >&2
    # 这里可以加上发送告警邮件的命令
    exit 1
fi

 

1 #2.2给脚本添加执行权限
2 sudo chmod +x /opt/backup_scripts/your_backup.sh
1 #2.3手动执行一遍进行测试
2 sudo bash your_backup.sh

 

Part2: 添加定时任务

1 sudo crontab -e
2 # 添加这一行
3 15,20 * * * * /opt/backup_scripts/backup_db.sh
posted @ 2026-05-11 16:36  番茄蛋汤  阅读(16)  评论(0)    收藏  举报