使用 Centos Linux、8GB PAE 和 MySQL 5.0.77 时 mysqldump 性能严重下降

使用 Centos Linux、8GB PAE 和 MySQL 5.0.77 时 mysqldump 性能严重下降

我们在 VMWare 上的 CentOS 5.5 上使用 MySQL 5.0.77:

Linux dev.ic.soschildrensvillages.org.uk 2.6.18-194.11.4.el5PAE #1 SMP Tue Sep 21 05:48:23 EDT 2010 i686 i686 i386 GNU/Linux

我们最近将内存从 4GB 升级到了 8GB。升级后,mysqldump 隔夜备份的时间从不到 10 分钟增加到了超过 2 小时。由于数据库负载过大,这也导致基于 plone 的网站无响应。转储使用优化的 mysqldump 格式,并通过套接字直接传输到另一台服务器。

任何关于我们能做什么来修复的想法都非常感谢。升级 MySQL 有帮助吗?我们可以对 MySQL 配置做些什么?我们可以对 Linux 配置做些什么?或者我们必须添加另一台服务器或转到 64 位?

我们在 6GB PAE 上运行了之前的(非虚拟)服务器,没有发现类似的问题。这是在相同的 MySQL 版本上,但是是 Centos 4.4。

服务器配置文件:

[mysqld]
port=3307
socket=/tmp/mysql_live.sock
wait_timeout=31536000
interactive_timeout=31536000
datadir=/var/mysql/live/data
user=mysql
max_connections = 200
max_allowed_packet = 64M
table_cache = 2048
binlog_cache_size = 128K
max_heap_table_size = 32M
sort_buffer_size = 2M
join_buffer_size = 2M
lower_case_table_names = 1

innodb_data_file_path = ibdata1:10M:autoextend
innodb_buffer_pool_size=1G
innodb_log_file_size=300M
innodb_log_buffer_size=8M
innodb_flush_log_at_trx_commit=1
innodb_file_per_table

[mysqldump]
# Do not buffer the whole result set in memory before writing it to
# file. Required for dumping very large tables
quick
max_allowed_packet = 64M

[mysqld_safe]
# Increase the amount of open files allowed per process. Warning: Make
# sure you have set the global system limit high enough! The high value
# is required for a large number of opened tables
open-files-limit = 8192

服务器变量:

