有一个非常有趣的任务:必须从AWS中转储mysql数据库并在私有云上恢复。数据库非常大:160 in、120 in和21 in每个db.sql转储--在同一个极光rds实例中的所有3个实例,AWS中的实例快照都有700 in。MySQL版本5.6,使用innodb。目前已经运行了20个小时,我的估计是它将在4-6小时内完成,所以完整的恢复大约是24小时,这对生产环境来说是太长的停机时间了。我的问题是:如何调优mysql以加速恢复?提前谢谢你。
三个半小时内就完成了。
发布于 2020-05-02 11:58:02
你确定了你进口的瓶颈是什么吗?如果您的CPU遇到瓶颈,那么除了将具有更快的单线程性能的CPU放入您的私有云实例之外,您可以做的事情非常有限。
有几件事会有帮助:
innodb_doublewrite=0
innodb_flush_logs_on_trx_commit=0
innodb_io_capacity=<approximate amount of IOPS your storage can provide when using 16KB random writes>
innodb_log_file_size=1G
innodb_log_files_in_group=24 # you will want to change this later!
performance_schema=0
slow_query_log=0
general_log=0
注意:确保在导入完成后删除所有这些选项,它们是危险的,对于常规的运行时操作是不明智的!这些都相当于让你的赛车跑得更快,通过移除滚筒和安全带来节省重量。
如果驱动程序支持此功能,则在导入机器的虚拟磁盘上启用磁盘写缓存。
如果在导入过程中可以获得足够的内存,那么一旦创建了ib_logfile*文件,停止mysqld,将这些文件和ibdata1放在tmpfs上,并将它们符号链接到其中。当你完成的时候,停止我的目标,然后把它们移回来。
如果ZFS是您的选项,那么将/var/lib/mysql放在ZFS上的卷上,设置如下:
compression=lz4
logbias=throughput
recordsize=16k
sync=disabled
xattr=sa
由于压缩和sync=disabled功能,与其他文件系统相比,这将使您的写入吞吐量大约翻一番。确保在导入完成后设置了sync=standard。
如果您将以上所有内容结合在一起,并且您是磁盘I/O有限公司,您将看到在倍数中性能的提高。如果您的CPU有限,以上将给您双位数%的改进点.
https://dba.stackexchange.com/questions/266335
复制相似问题