MySQL - 转移到性能较低的服务器,我可以将其调到多小?

MySQL - 转移到性能较低的服务器,我可以将其调到多小?

我已经运营一个网站几年了,但网站的流量并没有增长,我想节省一些托管费用,但为了网站和 API 的忠实用户,让它继续运行。

该数据库有一个近400万行的表,位于4 GB双Xeon 5320服务器上。

当我使用 检查此服务器上的服务器统计信息时ps -aux,我得到 MySQL 以大约 11% 的容量运行的结果,因此负载不大。针对 MySQL 的主要查询运行时间约为 0.45 秒。

我访问了 linode.com,想看看他们的一个小盒子能提供什么样的性能,他们的 360 MB RAM XEN VPS 在 20 秒内返回了相同的查询。

显然不够好。

我查看了 MySQL 变量,它们非常相似(如果有人感兴趣的话,我在下面包含了显示变量的输出)。

是否有一个好的方法可以根据我的来源来决定需要什么大小的服务器?

是 RAM 可能导致表尺寸变大而产生差异吗?

有没有什么办法可以帮助我确定理想的 RAM 大小?

这是显示变量的输出(虽然我不确定它是否重要)。

+---------------------------------+------------------------------------------------------------+
| Variable_name                   | Value                                                      |
+---------------------------------+------------------------------------------------------------+
| auto_increment_increment        | 1                                                          |
| auto_increment_offset           | 1                                                          |
| automatic_sp_privileges         | ON                                                         |
| back_log                        | 50                                                         |
| basedir                         | /usr/                                                      |
| bdb_cache_size                  | 8384512                                                    |
| bdb_home                        | /var/lib/mysql/                                            |
| bdb_log_buffer_size             | 262144                                                     |
| bdb_logdir                      |                                                            |
| bdb_max_lock                    | 10000                                                      |
| bdb_shared_data                 | OFF                                                        |
| bdb_tmpdir                      | /tmp/                                                      |
| binlog_cache_size               | 32768                                                      |
| 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/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/lib/mysql/                                            |
| 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                    | NO                                                         |
| have_bdb                        | YES                                                        |
| have_blackhole_engine           | NO                                                         |
| have_compress                   | YES                                                        |
| have_crypt                      | YES                                                        |
| have_csv                        | NO                                                         |
| have_dynamic_loading            | YES                                                        |
| have_example_engine             | NO                                                         |
| have_federated_engine           | NO                                                         |
| have_geometry                   | YES                                                        |
| have_innodb                     | YES                                                        |
| have_isam                       | NO                                                         |
| have_merge_engine               | YES                                                        |
| have_ndbcluster                 | NO                                                         |
| have_openssl                    | DISABLED                                                   |
| have_ssl                        | DISABLED                                                   |
| have_query_cache                | YES                                                        |
| have_raid                       | NO                                                         |
| have_rtree_keys                 | YES                                                        |
| have_symlink                    | YES                                                        |
| hostname                        | li130-17                                                   |
| 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         | 8388608                                                    |
| 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           | OFF                                                        |
| 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          | 1048576                                                    |
| innodb_log_file_size            | 5242880                                                    |
| 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             | 28800                                                      |
| join_buffer_size                | 131072                                                     |
| key_buffer_size                 | 8384512                                                    |
| key_cache_age_threshold         | 300                                                        |
| key_cache_block_size            | 1024                                                       |
| key_cache_division_limit        | 100                                                        |
| language                        | /usr/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          | 0                                                          |
| max_allowed_packet              | 1048576                                                    |
| max_binlog_cache_size           | 4294963200                                                 |
| max_binlog_size                 | 1073741824                                                 |
| max_connect_errors              | 10                                                         |
| max_connections                 | 100                                                        |
| max_delayed_threads             | 20                                                         |
| max_error_count                 | 64                                                         |
| max_heap_table_size             | 16777216                                                   |
| max_insert_delayed_threads      | 20                                                         |
| max_join_size                   | 4294967295                                                 |
| 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                                              |
| net_buffer_length               | 16384                                                      |
| net_read_timeout                | 30                                                         |
| net_retry_count                 | 10                                                         |
| net_write_timeout               | 60                                                         |
| new                             | OFF                                                        |
| old_passwords                   | ON                                                         |
| open_files_limit                | 1024                                                       |
| optimizer_prune_level           | 1                                                          |
| optimizer_search_depth          | 62                                                         |
| pid_file                        | /var/run/mysqld/mysqld.pid                                 |
| plugin_dir                      |                                                            |
| port                            | 3306                                                       |
| 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                          | /var/lib/mysql/mysql.sock                                  |
| sort_buffer_size                | 2097144                                                    |
| 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                | UTC                                                        |
| table_cache                     | 64                                                         |
| 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_bdb                     | Sleepycat Software: Berkeley DB 4.1.24: (January 29, 2009) |
| version_comment                 | Source distribution                                        |
| version_compile_machine         | i686                                                       |
| version_compile_os              | redhat-linux-gnu                                           |
| wait_timeout                    | 28800                                                      |
+---------------------------------+------------------------------------------------------------+
239 rows in set (0.00 sec)

由于某种原因,预览时表格格式正确,但在查看问题时显然不正确。希望它不是必需的。

答案1

内存可能是这里最大的问题。我会检查当前使用的内存使用情况,并确保该部分有一定的增长空间。

一旦您发现当前消耗的内存,您可以尝试在新服务器上增加相同的内存量并测试该查询。

科斯塔

答案2

这在很大程度上取决于数据库的大小(磁盘大小会给出一个非常粗略但通常足够好的概念)以及需要多少内存才能将所有数据保存在内存中。

数据库表的表类型也有很大帮助。MyISAM(直到最新版本的 MySQL 都是默认的表类型)不会将实际的数据库行保存在内存中(它们可能会保存,但这取决于操作系统)。因此,如果您有 200MB 的 .MYD 文件,您可能只需要几百 MB 即可将它们存储在内存中 - 如果将它们转换为 INNODB,并且数据库服务器的其他部分和 Web 服务器的其他部分的开销很小。

仔细调整服务器的内存使用量,以及关闭不需要的功能(例如二进制日志和 DBD 引擎),这样可以做更多的事情,同时减少内存浪费。通常,如果您可以将整个数据库保存在内存中,并且写入次数更少,那么在更大的机器上,速度可能会比以前更快。在小型机器上,访问磁盘获取数据库内容的速度会慢得多。

还有各种脚本可以帮助您调整 Mysql 使用的内存量。

答案3

如果可能,创建一个虚拟机来复制您目前拥有的。在确保您获得接近相同水平的性能后,关闭机器并减少其资源。重新启动它并查看您拥有的资源。重复此操作,直到您认为性能低到您准备接受的程度。这应该可以让您了解您在 VPS 上需要什么。

答案4

我建议,在进一步操作之前,您应该考虑优化 MySQL 服务器、表和查询(如果您还没有这样做的话)。通过彻底优化,您可能会在配置相当低的机器上获得足够的性能。

相关内容