установка и запуск mysql, оптимизиция производительности
базы будем держать в /home/mysql
echo "mysql_dbdir="/home/mysql/"" >> /etc/rc.conf
копируем my.cnf
mkdir /home/mysql/tmp
chown -R mysql /home/mysql/
chmod -R 755 /home/mysql/
Конфига мускула зависят от размера базы, размера оперативы, характера нагрузки и тд.
Но для сервака порядка Xeon 5150 / 2GB и средней нагрузки можно для начала так:
bind-address = 127.0.0.1
datadir=/home/mysql/myisam
port = 3306
socket = /tmp/mysql.sock
skip-locking
key_buffer = 128M
max_allowed_packet = 8M
table_cache = 1024
sort_buffer_size = 32M
read_buffer_size = 32M
read_rnd_buffer_size = 16M
myisam_sort_buffer_size = 64M
thread_cache_size = 30
query_cache_size = 128M
join_buffer_size = 8M
max_connections = 100
max_connect_errors=10000
thread_concurrency = 4 #Try number of CPU's*2 for thread_concurrency
net_buffer_length = 32K
expire_logs_days = 10
log_warnings = 1
wait_timeout = 100
interactive_timeout = 100
concurrent_insert = 2
tmp_table_size = 32M
max_heap_table_size = 32M
myisam-recover=backup,force
tmpdir = /home/mysql/tmp/
Для выявление тормозных запросов можно использовать slow log, mytop.
Посмотреть эффективность кэширование:
Qcache_free_blocks показывает сколько свободных блоков есть в кеше;
Qcache_total_blocks – количество занятых блоков;
Qcache_free_memory говорит о том, сколько свободной памяти осталось в кеше;
Qcache_hits – количество запросов, результаты которых были взяты из кеша;
Qcache_inserts – количество запросов, которые были добавлены в кеш;
Qcache_lowmem_prunes – количество запросов, которые были удалены из кеша из-за нехватки памяти;
Qcache_not_cached – количество запросов, которые не были записаны в кеш из-за использования функций работы со временем и т.п.;
Qcache_queries_in_cache – количество запросов, которые находятся в кеше.
После начала эксплуатации еще хорошо посмотреть что о настройках скажет
Оптимизация таблиц:
Важный момент (FreeBSD):
Необходимо следить, чтобы размер процесса mysqld не превысил максимального размера памяти доступного для одного процесса. Если используется FreeBSD c архитектурой i386, то по умолчанию этот размер равен 512MB. Если произойдет превышение, то в логе мускуля будут такие сообщения: “/usr/local/libexec/mysqld: Out of memory (Needed 2375270 bytes)”. Чтобы увеличить это значение необходимо сделать kern.maxdsiz=1073741824 в /boot/loader.conf
Посчитать объем памяти, который займет mysqld можно по этой формуле: key_buffer_size + (read_buffer_size + sort_buffer_size)*max_connections
