1,环境介绍
生产环境通常只有一个数据库,但是其他环境,测试可能不止一个数据库。需要换数据库时,就需要一个一个的备份,一两个还好,多的话就有点繁琐。
如果说直接备份整个数据库,可能将原来的系统数据库也备份过去了,而用不需要原来的系统数据库(’information_schema’, ‘mysql’, ‘performance_schema’, ‘sys’),这是用脚本就方便多了。
2,批量备份数据库脚本
#!/bin/bash
# MySQL 连接配置
USER= "root"
PASSWORD= "qwe123456"
HOST= "192.168.200.101"
#备份路径
OUTPUT_DIR= "/home/ubuntu/backup"
# 获取非系统数据库的列表
DATABASES=$(mysql -u $USER -p$PASSWORD -h $HOST -e "SELECT schema_name FROM information_schema.schemata WHERE schema_name NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys');" -s --skip-column-names)
# 备份每个数据库
for DB in $DATABASES; do
echo "Backing up database: $DB"
mysqldump -u $USER -p$PASSWORD -h $HOST -- set -gtid-purged=OFF --databases $DB > "$OUTPUT_DIR/$DB.sql"
done
echo "Backup completed!
|
上面备份命令,按需求添加参数,如这里用的–set-gtid-purged=OFF 不需要原来的GTID(全局事务标识符),我这里如果不加这个参数,还原报错。
ERROR 3546 (HY000) at line 24: @@GLOBAL.GTID_PURGED cannot be changed: the added gtid set must not overlap with @@GLOBAL.GTID_EXECUTED
所以加了–set-gtid-purged=OFF参数就行了。
mysqldump -u $USER -p$PASSWORD -h $HOST -- set -gtid-purged=OFF --databases
|
3,还原数据库脚本
还原数据库,第一步,还是需要在新收据开手动创建数据库。
CREATE DATABASE your_database_name;
|
还原数据库脚本
#!/bin/bash
# MySQL 连接配置
USER= "your_username"
PASSWORD= "your_password"
HOST= "localhost"
#备份sql的文件路径
INPUT_DIR= "/path/to/backup/"
# 遍历备份目录中的所有 .sql 文件并导入
for FILE in $INPUT_DIR/*.sql; do
DB_NAME=$( basename "$FILE" .sql)
echo "Restoring database: $DB_NAME from $FILE"
mysql -u $USER -p$PASSWORD -h $HOST $DB_NAME < "$FILE"
done
echo "Restoration completed!"
|
以上还原命令,也可以根据实际情况来修改参数
mysql -u $USER -p$PASSWORD -h $HOST $DB_NAME
|