我想远程备份我的MySQL服务器。 我有三个问题,一个需求。
我试图使用automysqlbackup脚本,但它是locking表,由于连接速度慢,这是花费时间和网站宕机。
我不想使用复制,我的第二个服务器也有它自己的应用程序,并且在另一个服务器中有很多写入。 我没有足够的资源。
我不想使用xtrabackup(它不是解决除了locking问题之外的主要问题),我有一个不好的经验。
备份应先存储在本地,然后GZIPed然后转移。
主服务器应该只保留一个副本(或最好是文件大小限制,所以如果任何备份失败,它仍然会保留旧的)Automysqlbackback脚本没有我可以设置的限制。 (所以,我可以使用automysqlbackup进行本地备份,并限制总共分配的磁盘空间)
我可以使用SFTP和chroot用户并检索备份。
备份服务器应保持无限(或100)的文件数量。 它不应该像主服务器一样删除文件。
我必须写几个脚本吗? 或者有没有预先制定的解决scheme? (可能还有更多的function)
这听起来像你的要求是足够的自定义,你需要编写自己的脚本。 关于这个问题的几个笔记:
您不必将所有内容转储到磁盘, 然后进行压缩。 使用dump / gzippipe道,它将节省一堆磁盘空间:
mysqldump ... | gzip -c >/var/backups/mysqldump-$(date +%Y-%m%-d).sql.gz
如果您使用所有InnoDB表并在事务中进行转储,则可以使大部分locking问题消失,并将--single-transaction选项用于mysqldump 。
整个dump / push脚本应该大概5行。 这是相当微不足道的。
你将不得不编写自己的脚本。
考虑到你不想扩展locking,并且它看起来像在主服务器上有空间,我build议你在主服务器上启动第二个用于复制的mysql实例,并从复制从服务器执行备份。
不build议只使用一个副本。 有很多服务可以让您以非常低的成本备份空间。 例如,您可以使用亚马逊AWS进行备份,或者查找其他空间提供商。 它会花费你低于10美元/月,但允许多个备份(一周或更多),因此,你将没有任何问题,你现在。
其他变种:获取hetzner.de或另一个低成本的VPS,并设置复制+备份。
如果你的大部分数据都在innodb中,那么查看Xtrabackup
如果你有一个innodb数据库,使用它的好处是它不会在你做备份的时候locking表。
海域。
我用我的MySQL备份
xtrabackup rdiff-backup 如果你真的不喜欢xtrabackup ,那么使用mysqldump (也许mk-parallel-dump从maatkit套件)或者其他什么。 之后,你可以通过rdiff-backup来备份你的备份,这应该只是复制文件的变化部分 – 也可以通过networking使用。
因此,在“小型”机器上,您可以保留每晚的转储,而在远程的“大型”机器上,您可以保留所有的rdiff备份,在您执行mysql转储后每晚更新一次。
它应该很容易脚本(==写你的dump-command和rdiff-backup调用到你的crontab)这个…
再见