Тонкая настройка mysql во freebsd
В данной заметке приведу пример настройки mysql на сервере под управлением FreeBSD 8.2-RELEASE архитектуры amd64. На момент написания статьи версия СУБД была mysql-server-5.5.17. |
С установкой проблем возникнуть не должно. Сперва необходимо обновить дерево портов, перейти в каталог установки mysql-server, выбрать необходимые опции установки, произвести собственно установку.
# portsnap fetch update # cd /usr/ports/databases/mysql55-server # make config # make install clean
Список опций невелик (нажмите для увеличения):
Установка серверной части mysql повлечет за собой автоматическую установку клиентской части: mysql-client-5.5.17. От вас потребуется только выбрать интересующие вас опции в окне (нажмите для увеличения):
После завершения установки, вас предупредят о необходимости запустить команду mysql_upgrade
(опционально с флагом --datadir=<dbdir>
), чтобы проапгрейдить существующие базы данных, работающие с более ранней версией mysql-server (если к вам это применимо).
Теперь необходимо занести в ваш rc.conf строку mysql_enable=“YES”, для автоматического старта mysql-server при запуске сервера.
# nano -w /etc/rc.conf ... mysql_enable="YES" ...
или просто сделайте echo 'mysql_enable="yes"' >> /etc/rc.conf
Теперь вам необходимо, в зависимости от предполагаемой нагрузки на сервер, выбрать один из конфигурационных файлов, находящихся в /usr/local/share/mysql
, и скопировать его в /var/db/mysql
:
# ls /usr/local/share/mysql/ | grep my- my-huge.cnf my-innodb-heavy-4G.cnf my-large.cnf my-medium.cnf my-small.cnf # cp /usr/local/share/mysql/my-large.cnf /var/db/mysql/my.cnf
Для того, чтобы заставить mysql писать лог, нам необходимо выполнить следующие операции. Создать файл для логирования, присвоить ему соответствующие права, прописать его расположение в my.cnf, настроить newsyslog для ротации этого файла.
# touch /var/log/mysqld.log # chmod 0600 /var/log/mysqld.log # chown mysql:mysql /var/log/mysqld.log # echo '/var/log/mysqld.log mysql:mysql 600 7 * @T00 JC /var/db/mysql/hostname.pid' >> /etc/newsyslog.conf
Замените hostname
на hostname своего сервера. Теперь с помощью вашего любимого редактора занесем в my.cnf следующие строки:
# nano -w /var/db/mysql/my.cnf ... [safe_mysqld] err-log=/var/log/mysqld.log ...
Если ваш mysql-server работает в автономном режиме (standalone) и вы не планируете делать репликации на сервер-партнер, то закомментируйте в своем my.cnf следующие строки (чтобы не плодить не нужных бинарных логов):
# nano -w /var/db/mysql/my.cnf ... # Replication Master Server (default) # binary logging is required for replication #log-bin=mysql-bin # binary logging format - mixed recommended #binlog_format=mixed ...
Также, если вы хотите, чтобы mysql-server работал на каком-то определенном сетевом интерфейсе, а не на всех, внесите в ваш my.cnf в секцию [mysqld]
параметр bind_address:
# nano -w /var/db/mysql/my.cnf ... port = 3306 bind_address = 127.0.0.1 socket = /tmp/mysql.sock ...
Настал момент для запуска вашего mysql-server командой:
# /usr/local/etc/rc.d/mysql-server start
Во время первого запуска mysql-server сам проинициализирует свои каталоги, находящиеся в /var/db/mysql. Проверить работу mysql-server можно командой:
# netstat -tan | grep 3306 tcp4 0 0 127.0.0.1.3306 *.* LISTEN
Если вы получили то же самое, значит все в порядке и ваш сервер mysql запущен. Если же нет, то вам необходимо изучить файл /var/db/mysql/hostname.err
(hostname будет ваш), на предмет ошибок и предупреждений. Если сервер запущен, то этот лог должен выглядеть примерно так:
# less /var/db/mysql/hostname.err 111212 13:45:08 mysqld_safe Starting mysqld daemon with databases from /var/db/mysql 111212 13:45:08 InnoDB: The InnoDB memory heap is disabled 111212 13:45:08 InnoDB: Mutexes and rw_locks use GCC atomic builtins 111212 13:45:08 InnoDB: Compressed tables use zlib 1.2.3 111212 13:45:08 InnoDB: Initializing buffer pool, size = 128.0M 111212 13:45:08 InnoDB: Completed initialization of buffer pool 111212 13:45:08 InnoDB: highest supported file format is Barracuda. 111212 13:45:09 InnoDB: Waiting for the background threads to start 111212 13:45:10 InnoDB: 1.1.8 started; log sequence number 1595675 111212 13:45:10 [Note] Event Scheduler: Loaded 0 events 111212 13:45:10 [Note] /usr/local/libexec/mysqld: ready for connections.
еперь надо проделать очень важную операцию – задать пароль root’а для mysql-server. Делается это так:
# mysqladmin -u root -h localhost password 'swordfish'
где:
- параметр -u указывает пользователя, который будет входить в систему (в данном случае – root);
- параметр -h указывает узел сети (обычно это localhost, если вы настраиваете не удаленный сервер);
- swordfish замените на необходимый вам пароль (запомните его).
Теперь, чтобы каждый раз, работая с mysql-server, не вводить этот пароль, сделаем следующее: в домашнем каталоге /root создадим файл .my.cnf, сделаем его доступным только root’у и внесем в этот файл пароль root’а на mysql-server.
# touch /root/.my.cnf # chmod 0600 /root/.my.cnf # nano -w /root/.my.cnf [client] password=swordfish
Не забудьте заменить swordfish
на свой собственный пароль.
Нам осталось зайти в консоль mysql и выполнить какую-нибудь команду (просмотрим список существующих баз командой show databases;) для проверки работоспособности:
# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.5.17 Source distribution Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; ---------------------- | Database | ---------------------- | information_schema | | mysql | | performance_schema | | test | ---------------------- 4 rows in set (0.01 sec) mysql> quit; Bye #
Проконтролировать работу своего mysql-server вы можете в любой момент командой:
# mysqladmin status Uptime: 266352 Threads: 3 Questions: 3699010 Slow queries: 3 Opens: 244 Flush tables: 25 Open tables: 22 Queries per second avg: 13.887
Вот в принципе и все. Удачи!