我有一个专用于MySQL的EC2 Large实例。
它将服务于Joomla / Magento组合,所以它融合了InnoDB和MyISAM表格。 我以前只和MyISAM一起工作过,因此不熟悉InnoDB使用的设置。 迄今为止,实验并没有取得丰硕的成果,因为我一直在导致InnoDB引擎被禁用。
我的实例正在运行Ubuntu 10.04 64位服务器版本,并具有约7.5G的RAM。 MySQL目前正在使用〜0.6%,性能稍差。 我想configuration它以尽可能多地使用系统RAM。
testing一些设置我知道InnoDB日志不能总体大于4G。
任何人都可以提供一些基础的InnoDB和MyISAM设置来启动我的。
谢谢Tim
我在EC2上运行同样的Mysql服务器。 不要碰到/etc/mysql/my.cnf,而是把configuration文件放到/etc/mysql/conf.d/中,这样可以让你pipe理你对特定引擎所做的修改,并在你有额外的线索后给pipe理员如何configuration。 此外,它还可以轻松备份您所做的任何更改以及跟踪它们。
/etc/mysql/conf.d/innodb_mysql.cnf
[mysqld] # innodb settings innodb_additional_mem_pool_size = 12M innodb_buffer_pool_size = 2G innodb_file_per_table = 1 innodb_flush_log_at_trx_commit = 2 innodb_lock_wait_timeout = 180 innodb_log_buffer_size = 16M innodb_open_files = 512 innodb_thread_concurrency = 0
大多数这些设置是非常标准的,你一定要看看Percona的build议 。 你的系统可能高达6G,但我会从小开始的。 还有myisam表,我可能会停在4G。 我不会碰到innodb日志文件大小,那里没有什么好处。 增加log_buffer_size和addition_mem_pool在初始碰撞后也有很小的回报。
上面的设置也是为了获得更好的性能,而不是保证事务的一致性 假设你运行的只是一个Web应用程序,以上是好的,但不适用于银行系统。
/etc/mysql/conf.d/general_mysql.cnf
[mysqld] # general settings key_buffer = 384M
key_buffer对myisam和Mysql来说是最有用的。默认情况下,它只有16M,在8GB的机器上是非常小的。 再次,我会从一个好跳转开始,看看你是否得到改善。 请记住,myisam缓冲区和innodb缓冲区不共享,所以他们需要共同less于那么你有RAM的数量。 稍后,您可能还会考虑sorting和读取缓冲区。
我觉得你需要尝试一些不同的(有据可查的)选项,并收集一些统计数据,所以你可以做前后比较,否则你可能觉得你正在帮忙,但可能会受到伤害。
最简单的数据是正确的phpmyadmin,进入phpmyadmin,并从右边框顶部的button中select状态。
另一个体面的工具是https://github.com/rackerhacker/MySQLTuner-perl/blob/master/mysqltuner.pl#(v1.2.0 )
最后启用您的慢查询日志。
我觉得在做出改变之前,获得好的指标是至关重要的,否则,除了坐在座位上,你不能确定是否有帮助。
我觉得把索引添加到经常阅读的所有内容并且很less更新/插入/添加是很好的。
我每天晚上在mysqldumps之后做一个优化表。
你innodb特定的选项是:
spended # [ 14:31. diane@ltk-prod-1 ~]% mysqladmin -u USER -pPASSWD variables | grep -i inno |sed -e 's/ //g'|less Mine are: | innodb_autoinc_lock_mode | 1:: | | 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_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_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_stats_on_metadata | ON:: | | innodb_support_xa | ON:: | | innodb_sync_spin_loops | 20:: | | innodb_table_locks | ON:: | | innodb_thread_concurrency| 8:: | | innodb_thread_sleep_delay| 10000:: | | innodb_use_legacy_cardinality_algorithm | ON:: | enter code here
我build议每次缓冲2倍,并尝试testing查询,
但。 另外,对于某些机器,我用完/ dev / shm(ramdisk)(16gb ram帮助)
然后每天只做3到4次mysqldumps。
对我来说,mysqltuner说,我运行危险的OVER物理ram,但我似乎有一半免费的演出。