我有一些生产服务器,其ibdata文件的大小每天都在增加。
它已经消耗了 290GB 的空间。
服务器中的表多为InnoDB,读写请求量大。
日志文件大小也在增加。表中有大量数据。
我怎样才能控制两者的增长规模?
我没有使用innodb_file_per_table.
是否mysqldump -all-databases包括所有对象?
我必须将所有数据库迁移到新服务器。
经过一番搜索,我最终得到了以下设置:
mysqldump\
--host=localhost\
--port=3306\
--databases ****\
--user=****\
--password=****\
--default-character-set=utf8\
--add-drop-database\
--add-drop-table\
--add-locks\
--complete-insert\
--extended-insert\
--lock-all-tables\
--create-options\
--disable-keys\
--quick\
--order-by-primary\
--set-charset\
--tz-utc\
> dump/test.sql
Run Code Online (Sandbox Code Playgroud)
到目前为止一切顺利,但我对参数和执行有一些疑问。
关于我的第一个问题,我只想确保所有这些都是必需的,并且一起使用时不会引起任何冲突。最终,我想制作一个非常强大且一致的转储文件,其中包含数百万条记录,用于创建表、数据库和插入数据。好消息是让数据库暂时不可用对我来说不是问题。我唯一的目标是制作一个健壮且一致的转储文件。
关于我的第二场音乐会,我想知道如何在命令出错时获得通知,如果是,则抛出异常。
有任何想法吗?
编辑
这是我根据 RolandoMySQLDBA 的反馈更新的 mysqldump 命令。
mysqldump\
--host=localhost\
--port=3306\
--databases ****\
--user=****\
--password=****\
--default-character-set=utf8\
--opt\
--single-transaction\
--routines\
--triggers\
--events\
--add-drop-database\
--add-drop-table\
--complete-insert\
--delayed-insert\
--tz-utc\
> dump/test.sql
Run Code Online (Sandbox Code Playgroud) 你能帮我理解为什么我在完全重新同步后在从服务器上收到“主键的重复条目”。
基本上'mysqldump'几乎整晚都在运行,然后恢复过程花了几个小时,所以当我启动slave时,它比master慢了~63874秒。
从服务器是只读的(read_only)并且在重新同步过程中没有任何写入,所以我不明白为什么会有重复的密钥。
二进制日志格式在 master 上设置为 MIXED。
用于备份数据库的命令:
mysqldump --opt --single-transaction -Q --master-data=2 db | bzip2 -cz > db.sql.bz2
Run Code Online (Sandbox Code Playgroud)
从站仅从主站(db -> db_backup)复制一个数据库,并使用以下选项:
replicate-wild-do-table = db_backup.%
replicate-rewrite-db = db->db_backup
Run Code Online (Sandbox Code Playgroud) 有一个大小为 500GB 的数据库 A。数据库 A 中的表包含 MyISAM 和 INNODB 表。MyISAM 表是主表,Innodb 表是主事务表。
使用 mysql dump 进行备份和恢复需要很长时间或几天才能退出。
我有一个 500GB 的 MySQL 数据库,主要由 Innodb 表和一个大 (200GB) MyISAM 表组成。我当前的备份策略是将 db 文件复制到外部硬盘驱动器。这会导致约 4 小时的停机时间。我的需求:
目前正在考虑尝试迁移到 Percona xtrabackup。它是否适合我的用例?我特别担心它会锁定 MyISAM 表和学习曲线。
我们有一个 innodb mysql 数据库,所以我们迷失了许多不同的 mysql 备份策略。有人谈论mysqldump,有人谈论第三方工具。有些表我们还计划运行分区。有什么好工具可以帮助完成这项任务?
我想知道是否有任何方法可以定期将整个 MySQL 服务器备份到特定位置。(如果需要版本,我可以轻松获取)。
如果有,我必须有一种方法可以轻松地从该服务器备份中恢复单个数据库,就像我已经单独备份它们一样。
所使用的方法只是一个纯粹的备份,没有区别,因此无需担心并发症。
更新:我使用 Windows Server 2008 来托管 MySQL 服务器
因为mysqldump需要永远,我们决定只移动文件。因为 2 个数据库在同一台服务器上,所以 acp会很快。
问题是,从研究来看,MyISAM 可以完全移动,但 InnoDB 不是。
我读到了这个:http : //www.mysqlperformanceblog.com/2009/07/31/copying-innodb-tables-between-servers/
最后一个问题是,有没有办法一次移动整个数据库并确保 InnoDB 和 MyISAM 表都正常。
有任何想法吗?非常感谢!
我管理一个 PHP/MySQL 网站:
实际上,每 3000 万个 cronjob 都会在文件中进行一次完整的转储......但是由于有几个,它会导致 PHP 出现致命错误(因为超时)
所以我想要一个工具来做真正的热备份......我用谷歌搜索并“stackoverflowed”,似乎“产品似乎可以完成这项工作:- Percona XTraBackup(免费)- Zmanda 恢复管理器社区(免费)- Zmanda恢复管理器企业版(500 美元)
但我看不出真正的区别是什么以及可能的标准是什么。我的需求似乎很简单:在发生崩溃时进行完整(或增量)备份以恢复我的数据库而不关闭我的网站......我不是 DBA,所以我需要一个“简单”的产品。
非常感谢您的帮助。
我正在运行带有几个客户数据库的 MySQL 服务器,其中一些数据库非常大。我们每天进行一次完整的 mysql 转储。大约需要半个小时才能完成。
在这段时间内,对 MySQL 服务器的每个请求都会得到非常缓慢的响应(有时大约 1 秒而不是 10 毫秒)。即使没有超时错误,我也希望看到查询在相当长的时间内完成,因此客户网站不会因挂起 MySQL 查询而减慢速度。
我研究了很多,了解了数据复制、LVM 快照、各种mysqldump标志选项和其他变通方法,但没有什么能真正改善这种情况。
是否有任何选项可以在 MySQL 中设置查询优先级?
如果有一种方法可以定义查询优先级,我可以给备份进程一个较低的优先级,以确保所有其他查询执行得更快。该mysqldump过程可能会SIGTSTP在受到另一个请求的挑战时暂时暂停 ( ),并SIGCONT在查询完成后继续 ( )。但是,我在 MySQL 中找不到这样的特性。
给mysqldump进程一个更高的nice值是行不通的,因为它只会增加备份进程和表锁存在的时间。(我正在锁定每个表。)此外,限制 IO 写入速率只会导致更长的痛苦。
除了 LVM 和复制之外,还有没有我错过的解决方案?
只需在可能过时的高性能 MySQL 版本中阅读有关mk-parallel-dump 的信息。听起来不错,但是当我去下载它时,我发现它已被弃用,Percona 工具包中没有等效的命令。
是否有其他工具可以做类似的事情——即快速数据库备份?
我正在运行 MySQL 5.5/innoDB(通过 ubuntu)的 M/S 复制。
我的数据库非常大:~250GB。
我正在寻找可以执行以下操作的备份工具/服务:
有什么建议?
mysql ×13
backup ×11
mysqldump ×9
innodb ×6
myisam ×3
replication ×2
xtrabackup ×2
maatkit ×1
mysql-5.5 ×1
performance ×1
windows ×1