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)
由于数据库大小很大,您应该使转储命令如下所示:
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
在备份期间锁定的表(如果它们存在)。