程序员の奇妙冒险

返回
服务器运维 Linux
2025-04-03 14:13 阅读:54 评论:0

mysql备份和恢复数据库

备份数据库 恢复数据库

备份数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/bin/bash
 
MYSQL_HOST="127.0.0.1"
MYSQL_PORT="3306"
MYSQL_USER="root"
MYSQL_PASSWORD="123456"
 
BACKUP=/home/.backupsql
 
DATETIME=$(date +%Y%m%d%H%M)
 
DATABASES=`/usr/local/mysql/bin/mysql -h${MYSQL_HOST} -P${MYSQL_PORT} -u${MYSQL_USER} -p${MYSQL_PASSWORD} -e "SHOW DATABASES;"`
 
for db in $DATABASES; do
# 忽略备份的数据库
if [[ "$db" != "Database" ]] && [[ "$db" != "information_schema" ]] && [[ "$db" != "performance_schema" ]] && [[ "$db" != "mysql" ]] ; then
echo "正在备份数据库: $db"
rm -rf "${BACKUP}/$db"
mkdir -p "${BACKUP}/$db"
/usr/local/mysql/bin/mysqldump -h${MYSQL_HOST} -P${MYSQL_PORT} -u${MYSQL_USER} -p${MYSQL_PASSWORD} --databases $db > ${BACKUP}/$db/${db}.sql
echo "数据库【$db】已备份到:${BACKUP}/${DATETIME}/$db.sql 下"
fi
done
 
 
#删除180天前的备份数据
#find ${BACKUP} -mtime +180 -name "*.sql" -exec rm -rf {} \;

恢复数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash
 
DB_USER="root" # MySQL
DB_PASSWORD="123456" # MySQL
 
#
dbName="db_test1","db_test2"
DATABASES=(`echo $dbName | tr ',' ' '` )
 
BACKUP_DIR="/home/.backupsql/" #
 
for db in ${DATABASES[@]}; do
echo "Restoring database $db..."
/usr/local/mysql/bin/mysql -u$DB_USER -p$DB_PASSWORD $db < "$BACKUP_DIR/${db}/${db}.sql"
done
评论 (0)
暂无评论 来抢沙发吧~