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."
相关推荐
heartbeat..2 分钟前
Redis 常用命令全解析:基础、进阶与场景化实战
java·数据库·redis·缓存
数据知道8 分钟前
PostgreSQL 实战:一文掌握如何优雅的进行递归查询?
大数据·数据库·postgresql
陌上丨13 分钟前
MySQL8.0高可用集群架构实战
数据库·mysql·架构
重生之绝世牛码23 分钟前
Linux软件安装 —— ClickHouse单节点安装(rpm安装、tar安装两种安装方式)
大数据·linux·运维·数据库·clickhouse·软件安装·clickhouse单节点
一只自律的鸡37 分钟前
【MySQL】第十一章 存储过程和存储函数
数据库·mysql
翔云12345641 分钟前
MySQL 中的 utf8 vs utf8mb4 区别
数据库·mysql
数据知道1 小时前
PostgreSQL 实战:索引的设计原则详解
数据库·postgresql
强子感冒了1 小时前
MySQL学习随笔:数据类型与字段约束
学习·mysql
一只酸奶牛^_^1 小时前
解决LinuxDeploy部署mysql、redis数据库无法启动问题。
redis·mysql
老毛肚1 小时前
Spring 6.0基于JDB手写定制自己的ROM框架
java·数据库·spring