我有一个安装了MySQL数据库服务器的Windows Server
。
其中有多个数据库,database A
包含一个名为“ tlog”的巨大表,大小约为220gb。
我想将database A
移至另一台服务器以进行备份。
我知道我可以执行SQL Dump或使用MySQL Workbench / SQLyog进行表复制。
但是由于服务器中的磁盘存储空间有限(小于50GB),因此无法进行SQL Dump。
服务器正在处理其他工作,因此基本上CPU和RAM也受到限制。因此,无法复制没有占用CPU和RAM的表。
还有其他方法可以将巨大的database A
移动到另一台服务器吗?
提前致谢。
最佳答案
您有几种方法:
方法1
同时转储和压缩:mysqldump ... | gzip > blah.sql.gz
这种方法很好,因为您的数据库可能会少于50GB。因为数据库转储应为ASCII;然后您就可以动态压缩它。
方法二
您可以使用从属复制;此方法将需要转储数据。
方法3
您也可以使用xtrabackup
。
方法4
您可以关闭数据库,然后关闭rsync
数据目录。
注意:实际上,您不必关闭数据库。但是,您可以执行多个rsync
;最终什么都不会改变(如果数据库繁忙则不太可能;必须在缓慢的时间内完成);这意味着数据库将已经同步。
我必须对相当大的PostgreSQL数据库(1TB +)执行此方法。这需要几个rsync
:但是,嘿!停机时间为零。
方法5
如果您在虚拟环境中,则可以:
克隆磁盘映像。
如果您使用的是AWS,则可以创建AMI。
您可以添加另一个磁盘并仅在本地同步;然后分离磁盘,然后重新连接到新的VM。
如果您担心在转储或传输期间消耗资源,可以使用ionice
和renice
限制转储/传输的优先级。