恢复 MySQL innoDB 转储的更快方法

时间:2021-03-22 00:45:56

标签: mysql innodb database-restore

我有以下 MySQL 配置。

# The MySQL server
[mysqld]
....
key_buffer = 384M
max_allowed_packet = 5M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
...
# enable GTID mode
gtid_mode = ON
enforce_gtid_consistency = 1


# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 384M
innodb_additional_mem_pool_size = 20M

# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 100M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

[mysqldump]
quick
max_allowed_packet = 16M

目前正在尝试在不同的 mysql 主机上从以下命令恢复 Mysql 转储。

mysqldump -u <> -p <> --ssl-capath=<> -all-databases --triggers --routines --events --single-transaction --master-data >> /tmp/mysqldump

使用以下命令恢复相同的转储

cat /tmp/mysqldump | mysql -u <> -p <> --ssl-capath=<>

当前统计数据

mysql 转储 - 3 GB。 没有网络延迟,在同一个网络上

转储生成时间 - 1 分钟 恢复时间 - 9 分钟

主机 RAM - 125 GB。 交换 - 8 GB

试图加快修复的方法

更新mysql配置到下面

innodb_buffer_pool_size = 2048M

# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 256M
innodb_log_buffer_size = 16M
innodb_lock_wait_timeout = 50
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT

在转储前禁用检查并在转储后重置它们。 在转储之前设置以下并在恢复转储后重置它们

UNIQUE_CHECKS=0;
FOREIGN_KEY_CHECKS=0;
FOREIGN_KEY_CHECKS = 0;

他们都没有加紧恢复数据库

关于缩短转储恢复时间的方法有什么建议吗?

尝试了几种可能的方法来缩短恢复转储的时间。但他们都没有帮助。任何建议将不胜感激。

0 个答案:

没有答案
相关问题