Articles of 数据库备份

如何让pg_dump减less资源贪婪

我已经configurationcron使用以下规则每天调用pg_dump: # xyz database backups: 00 01 * * * root umask 077 && pg_dump –user=xyz_system xyz | gzip > /var/xyz/backup/db/xyz/`date -u +\%Y\%m\%dT\%H\%M\%S`.gz 基本上,它的工作。 数据库增长速度相对较快,但指数不是很大。 目前压缩转储大约需要160MB。 当数据库被转储时,系统开始抓取。 我使用top命令看到的平均负载大约是200, 200, 180 。 基本上服务器很难响应。 第一个问题是如何确定瓶颈在哪里。 I / O操作繁重导致性能下降吗? 是由表locking问题引起的? 也许这是一个记忆问题? pg_dump命令的输出pg_dump送到gzip命令。 它是顺序的,即整个转储放在内存(交换问题?),然后压缩或并发(即gzip压缩得到的东西,等待更多)? 可能是由其他因素引起的? 第二个问题是如何使倾销行为对系统的主要function不那么侵犯。 据我了解,由于数据库的完整性,转储不会花费太多时间。 有表写锁,等等。我可以做些什么来限制这个问题(或考虑到数据库的增长而延迟)。 第三个问题 :现在是不是应该学习更高级的数据库configuration了? 系统工作正常,当数据库备份不执行,但也许数据库转储问题是传入问题的第一个症状?

用InnoDB和MyISAM表创build*一致的* *在线* MySQL备份

我花了几个小时build立一个新的数据库服务器,从一个月前创build的mysqldump文件中取代了两个失败的服务器,然后使用我的服务器的bin-logs使mysqldump保持最新状态。 现在我已经有了这个新的数据库服务器,并且已经运行了几天,我需要完成服务器设置并重新实现一个备份策略。 我需要为新服务器联机(至less)一个MySQL Replication Slave,并且在事情再次失败时开始创build可用的备份。 在我进一步行动之前: 我忘记了(eep)在导入旧的逻辑备份和执行旧的bin日志之前启用了新的MySQL服务器上的bin日志(在这个时候,在这个时候被唤醒了24小时)。 我的数据由多个数据库组成,所有这些数据库都混合使用了MyISAM表和InnoDB表。 同样,在启用新服务器上的bin日志的同一行中,我忘记了在导入所有数据之前打开my.cnf的innodb-file-per-table选项。 现在在新的MySQL服务器上启用了二进制日志,但是每个表的inno文件选项几乎是一个无法解决的问题,直到我可以导入另一个逻辑备份(我可能最终会启动第二个从服务器,并提升第一个从服务器掌握和放弃当前的主 – 因为configuration不是我需要它的地方)。 所以,问题是: 我需要备份MySQL服务器,但是我不能让新的MySQL服务器脱机。 我需要继续写作,并提供几乎没有停机时间的阅读。 这个“小到没有停机”的要求被定义为不到10分钟。 我的数据目前在服务器上使用大约100GB的空间(mysql数据文件),而逻辑备份大概是50GB(这是很多的索引..哈哈)。 我不在乎这个备份是合乎逻辑的,还是从MySQL数据目录拷贝数据文件。 我可以创build一个逻辑备份从奴隶后,我得到它在线。 而问题是: 你将如何创build这个需要的备份? 我知道这不容易,很多人会说这是不可能的。 但我拒绝相信这是不可能的,必须有办法做到这一点。 有关服务器的说明:它运行Ubuntu 10.04,MySQL 5.1.41,数据存储在其上的文件系统是ext3。 服务器在Rackspace Cloud上运行,所以文件系统几乎“现在就是这样”,除非我可以重新分区根设备,并用另一个FS(XFS也许?)重新分区来做快照。 我已经阅读了Perconas XtraBackup Tool,但它只适用于InnoDB表。 他们有一个MyISAM工具,但我真的不明白它如何(或者甚至是否与XtraBackup一起工作)创build一个完全一致的备份。 我已经阅读了关于mysqlhotcopy但它只适用于MyISAM表。 很明显,我知道mysqldump ,但(显然),这里的问题是创build一个一致的备份,而不locking整个数据库服务器的小时数,它将需要输出整个sql备份文件。

失败的完整备份是否会使将来的事务日志备份失效?

我有一台运行SQL Server 2005的服务器。我每晚进行完整备份,每15分钟备份一次事务日志。 这是一个相对较小的服务器,所以我没有做任何差异备份。 如果其中一个夜间完整备份失败,那么数据库是否可以使用前一夜的备份以及两天中的所有事务日志进行恢复,或者是否缺less完整备份会出现问题?

pg_restore比pg_dump长得多

我经常保存并稍后恢复一个用于testing的小型PostgreSQL数据库。 其数据由于testing而定期更新,然后必须进行新的转储,并定期使用转储重新创build处于明确定义状态的数据库。 我注意到,转储(使用pg_dump -Fc database )只需要几秒钟,但恢复( pg_restore -d database )大约需要一分钟。 这似乎很奇怪。 我可以预料,两者都需要大致相同的时间(假定这两个任务都是I / O绑定的)。 还原有问题吗? 我可以让它更快吗? 或者恢复花费的时间比转储还要正常吗? (如果是,那为什么?) 转储文件通常有大约3-4 MiB; DBMS是PostgreSQL V8.4,运行在Pentium4 3GHz,在Ubuntu Linux下有1GiB RAM。

为相当大的数据库(MyISAM / InnoDB)制作MySQL备份的最佳方法

