MySql批量迁移数据库

导出数据库

指定数据库实例(MYSQL_HOST、MYSQL_PORT、MYSQL_USER、MYSQL_PASSWORD)中的所有数据库(表结构、数据)导出到指定目录(BACKUP_DIR)下的多个单独的SQL脚本,每个SQL脚本名称即为数据库名(如my_db.sql脚本的数据库名为my_db),且排除内置的mysql、sys、information_schema、performance_schema数据库,具体导出脚本backup.sh内容如下:

sh 复制代码
#!/bin/bash

# MySQL credentials
MYSQL_USER="root"
MYSQL_PASSWORD="myPassw"
MYSQL_HOST="127.0.0.1"
MYSQL_PORT="3306"

# Directory for backups
BACKUP_DIR="backup-dir"

# Create backup directory if it doesn't exist
mkdir -p "$BACKUP_DIR"

# Loop through each database and back it up
for db in $(mysql -h "$MYSQL_HOST" -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" -P "$MYSQL_PORT" -e 'SHOW DATABASES;' | grep -Ev 'Database|mysql|sys|information_schema|performance_schema'); do
  echo "$BACKUP_DIR/$db.sql"
  mysqldump -h "$MYSQL_HOST" -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" -P "$MYSQL_PORT" "$db" > "$BACKUP_DIR/$db.sql"
done

导入数据库

将备份目录(SQL_DIR)下的多个sql脚本恢复到指定数据库实例(MYSQL_HOST、MYSQL_PORT、MYSQL_USER、MYSQL_PASSWORD)中,每个sql脚本名称即为数据库名(如my_db.sql脚本的数据库名为my_db),批量建库、导入SQL脚本的restore.sh内容如下:

sh 复制代码
#!/bin/bash

# MySQL credentials
MYSQL_USER="root"
MYSQL_PASSWORD="myPassw"
MYSQL_HOST="127.0.0.1"
MYSQL_PORT="33306"

# Directory containing SQL scripts
SQL_DIR="backup-dir"

# Loop through each SQL file in the directory
for sql_file in "$SQL_DIR"/*.sql; do
  # Extract the database name from the file name
  db_name=$(basename "$sql_file" .sql)

  # Create the database with specified character set and collation
  echo "Creating database: $db_name"
  mysql -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" -h "$MYSQL_HOST" -P "$MYSQL_PORT" -e "CREATE DATABASE IF NOT EXISTS \`$db_name\` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci';"

  # Import the SQL file into the database
  echo "Importing data into database: $db_name"
  mysql -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" -h "$MYSQL_HOST" -P "$MYSQL_PORT" "$db_name" < "$sql_file"
done

echo "All databases created and data imported successfully."
相关推荐
ZWZhangYu4 小时前
LangChain 构建向量数据库和检索器
数据库·langchain·easyui
feifeigo1235 小时前
升级到MySQL 8.4,MySQL启动报错:io_setup() failed with EAGAIN
数据库·mysql·adb
火龙谷6 小时前
【nosql】有哪些非关系型数据库?
数据库·nosql
焱焱枫7 小时前
Oracle获取执行计划之10046 技术详解
数据库·oracle
qq_392397129 小时前
Redis常用操作
数据库·redis·wpf
A__tao10 小时前
一键将 SQL 转为 Java 实体类,全面支持 MySQL / PostgreSQL / Oracle!
java·sql·mysql
一只fish10 小时前
MySQL 8.0 OCP 1Z0-908 题目解析(17)
数据库·mysql
花好月圆春祺夏安11 小时前
基于odoo17的设计模式详解---装饰模式
数据库·python·设计模式
A__tao11 小时前
SQL 转 Java 实体类工具
java·数据库·sql
m0_6530313611 小时前
腾讯云认证考试报名 - TDSQL数据库交付运维专家(TCCE PostgreSQL版)
运维·数据库·腾讯云