每天早上从生产数据库转储 Mysqldump

Ade*_*ard 7 mysql mysqldump export

我们的 Db 大小约为 2GB。我们每天早上 3 点运行一个预定的工作,当流量非常低时,我们导出整个数据库并将其 sftp 导出到站点外。

在生产数据库上执行此操作是不好的做法吗?执行此操作时,慢查询日志总是随着 10 个左右的查询而增长。打开/打开的表也增长了一点。

那么,这不是一个好的备份策略吗?什么是好的/标准替代品?它甚至对数据库有害吗?

谢谢。

编辑

我们在 Linode 4096 上,其中数据库是该服务器上唯一运行的东西。它有SSD,但不是世界级的。我们将 4GB 内存中的 2GB 用于 innodb_buffer_pool。命令如下:

mysqldump --opt --u USER -pPASSWORD DATABASE | gzip > /path/to/database.sql.gz
Run Code Online (Sandbox Code Playgroud)

Ahm*_*sna 9

由于数据库大小很大,您应该使转储命令如下所示:

mysqldump -u USER -p --single-transaction --quick --lock-tables=false --all-databases (or) DATABASE | gzip > OUTPUT.gz
Run Code Online (Sandbox Code Playgroud)

--quick:此选项对于转储大表很有用。它强制mysqldump一次一行地从服务器检索表的行,而不是检索整个行集并在将其写出之前将其缓冲在内存中

--single-transaction:此选项将事务隔离模式设置为 REPEATABLE READ 并SQL在转储数据之前向服务器发送 START TRANSACTION语句。它仅对事务表(例如 )有用InnoDB,因为它会在发出 START TRANSACTION 时转储数据库的一致状态,而不会阻止任何应用程序。

--lock-tables=false: 选项停止MyISAM在备份期间锁定的表(如果它们存在)。