目前我们有一个强大的MySQL数据库,运行一些高stream量的Django网站以及一些体面的电子商务网站。 因此,我们有相当数量的使用InnoDB和MyISAM表的大型数据库。 不幸的是,由于stream量太大,我们最近遇到了困难,所以我设置了另一台主服务器来帮助缓解读取/备份。 现在,我只是简单地使用mysqldump几个参数,它被certificate是好的..直到现在。 显然mysqldump是一个缓慢的方法,但我相信我们已经超出了它的使用。 我现在需要一个很好的select,并且正在研究利用Maatkits mk-parallel-dump实用程序或LVM快照解决scheme。 简洁短版: 我有一个相当大的MySQL数据库,我需要备份 目前使用mysqldump的方法效率低,速度慢(造成问题) 研究诸如mk-parallel-dump或LVM快照之类的东西 任何build议或意见,将不胜感激 – 因为我必须重新做我们正在做的事情,我宁愿它做得很好/最有效率:)。

当与MyISAM混合时,InnoDB表在mysqldump过程中被locking了吗?

我正在为我的mysql服务器寻找一个备份解决scheme,我需要尽可能减less停机时间。 我有以下几点: MySQL服务器 他们不复制 每个服务器代表它自己的 这个数字可以增长,所以设置主/从复制不是一个好主意。 我看到的最简单的备份方式是使用mysqldump和“automysqlbackup”这样的软件。 我最重要的数据使用InnoDB。 我的InnoDB表很重。 问题是:如果我对服务器中的所有数据库执行mysqldump,它会locking我的Innodb表吗?

为什么NT AUTHORITY \ SYSTEM可以创buildSQL Server数据库备份?

我有一个计划任务(在Windows任务计划程序中)使用SMO(Windows身份validation)连接到SQL Server并创build数据库备份。 到目前为止,这个任务是在pipe理员帐户下运行的,我想改为使用SYSTEM帐户。 我改变了计划中的任务,而且让我非常吃惊的是,它开箱即用。 我想明白为什么会这样。 系统是Windows Server 2012 R2,数据库是SQL Server 2012(SP1)Express Edition。 这是一个标准安装,添加了一个SQL Auth用户。 在SSMS中,这些是login及其相关的服务器angular色: MS_PolicyEventProcessingLogin ## (禁用) MS_PolicyTsqlExecutionLogin ## (禁用) MyServer \ Administrator(公共,系统pipe理员) MySqlAuthUser(公共) BUILTIN \ Users(公共) NT AUTHORITY \ SYSTEM(公共) NT SERVICE \ MSSQLSERVER(公共,系统pipe理员) NT SERVICE \ SQLWriter(public,sysadmin) NT SERVICE \ Winmgmt(public,sysadmin) sa(公共,系统pipe理员) 数据库本身具有以下用户及其angular色: MySqlAuthUser(Login MySqlAuthUser)(db_owner) dbo(loginsa)(db_owner) 客人(残疾人) INFORMATION_SCHEMA (禁用) sys (禁用) 查看用户NT […]

这是一个有效的MongoDB备份策略吗?

我有一个专门的服务器,大约10GB的MongoDB数据库。 我需要做每日备份,但我不能停止与数据库。 是否有可能在单个磁盘上使用副本集(有两个在不同端口上运行的mongod实例),并简单地使第二个副本脱机并将数据文件备份到非现场存储(如S3(日志打开))? 或者使用主/从比副本更好? 这是否可行,如果是的话,我可能会遇到什么样的问题? 如果没有,我怎么概念化这个工作?

如何使用mysqldump创build一个只读MySQL用户进行备份?

我正在使用automysqlbackup脚本来转储我的MySQL数据库,但我想有一个只读的用户做到这一点,以便我不存储我的根数据库密码在纯文本文件。 我创build了一个这样的用户: grant select, lock tables on *.* to 'username'@'localhost' identified by 'password'; 当我运行mysqldump (通过automysqlbackup或直接)我得到以下警告: mysqldump: Got error: 1044: Access denied for user 'username'@'localhost' to database 'information_schema' when using LOCK TABLES 我做错了吗? 我的只读用户需要额外的补助吗? 或者只能lockinginformation_schema表? 这是怎么回事? 编辑: GAH,现在它工作。 我以前可能没有运行FLUSH PRIVILEGES。 另外,这种情况多久会自动发生? 编辑: 不,它不工作。 手动运行mysqldump -u username -p –all-databases > dump.sql不会生成错误,但不会转储information_schema。 automysqlbackup确实会引发错误。

无预算的MySQL备份

我目前的MySQL备份scheme是将我们的数据库复制到第二个服务器,并在该服务器上运行mysqldump,以从表或行locking中删除任何停机时间。 这种方式运行良好,但第二台服务器每月花费150美元(澳大利亚托pipe比美国贵得多)。 我在这里读到很多关于这个问题的问题,大多数人需要帮助,而不是我需要的。 我需要mysqldump(最好每隔4小时),不要停机。 该数据库是约7GB的未压缩,所以mysqldump可能需要一些时间取决于服务器。 我已经考虑复制到同一台机器上,但是我不想让奴隶吃掉急需的记忆。 我不确定我可以限制每个分贝的内存使用量? 无论哪种方式,这将把负载在服务器上,而其倾销数据库。 我刚刚读了这个http://www.zmanda.com/quick-mysql-backup.html ,它看起来不错,每年$ 300是好的,这节省了我很多。 不幸的是我不能复制到亚马逊的RDS,但我可以复制到一个微型的RC2实例,但复制将发生在网上,并ping是〜220毫秒。 我在这里看到一些人在谈论LVM快照,这可能是一个不错的select。 我不知道这个选项很多。 意见将不胜感激。