我们有非常大的数据库(Mariadb10.3)和mysqldump,需要2-3个小时来完成整个数据库转储,而且在转储过程中还会导致应用程序性能下降。
经过一番研究,我们发现可以在my.cnf文件中添加[mysqldump]节。还可以为其添加“quick”、“max_allowed_packet=512m”等选项。
如果我们可以添加‘单事务’也与上述设置,那么DB将不会在转储期间被锁定,这应该会加快应用程序的速度。
那么下面的条目是否适合my.cnf(mariaDB 19.3)?
[mysqldump]
single-transaction
quick
max_allowed_packet = 512M
如果您的数据库结构是相对静态的,那么就单独转储它(一次),并且使用select只转储表数据。INTO outfile
-这样更快。
你当然需要:
您提到的所有选项都可以在mysqldump
的命令行中指定。这可能是编写自文档化备份过程的更好方法,而不是将这些项填充到配置文件中(隐藏在配置文件中)。
而且,如果转储操作有性能问题,可以尝试省略single-transaction
选项。如果数据库应用程序使用事务来确保多个表之间的一致性,则需要single-transaction
进行备份。否则,备份操作对其他数据库工作负载的干扰将更小。
如果尚未执行此操作,请尝试从承载数据库的同一台计算机上运行备份。或者使用--compress
选项。或者两者兼而有之。对于一个大数据库,一个备份所创建的网络流量是显著的,这些建议可以减少它。