mysql> show variables;
+---------------------------------+------------------------------------------------------------------+
| Variable_name                   | Value                                                            |
+---------------------------------+------------------------------------------------------------------+
| auto_increment_increment        | 1                                                                |
| auto_increment_offset           | 1                                                                |
| automatic_sp_privileges         | ON                                                               |
| back_log                        | 50                                                               |
| basedir                         | /usr/local/mysql-5.0.77-linux-i686-glibc23/                      |
| binlog_cache_size               | 131072                                                           |
| bulk_insert_buffer_size         | 8388608                                                          |
| character_set_client            | latin1                                                           |
| character_set_connection        | latin1                                                           |
| character_set_database          | latin1                                                           |
| character_set_filesystem        | binary                                                           |
| character_set_results           | latin1                                                           |
| character_set_server            | latin1                                                           |
| character_set_system            | utf8                                                             |
| character_sets_dir              | /usr/local/mysql-5.0.77-linux-i686-glibc23/share/mysql/charsets/ |
| collation_connection            | latin1_swedish_ci                                                |
| collation_database              | latin1_swedish_ci                                                |
| collation_server                | latin1_swedish_ci                                                |
| completion_type                 | 0                                                                |
| concurrent_insert               | 1                                                                |
| connect_timeout                 | 10                                                               |
| datadir                         | /var/mysql/live/data/                                            |
| date_format                     | %Y-%m-%d                                                         |
| datetime_format                 | %Y-%m-%d %H:%i:%s                                                |
| default_week_format             | 0                                                                |
| delay_key_write                 | ON                                                               |
| delayed_insert_limit            | 100                                                              |
| delayed_insert_timeout          | 300                                                              |
| delayed_queue_size              | 1000                                                             |
| div_precision_increment         | 4                                                                |
| keep_files_on_create            | OFF                                                              |
| engine_condition_pushdown       | OFF                                                              |
| expire_logs_days                | 0                                                                |
| flush                           | OFF                                                              |
| flush_time                      | 0                                                                |
| ft_boolean_syntax               | + -><()~*:""&|                                                   |
| ft_max_word_len                 | 84                                                               |
| ft_min_word_len                 | 4                                                                |
| ft_query_expansion_limit        | 20                                                               |
| ft_stopword_file                | (built-in)                                                       |
| group_concat_max_len            | 1024                                                             |
| have_archive                    | YES                                                              |
| have_bdb                        | NO                                                               |
| have_blackhole_engine           | YES                                                              |
| have_compress                   | YES                                                              |
| have_crypt                      | YES                                                              |
| have_csv                        | YES                                                              |
| have_dynamic_loading            | YES                                                              |
| have_example_engine             | NO                                                               |
| have_federated_engine           | YES                                                              |
| have_geometry                   | YES                                                              |
| have_innodb                     | YES                                                              |
| have_isam                       | NO                                                               |
| have_merge_engine               | YES                                                              |
| have_ndbcluster                 | DISABLED                                                         |
| have_openssl                    | DISABLED                                                         |
| have_ssl                        | DISABLED                                                         |
| have_query_cache                | YES                                                              |
| have_raid                       | NO                                                               |
| have_rtree_keys                 | YES                                                              |
| have_symlink                    | YES                                                              |
| hostname                        | app.ic.soschildrensvillages.org.uk                               |
| init_connect                    |                                                                  |
| init_file                       |                                                                  |
| init_slave                      |                                                                  |
| innodb_additional_mem_pool_size | 1048576                                                          |
| innodb_autoextend_increment     | 8                                                                |
| innodb_buffer_pool_awe_mem_mb   | 0                                                                |
| innodb_buffer_pool_size         | 1073741824                                                       |
| innodb_checksums                | ON                                                               |
| innodb_commit_concurrency       | 0                                                                |
| innodb_concurrency_tickets      | 500                                                              |
| innodb_data_file_path           | ibdata1:10M:autoextend                                           |
| innodb_data_home_dir            |                                                                  |
| innodb_adaptive_hash_index      | ON                                                               |
| innodb_doublewrite              | ON                                                               |
| innodb_fast_shutdown            | 1                                                                |
| innodb_file_io_threads          | 4                                                                |
| innodb_file_per_table           | ON                                                               |
| innodb_flush_log_at_trx_commit  | 1                                                                |
| innodb_flush_method             |                                                                  |
| innodb_force_recovery           | 0                                                                |
| innodb_lock_wait_timeout        | 50                                                               |
| innodb_locks_unsafe_for_binlog  | OFF                                                              |
| innodb_log_arch_dir             |                                                                  |
| innodb_log_archive              | OFF                                                              |
| innodb_log_buffer_size          | 8388608                                                          |
| innodb_log_file_size            | 314572800                                                        |
| innodb_log_files_in_group       | 2                                                                |
| innodb_log_group_home_dir       | ./                                                               |
| innodb_max_dirty_pages_pct      | 90                                                               |
| innodb_max_purge_lag            | 0                                                                |
| innodb_mirrored_log_groups      | 1                                                                |
| innodb_open_files               | 300                                                              |
| innodb_rollback_on_timeout      | OFF                                                              |
| innodb_support_xa               | ON                                                               |
| innodb_sync_spin_loops          | 20                                                               |
| innodb_table_locks              | ON                                                               |
| innodb_thread_concurrency       | 8                                                                |
| innodb_thread_sleep_delay       | 10000                                                            |
| interactive_timeout             | 31536000                                                         |
| join_buffer_size                | 2097152                                                          |
| key_buffer_size                 | 8384512                                                          |
| key_cache_age_threshold         | 300                                                              |
| key_cache_block_size            | 1024                                                             |
| key_cache_division_limit        | 100                                                              |
| language                        | /usr/local/mysql-5.0.77-linux-i686-glibc23/share/mysql/english/  |
| large_files_support             | ON                                                               |
| large_page_size                 | 0                                                                |
| large_pages                     | OFF                                                              |
| lc_time_names                   | en_US                                                            |
| license                         | GPL                                                              |
| local_infile                    | ON                                                               |
| locked_in_memory                | OFF                                                              |
| log                             | OFF                                                              |
| log_bin                         | OFF                                                              |
| log_bin_trust_function_creators | OFF                                                              |
| log_error                       |                                                                  |
| log_queries_not_using_indexes   | OFF                                                              |
| log_slave_updates               | OFF                                                              |
| log_slow_queries                | OFF                                                              |
| log_warnings                    | 1                                                                |
| long_query_time                 | 10                                                               |
| low_priority_updates            | OFF                                                              |
| lower_case_file_system          | OFF                                                              |
| lower_case_table_names          | 1                                                                |
| max_allowed_packet              | 67108864                                                         |
| max_binlog_cache_size           | 4294963200                                                       |
| max_binlog_size                 | 1073741824                                                       |
| max_connect_errors              | 10                                                               |
| max_connections                 | 200                                                              |
| max_delayed_threads             | 20                                                               |
| max_error_count                 | 64                                                               |
| max_heap_table_size             | 33554432                                                         |
| max_insert_delayed_threads      | 20                                                               |
| max_join_size                   | 18446744073709551615                                             |
| max_length_for_sort_data        | 1024                                                             |
| max_prepared_stmt_count         | 16382                                                            |
| max_relay_log_size              | 0                                                                |
| max_seeks_for_key               | 4294967295                                                       |
| max_sort_length                 | 1024                                                             |
| max_sp_recursion_depth          | 0                                                                |
| max_tmp_tables                  | 32                                                               |
| max_user_connections            | 0                                                                |
| max_write_lock_count            | 4294967295                                                       |
| multi_range_count               | 256                                                              |
| myisam_data_pointer_size        | 6                                                                |
| myisam_max_sort_file_size       | 2146435072                                                       |
| myisam_recover_options          | OFF                                                              |
| myisam_repair_threads           | 1                                                                |
| myisam_sort_buffer_size         | 8388608                                                          |
| myisam_stats_method             | nulls_unequal                                                    |
| ndb_autoincrement_prefetch_sz   | 1                                                                |
| ndb_force_send                  | ON                                                               |
| ndb_use_exact_count             | ON                                                               |
| ndb_use_transactions            | ON                                                               |
| ndb_cache_check_time            | 0                                                                |
| ndb_connectstring               |                                                                  |
| net_buffer_length               | 16384                                                            |
| net_read_timeout                | 30                                                               |
| net_retry_count                 | 10                                                               |
| net_write_timeout               | 60                                                               |
| new                             | OFF                                                              |
| old_passwords                   | OFF                                                              |
| open_files_limit                | 8192                                                             |
| optimizer_prune_level           | 1                                                                |
| optimizer_search_depth          | 62                                                               |
| pid_file                        | /var/mysql/live/mysqld.pid                                       |
| plugin_dir                      |                                                                  |
| port                            | 3307                                                             |
| preload_buffer_size             | 32768                                                            |
| profiling                       | OFF                                                              |
| profiling_history_size          | 15                                                               |
| protocol_version                | 10                                                               |
| query_alloc_block_size          | 8192                                                             |
| query_cache_limit               | 1048576                                                          |
| query_cache_min_res_unit        | 4096                                                             |
| query_cache_size                | 0                                                                |
| query_cache_type                | ON                                                               |
| query_cache_wlock_invalidate    | OFF                                                              |
| query_prealloc_size             | 8192                                                             |
| range_alloc_block_size          | 4096                                                             |
| read_buffer_size                | 131072                                                           |
| read_only                       | OFF                                                              |
| read_rnd_buffer_size            | 262144                                                           |
| relay_log                       |                                                                  |
| relay_log_index                 |                                                                  |
| relay_log_info_file             | relay-log.info                                                   |
| relay_log_purge                 | ON                                                               |
| relay_log_space_limit           | 0                                                                |
| rpl_recovery_rank               | 0                                                                |
| secure_auth                     | OFF                                                              |
| secure_file_priv                |                                                                  |
| server_id                       | 0                                                                |
| skip_external_locking           | ON                                                               |
| skip_networking                 | OFF                                                              |
| skip_show_database              | OFF                                                              |
| slave_compressed_protocol       | OFF                                                              |
| slave_load_tmpdir               | /tmp/                                                            |
| slave_net_timeout               | 3600                                                             |
| slave_skip_errors               | OFF                                                              |
| slave_transaction_retries       | 10                                                               |
| slow_launch_time                | 2                                                                |
| socket                          | /tmp/mysql_live.sock                                             |
| sort_buffer_size                | 2097152                                                          |
| sql_big_selects                 | ON                                                               |
| sql_mode                        |                                                                  |
| sql_notes                       | ON                                                               |
| sql_warnings                    | OFF                                                              |
| ssl_ca                          |                                                                  |
| ssl_capath                      |                                                                  |
| ssl_cert                        |                                                                  |
| ssl_cipher                      |                                                                  |
| ssl_key                         |                                                                  |
| storage_engine                  | MyISAM                                                           |
| sync_binlog                     | 0                                                                |
| sync_frm                        | ON                                                               |
| system_time_zone                | GMT                                                              |
| table_cache                     | 2048                                                             |
| table_lock_wait_timeout         | 50                                                               |
| table_type                      | MyISAM                                                           |
| thread_cache_size               | 0                                                                |
| thread_stack                    | 196608                                                           |
| time_format                     | %H:%i:%s                                                         |
| time_zone                       | SYSTEM                                                           |
| timed_mutexes                   | OFF                                                              |
| tmp_table_size                  | 33554432                                                         |
| tmpdir                          | /tmp/                                                            |
| transaction_alloc_block_size    | 8192                                                             |
| transaction_prealloc_size       | 4096                                                             |
| tx_isolation                    | REPEATABLE-READ                                                  |
| updatable_views_with_limit      | YES                                                              |
| version                         | 5.0.77                                                           |
| version_comment                 | MySQL Community Server (GPL)                                     |
| version_compile_machine         | i686                                                             |
| version_compile_os              | pc-linux-gnu                                                     |
| wait_timeout                    | 31536000                                                         |
+---------------------------------+------------------------------------------------------------------+
237 rows in set (0.00 sec)

答案1

这听起来很奇怪。我不确定什么可以解决这个问题,但无论你遇到什么问题,我都建议你做几件事。

64位操作系统

Mysql 有相当多的内部 64 位数学运算。在其他条件相同的情况下,它在 64 位操作系统中运行速度总是更快。此外,如果您不辞辛劳地为服务器分配 8GB 内存,32 位 Mysql 仍然只能处理其中的 3GB。您仍可以通过为操作系统提供更多空间来缓存文件等来提高一些性能,但 Mysql 本身不会受益太多。

不要使用 OS 数据库包

尤其是如果您使用的是 Mysql 为其构建包的 disto。Mysql 的最新版本是 5.0.92。虽然我不知道有任何修复,但保持更新是一种很好的做法。Mysql 的更新速度相当快,在主要版本的生命周期中,速度和性能存在巨大差异。

如果我是你,我会启动一个新的 8GB VM 并安装 Mysql 5.0.92。不要忘记安装兼容库,否则 CentOS 会认为你没有安装任何 Mysql 库。我会从原始服务器转储并导入。设置从旧服务器到新服务器的复制,然后测试。一旦看起来不错,就切换。

相关内容