[mysqld]
myisam_repair_threads=4
key_buffer = 64M
myisam_sort_buffer_size = 32M
join_buffer_size = 2M
read_buffer_size = 2M
sort_buffer_size = 2M
read_rnd_buffer_size = 2M
table_cache = 1024
thread_cache_size = 16K
wait_timeout = 20
connect_timeout = 10
tmp_table_size = 128M
max_heap_table_size = 128M
max_allowed_packet = 160M
max_connect_errors = 10
query_cache_limit = 1M
query_cache_size = 16M
query_cache_type = 1
[mysqld_safe]
open_files_limit = 8192
[mysqldump]
quick
max_allowed_packet = 512M
[myisamchk]
key_buffer = 64M
sort_buffer = 64M
read_buffer = 16M
write_buffer = 16M
每晚添加 10GB mysql 数据库转储的快速帮助吗?
我还补充说,myisam_repair_threads=4
这是否有助于修复损坏的表问题,有时似乎转储大型数据库会导致损坏
答案1
这里是quick的官方解释:
This option is useful for dumping large tables. It forces mysqldump to
retrieve rows for a table from the server a row at a time rather than
retrieving the entire row set and buffering it in memory before writing it out.
因此,对于大型表来说,如果无法将表放入内存中,这将有所帮助。
但是,这里需要注意的是,如果您使用的是 MyISAM,每次读取一行时它都会锁定表(转储行集时也会锁定表)。InnoDB 使用行级锁定而不是表级锁定,因此备份会容易得多。如果您有一个大表,那么应该使用 InnoDB 而不是 MyISAM。这在备份时会产生很大的不同。
我很惊讶使用 mysqldump 会导致损坏,我会调查可能导致这种情况的其他原因。
答案2
每晚添加 10GB mysql 数据库转储的快速帮助吗?
是的,很有可能。它可能会大幅减少 RAM 占用。