You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Django应用的PostgreSQL数据库xxxx2迁移至Server1且无损坏

迁移Django应用数据库xxxx2至Server1的安全操作步骤

前置说明

两台服务器分别部署独立Django应用,模型无交集;Server1含应用1及数据库xxxx1,Server2含应用2及数据库xxxx2。以下步骤确保迁移过程不损坏现有数据与应用。


1. 全量备份原数据库xxxx2(核心前置操作)

必须先备份,防止迁移过程中数据丢失:

  • 若为MySQL:
    mysqldump -u 数据库用户名 -p xxxx2 > xxxx2_full_backup.sql
    
    执行后输入数据库密码,生成全量备份文件。
  • 若为PostgreSQL:
    # 生成SQL文本备份
    pg_dump -U 数据库用户名 xxxx2 > xxxx2_full_backup.sql
    # 或生成压缩的自定义格式备份(推荐,恢复更快)
    pg_dump -Fc -U 数据库用户名 xxxx2 > xxxx2_full_backup.dump
    

2. 安全传输备份文件至Server1

用scp传输,确保文件完整性:

scp /Server2上的备份路径/xxxx2_full_backup.sql 你的Server1用户名@Server1IP:/Server1的目标存储路径/

传输完成后,在Server1和Server2分别执行哈希校验(如md5sum xxxx2_full_backup.sql),确认文件一致无损坏。

3. 在Server1创建空的目标数据库xxxx2

需与原数据库的字符集、排序规则、权限配置完全一致:

  • MySQL(登录MySQL终端后执行):
    -- 替换为原数据库的字符集与排序规则
    CREATE DATABASE xxxx2 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    -- 创建对应权限的数据库用户(若应用2需要远程连接)
    GRANT ALL PRIVILEGES ON xxxx2.* TO '应用2的数据库用户名'@'应用2服务器IP' IDENTIFIED BY '密码';
    FLUSH PRIVILEGES;
    
  • PostgreSQL:
    # 创建数据库,匹配原库编码与所属用户
    createdb -U Server1数据库管理员用户名 -O 应用2的数据库用户名 -E UTF8 xxxx2
    

4. 恢复备份至Server1的xxxx2数据库

  • MySQL:
    mysql -u 数据库用户名 -p xxxx2 < /Server1的备份路径/xxxx2_full_backup.sql
    
  • PostgreSQL(SQL备份):
    psql -U 数据库用户名 xxxx2 < /Server1的备份路径/xxxx2_full_backup.sql
    
  • PostgreSQL(自定义格式备份):
    pg_restore -U 数据库用户名 -d xxxx2 /Server1的备份路径/xxxx2_full_backup.dump
    

5. 验证数据完整性

对比原Server2的xxxx2库与Server1的新xxxx2库:

  • 检查表结构:执行SHOW TABLES;(MySQL)或\dt(PostgreSQL),确认表数量一致
  • 校验关键数据:对核心表执行SELECT COUNT(*) FROM 表名;,对比两边行数
  • 随机抽查数据:选取部分表的记录,确认内容无篡改

6. 调整应用2的数据库连接配置

修改应用2的settings.py中DATABASES配置,将数据库主机指向Server1:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 或postgresql_psycopg2
        'NAME': 'xxxx2',
        'USER': '应用2的数据库用户名',
        'PASSWORD': '数据库密码',
        'HOST': 'Server1的IP或域名',  # 原先是Server2的地址,现在改为Server1
        'PORT': '3306',  # MySQL默认端口,PostgreSQL为5432
    }
}

7. 双应用验证

  • 启动应用2,测试所有核心功能(读写数据、业务流程),确认与新库交互正常
  • 访问Server1上的应用1,验证其数据与功能完全不受影响

关键注意事项

  • 选择业务低峰期操作,减少对用户的影响
  • 迁移完成后,保留原Server2的xxxx2库至少1-3天,观察无异常后再清理
  • 若Server1的数据库服务资源不足(磁盘、内存),需提前扩容

内容的提问来源于stack exchange,提问作者Si si

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 17:53:23