目前,我们有一个强大的 MySQL 数据库,它运行着几个基于 Django 的高流量网站以及一些规模适中的电子商务网站。因此,我们拥有大量使用 InnoDB 和 MyISAM 表的大型数据库。
不幸的是,我们最近遇到了流量的问题,所以我设置了另一个主服务器来帮助减少读取/备份。
现在我只是简单地使用带有一些参数的 mysqldump 并且它被证明是好的......直到现在。显然 mysqldump 是一种缓慢快速的方法,但我相信我们已经不再使用它了。我现在需要一个很好的替代方案,并且一直在研究使用 Maatkits mk-parallel-dump实用程序或 LVM 快照解决方案。
简洁的简短版本:
任何建议或想法将不胜感激 - 因为我必须重新做我们做事的方式,我宁愿把它做得正确/最有效:)。
在 SQL Server 2008 R2 中,我有一个数据库,它每晚进行一次完整备份,每十分钟进行一次事务日志备份。数据库处于完全恢复模式。
问题是事务日志的备份文件有数百兆字节,但绝对不应该如此。数据库中没有该活动。每个备份只有十分钟。它们太大了,几天后它会完全填满硬盘。
知道是什么导致备份如此之大以及如何修复吗?
backup transaction-log sql-server sql-server-2008 database-backup
我已将 cron 配置为使用以下规则每天调用 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
Run Code Online (Sandbox Code Playgroud)
基本上,它有效。数据库增长相对较快且呈指数增长(但指数不是很大)。目前,压缩后的转储大约需要 160MB。当数据库被转储时,系统开始爬行。我使用该top命令看到的平均负载约为200, 200, 180. 基本上服务器几乎没有响应。
第一个问题是如何确定瓶颈在哪里。性能低下是I/O操作繁重导致的吗?是由表锁定问题引起的吗?也许这是一个内存问题?pg_dump命令的输出通过管道传输到gzip命令。它是顺序的,即整个转储放在内存中(交换问题?)然后压缩或并发(即 gzip 压缩它得到的东西并等待更多)?可能是由其他因素引起的吗?
在第二个问题是如何使倾倒操作该系统的主要功能侵扰程度较低。据我了解,由于数据库完整性,转储不能花费太多时间。有表写锁等。我可以做些什么来限制问题(或延迟它,考虑到数据库增长)。
在第三个问题:是否已经时间来了解更多的高级数据库配置?系统工作正常,当不执行数据库备份时,但也许数据库转储问题是传入问题的第一个症状?
我正在尝试将我的 Postgres 数据库备份到另一台服务器,但我一直被拒绝访问。
我的 pg_hba.conf 文件如下所示:
# DO NOT DISABLE!
# If you change this first entry you will need to make sure that the
# database superuser can access the database using some other method.
# Noninteractive access to all databases is required during automatic
# maintenance (custom daily cronjobs, replication, and similar tasks).
#
# Database administrative login by Unix domain socket
local all postgres peer
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain …Run Code Online (Sandbox Code Playgroud) 生产站点中使用了一个应用程序,该应用程序使用 SQL Server 2008 作为其 DBMS。
数据库模式使用 Filestream Varbinary 将二进制数据保存在文件系统上,而不是直接保存到数据库表中。
关键是时不时在开发机器上复制生产数据库会很有用,主要是为了进行故障排除。数据库太大了,无法轻松地移动它,但是如果可以移动它而忽略文件流 varbinary 字段就可以了。
换句话说,我正在尝试制作数据库的“不完美”副本:即,在目标数据库上,可以使用 NULL 值而不是 varbinary。这可能吗?我尝试在 SQL Server Management Studio 上寻找该功能并进行了排除包含文件流 varbinary 的文件组的备份,但我无法恢复:MSSMS 抱怨无法完成恢复,因为备份不完整(当然)。
是否有可能以某种方式实现我想要做的事情?
我只是花了几个小时构建一个新的数据库服务器来替换mysqldump一个月前创建的文件中的2 个失败的服务器,然后使用我的服务器的 bin-logs 将其mysqldump更新。现在我有这个新的数据库服务器在线,并且已经运行了几天,我需要完成服务器设置并重新实施备份策略。
我需要将(至少)一个 MySQL Replication Slave 联机以供新服务器使用,并开始创建可用备份以备再次失败时使用。
在我进一步行动之前:
innodb-file-per-table选项my.cnf。二进制日志现在在新的 MySQL 服务器上启用,但 inno file per table 选项几乎是一个非修复,直到我可以导入另一个逻辑备份(我可能最终会启动第二个从站,并提升第一个从站掌握并放弃当前的主人 - 因为配置不是我需要的地方)。所以,问题是:
我需要备份 MySQL 服务器,但我不能让新的 MySQL 服务器脱机。我需要继续进行写入,并在几乎没有停机时间的情况下提供读取服务。这种“几乎没有停机时间”的要求被定义为少于 10 分钟。我的数据目前在服务器上使用了大约 100GB 的空间(mysql 数据文件),逻辑备份大约是 50GB(这是很多索引......哈哈)。我不关心这个备份是合乎逻辑的,还是从 MySQL 数据目录中复制一份数据文件。在线后,我可以从从属设备创建逻辑备份。
而且,问题是:
您将如何创建这个所需的备份?我知道这并不容易,很多人会说这是不可能的。但我拒绝相信这是不可能的,必须有办法完成它。
关于服务器的说明:它运行的是 Ubuntu 10.04、MySQL 5.1.41,并且存储数据的文件系统是 ext3。服务器在 Rackspace Cloud 上运行,所以文件系统几乎“就是它本来的样子”,除非我可以重新分区根设备并使用另一个 FS(可能是 XFS?)重新分区来做快照。
我读过Perconas XtraBackup Tool,但它只适用于 InnoDB 表。他们有一个 MyISAM …
mysql backup mysql-replication incremental-backup database-backup
背景故事
Ubuntu 死了(无法启动),我无法修复它。我启动了一张 live cd 来恢复重要的东西并将其保存到我的 NAS 中。我备份的其中一件事是/var/lib/mysql。
使用 Linux Mint 重新安装,因为我使用的是 Ubuntu 10.0.4,这是尝试新发行版的好机会(我不喜欢 Unity)。现在我想恢复我的旧 mediawiki,所以我关闭了 mysql 守护进程,cp -R /media/NAS/Backup/mysql/mediawiki@002d1_19_1 /var/lib/mysql/正确设置文件所有权和权限,然后启动 mysql 备份。
问题
现在我正在尝试导出数据库以便恢复数据库,但是当我执行 mysqldump 时出现错误:
$ mysqldump -u mediawikiuser -p mediawiki-1_19_1 -c | gzip -9 > wiki.2012-11-15.sql.gz
Enter password:
mysqldump: Got error: 1146: Table 'mediawiki-1_19_1.archive' doesn't exist when using LOCK TABLES
Run Code Online (Sandbox Code Playgroud)
我尝试过的事情
我尝试使用,--skip-lock-tables但我得到了这个:
Error: Couldn't read status information for table archive ()
mysqldump: Couldn't execute 'show create table `archive`': Table …Run Code Online (Sandbox Code Playgroud) 当您在 pg_dump 上指定压缩时,是在服务器端进行压缩以便传输更快还是 pg_dump 进行压缩?
谢谢
作为减轻灾难(例如恶意实体获得对我们的 AWS 帐户的完全访问权限并删除所有内容)的措施,我正在为我们的生产数据库设置异地备份。我们在 AWS RDS 上使用 PostgreSQL。我们在 RDS 上启用了每日备份。
我想出了以下两个选择:
1)(每天)下载RDS生成的数据库快照(尽管我不确定这是否可以编写脚本甚至可能)
2)(每天)启动只读副本并在该副本上使用 pg_dump 来备份数据库
实现这一目标的最佳方法是什么?
如果这有帮助的话,我们已经有了一个可以对 s3 存储桶进行日常备份的工具。
所以,澄清一下,我知道我可以使用为数据库编写的工具转储数据库,这些工具对 azure 一无所知。
我知道我可以做一个导入/导出。
但我想要的比这简单得多。我不需要能够备份到最近十年的任意时间点;我只需要正常的时间点保留期,以及对特定时刻(可能需要停机进行完整备份)进行快照并在正常保留期结束后保留该特定备份的能力。
在 AWS 中,我使用 RDS 快照实现了这一点。我已经做了很多谷歌搜索和阅读 Azure 文档。这似乎是一个非常基本和基本的功能。令我惊讶的是我还没有找到它,但我给微软带来了怀疑的好处,并假设他们已经实现了该功能,而我只是(不知何故)无法找到它。
database-backup ×10
backup ×5
mysql ×3
postgresql ×3
amazon-rds ×1
azure ×1
database ×1
filestream ×1
linux ×1
performance ×1
psql ×1
sql-server ×1