我需要将一个非常大的数据库(〜320 GB)从server1移动到server2 (Linux)。 由于扩展版本不同,数据库只能从dump文件在server2上恢复,如此处所述。
问题是我没有足够的空间在server1上先写一个转储文件,然后将其复制到server2并validation总和。 我需要一个可靠的方法直接写入到server2的数据,最大限度地减less腐败的风险。
我试过了:
nc从server1到server2的转储。 sshfs将转储文件直接写入server1上安装的server2文件系统。 这两个转储文件似乎已经损坏(大小不一,并在导入的不同阶段与腐败有关的错误)。
我像这样迁移数据库(但小得多)没有问题。 任何人都可以提出一个更好,更可靠的方法来做这个大转移?
更新:尝试与相同的结果的NFS。 很明显,远程文件系统不能处理这个数据量。 从结果SQL文件中可以明显地看到块,导致导入过程中出现语法错误。 每次尝试时,文件的不同部分都会被破坏。
如何在sever1上挂载外部NFS共享,并在转储后挂载到server2? 这就是我执行Oracle数据库数据泵和RMAN备份(类似于转储)的最佳方法,将生产服务器(server1)复制到testing服务器(server2)并还原备份。 我们的外部NFS依赖于NAS,但任何Gnu / Linux都可以完成这项工作,只需安装必要的软件包即可
按照Debian的这些步骤 ,并通过/ etc / fstab设置共享在server1和server2上挂载
nfs_server:/path/to/share /server1or2filesystem/mountpoint nfs rw,hard,intr,timeo=600,actimeo=0,proto=tcp,bg,rsize=262144,wsize=262144 0 0
我从来没有对NFS共享上的转储(除非发生连接故障)的腐败问题,如果再次发现损坏testingNFS,您可以尝试本地部分转储,以便丢弃转储工具上的错误configuration,如果本地转储也损坏。
试试AFS ( 安德鲁FS )。 这个文件系统 本身被devise成可扩展和面向networking的 ,可以为你的问题提供一个很好的解决scheme。 在Ubuntu中使用OpenAFS 。 请记住,在build立可靠连接之前,需要进行一些configuration和设置。
你可以尝试通过这个链接直接导入它:
mysqldump –add-drop-table –extended-insert –force –log-error = error.log -uUSER -pPASS OLD_DB_NAME | ssh -C user @ newhost“mysql -uUSER -pPASS NEW_DB_NAME”
但不能通过networking复制可靠的。 你确定没有networking或文件系统的问题吗?
我在这里得到了最好的答案。 最好的方法是通过远程转储源数据库直接在接收服务器上创build转储文件:
pg_dump -h remoteserver -U remoteuser remotedbname -Fc -f my_old_server_backup.dump
这比通过networking文件系统编写庞大的SQL文件更可靠。 我现在有一个function正常的数据库!