我们有一个大型数据库(MariaDB 10.3),mysqldump需要2-3小时才能完成一个完整的数据库转储,而且在转储过程中它还会降低应用程序的性能。
经过研究发现,[mysqldump]部分可以添加到my.cnf文件中。还可以添加quick、max_allowed_packet = 512M等选项。
如果我们还可以在上面的设置中添加single-transaction,那么在转储过程中数据库将不会被锁定,它应该会加快应用程序的速度。
那么,这些条目适合my.cnf吗?
[mysqldump]
single-transaction
quick
max_allowed_packet = 512M发布于 2021-03-30 13:47:14
您提到的所有选项都可以在mysqldump's 命令行上指定,这是值得的。这可能是编写自文档备份过程的更好方法,而不是将这些项填充到(隐藏在)配置文件中。
而且,如果转储操作存在性能问题,可以尝试省略single-transaction选项。如果数据库应用程序使用事务来确保多个表之间的一致性,则需要single-transaction进行备份。否则,备份操作将减少对其他数据库工作负载的干扰。
如果您还没有这样做,请尝试在数据库所在的同一台计算机上运行备份。或者使用--compress选项。或者两者都有。对于大型数据库,备份所创建的网络流量非常重要,而这些建议可以减少网络流量。
发布于 2021-03-30 13:38:04
如果您的数据库结构是相对静态的,那么单独转储它(一次),并且只使用SELECT .. INTO OUTFILE转储表数据--这更快。
你当然需要:
https://dba.stackexchange.com/questions/288953
复制相似问题