迁移Docker中运行的MySQL和PostgreSQL全部数据

420 阅读1分钟

MySQL

如果你想迁移 Docker 中运行的 MySQL 数据库的全部数据,你可以使用 mysqldump 命令,它是 MySQL 自带的数据备份工具。

以下是如何使用 mysqldump 命令来备份和恢复数据的步骤:

  1. 首先,你需要使用 mysqldump 命令在运行 MySQL 容器的 Docker 实例中创建一个数据库备份。你可以通过以下命令做到这一点:

    docker exec mysql_container_name sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > all-databases.sql
    

    这个命令会创建一个名为 all-databases.sql 的文件,该文件包含了 MySQL 数据库中的所有数据。

  2. 然后,你可以将备份文件移动到新的 Docker 实例中。你可以使用 docker cp 命令来完成这一操作:

    docker cp all-databases.sql mysql_container_name:/all-databases.sql
    
  3. 最后,你可以在新的 Docker 实例中恢复数据库。你可以使用以下命令来恢复数据:

    docker exec -i mysql_container_name mysql -uroot -p"$MYSQL_ROOT_PASSWORD" < all-databases.sql
    

在这些步骤中,mysql_container_name 是你的 MySQL 容器的名称,$MYSQL_ROOT_PASSWORD 是 MySQL root 用户的密码。

请记住,你应该在执行这些步骤之前确保你的数据是安全的,并且应该尽可能地避免在生产环境中直接进行这些操作,除非你完全了解它们的含义和可能的后果。

PostgreSQL

如果你想迁移在 Docker 中运行的 PostgreSQL 数据库的全部数据,你可以使用 pg_dumpall 命令。这是一个 PostgresSQL 自带的工具,用于备份数据库。

以下是如何使用 pg_dumpall 命令来备份和恢复数据的步骤:

  1. 备份数据:首先,你需要在运行 PostgreSQL 容器的 Docker 实例中创建一个数据库备份。你可以通过以下命令做到这一点:

    docker exec postgres_container_name pg_dumpall -c -U postgres > db_backup.sql
    

    这个命令会创建一个名为 db_backup.sql 的文件,该文件包含了 PostgreSQL 数据库中的所有数据。

  2. 移动备份文件:然后,你可以将备份文件移动到新的 Docker 实例中。你可以使用 docker cp 命令来完成这一操作:

    docker cp db_backup.sql postgres_container_name:/db_backup.sql
    
  3. 恢复数据:最后,你可以在新的 Docker 实例中恢复数据库。你可以使用以下命令来恢复数据:

    docker exec -i postgres_container_name psql -U postgres < db_backup.sql
    

在这些步骤中,postgres_container_name 是你的 PostgreSQL 容器的名称。

请注意,你应该在执行这些步骤之前确保你的数据是安全的,并且应该尽可能地避免在生产环境中直接进行这些操作,除非你完全了解它们的含义和可能的后果。