提问者:小点点

MariaDb mysqldump配置


我们有非常大的数据库(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

共2个答案

匿名用户

如果您的数据库结构是相对静态的,那么就单独转储它(一次),并且使用select只转储表数据。INTO outfile-这样更快。

你当然需要:

  • 创建转储所有(或仅可更改)表数据的脚本(最好的方法-事件过程)
  • 创建一个脚本(可以作为结构转储中的存储过程),从该转储中还原数据,同时考虑到关系数据必须严格按照“先一后多”的顺序还原

匿名用户

您提到的所有选项都可以在mysqldump的命令行中指定。这可能是编写自文档化备份过程的更好方法,而不是将这些项填充到配置文件中(隐藏在配置文件中)。

而且,如果转储操作有性能问题,可以尝试省略single-transaction选项。如果数据库应用程序使用事务来确保多个表之间的一致性,则需要single-transaction进行备份。否则,备份操作对其他数据库工作负载的干扰将更小。

如果尚未执行此操作,请尝试从承载数据库的同一台计算机上运行备份。或者使用--compress选项。或者两者兼而有之。对于一个大数据库,一个备份所创建的网络流量是显著的,这些建议可以减少它。