Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
wiki:руководство_по_ubuntu_server:базы_данных:mysql [2012/07/15 19:03] [Драйверы базы данных] |
wiki:руководство_по_ubuntu_server:базы_данных:mysql [2013/02/20 10:01] (текущий) [Ссылки] |
||
---|---|---|---|
Строка 55: | Строка 55: | ||
===Создание настроенного файла my.cnf=== | ===Создание настроенного файла my.cnf=== | ||
- | There are a number of parameters that can be adjusted within MySQL's configuration file that will allow you to improve the performance of the server over time. For initial set-up you may find Percona's my.cnf generating tool useful. This tool will help generate a my.cnf file that will be much more optimised for your specific server capabilities and your requirements. | + | Существует ряд параметров, которые могут быть указаны в файле настроек MySQL, что со временем позволит вам повысить производительность вашего сервера. Для начальной настройки вам может пригодиться [[http://tools.percona.com/members/wizard|Percona's my.cnf generating tool]]. Этот инструмент позволит вам создать файл my.cnf более оптимизированный под специфические возможности вашего сервера и ваши требования. |
- | Do not replace your existing my.cnf file with Percona's one if you have already loaded data into the database. Some of the changes that will be in the file will be incompatible as they alter how data is stored on the hard disk and you'll be unable to start MySQL. If you do wish to use it and you have existing data, you will need to carry out a mysqldump and reload: | + | **Не меняйте** ваш существующий файл my.cnf на созданный утилитой, если у вас уже загружены данные в вашу базу данных. Некоторые изменения в этом файле могут быть несовместимы, если вы поменяли то, как хранятся данные на диске, после чего вы не сможете запустить MySQL. Если вы все же решили это сделать и у вас есть данные в базе, вам потребуется выполнить **mysqldump** и загрузить данные повторно: |
- | + | <code>mysqldump --all-databases --all-routines -u root -p > ~/fulldump.sql</code> | |
- | mysqldump --all-databases --all-routines -u root -p > ~/fulldump.sql | + | Эта операция запросит пароль пользователя root перед созданием копии данных. Желательно убедиться, что другие пользователи и процессы не используют базу во время этой операции. В зависимости от количества данных в вашей базе, это может занять длительное время. Вы не увидите ничего на экране во время этого процесса. |
- | + | ||
- | This will then prompt you for the root password before creating a copy of the data. It is advisable to make sure there are no other users or processes using the database whilst this takes place. Depending on how much data you've got in your database, this may take a while. You won't see anything on the screen during this process. | + | |
- | + | ||
- | Once the dump has been completed, shut down MySQL: | + | |
- | + | ||
- | sudo service mysql stop | + | |
- | + | ||
- | Now backup the original my.cnf file and replace with the new one: | + | |
+ | Как только файл выгрузки создан, остановите MySQL: | ||
+ | <code>sudo service mysql stop</code> | ||
+ | Теперь сохраните оригинальный файл my.cnf и замените его на новый: | ||
+ | <code> | ||
sudo cp /etc/my.cnf /etc/my.cnf.backup | sudo cp /etc/my.cnf /etc/my.cnf.backup | ||
sudo cp /path/to/new/my.cnf /etc/my.cnf | sudo cp /path/to/new/my.cnf /etc/my.cnf | ||
- | + | </code> | |
- | Then delete and re-initialise the database space and make sure ownership is correct before restarting MySQL: | + | Затем удалите и создайте заново пространство базы данных, а также убедитесь в корректности его владельца перед запуском MySQL: |
+ | <code> | ||
sudo rm -rf /var/lib/mysql/* | sudo rm -rf /var/lib/mysql/* | ||
sudo mysql_install_db | sudo mysql_install_db | ||
sudo chown -R mysql: /var/lib/mysql | sudo chown -R mysql: /var/lib/mysql | ||
sudo service start mysql | sudo service start mysql | ||
- | + | </code> | |
- | Finally all that's left is to re-import your data. To give us an idea of how far the import process has got you may find the 'Pipe Viewer' utility, pv, useful. The following shows how to install and use pv for this case, but if you'd rather not use it just replace pv with cat in the following command. Ignore any ETA times produced by pv, they're based on the average time taken to handle each row of the file, but the speed of inserting can vary wildly from row to row with mysqldumps: | + | Теперь все, что осталось - это импортировать ваши данные. Чтобы дать нам представление как идет процесс импорта, полезно использовать утилиту %%'Pipe Viewer'%% (pv). Далее показано как установить и использовать **pv** для этого случая, но если вы не хотите ее использовать, просто замените **pv** на **cat** в соответствующей команде. Не обращайте внимание на время ETA (расчетное время окончания), генерируемое pv, поскольку оно основывается на среднем времени обработки каждой записи при сохранении в файл, однако скорость может сильно меняться от записи к записи при использовании **mysqldumps**: |
+ | <code> | ||
sudo apt-get install pv | sudo apt-get install pv | ||
pv ~/fulldump.sql | mysql | pv ~/fulldump.sql | mysql | ||
+ | </code> | ||
+ | Когда все завершится, это будет означать что все получилось! | ||
- | Once that is complete all is good to go! | + | <note>Эта операция не обязательна для всех изменений my.cnf. Многие значения, которые вы захотите поменять для улучшения производительности сработают даже на работающем сервере. Но как всегда не забудьте сделать надежную копию файлов настроек и данных перед внесением изменений.</note> |
- | + | ||
- | This is not necessary for all my.cnf changes. Most of the variables you may wish to change to improve performance are adjustable even whilst the server is running. As with anything, make sure to have a good backup copy of config files and data before making changes. | + | |
===MySQL Tuner=== | ===MySQL Tuner=== | ||
- | MySQL Tuner is a useful tool that will connect to a running MySQL instance and offer suggestions for how it can be best configured for your workload. The longer the server has been running for, the better the advice mysqltuner can provide. In a production environment, consider waiting for at least 24 hours before running the tool. You can get install mysqltuner from the Ubuntu repositories: | + | **MySQL Tuner** - это полезный инструмент, который подсоединяется к работающему MySQL и предлагает варианты как можно улучшить настройки для вашей рабочей нагрузки. Чем дольше работает сервер, тем лучше рекомендации предоставит **mysqltuner**. Для рабочего окружения подождите как минимум 24 часа прежде чем запускать утилиту. Вы можете установить **mysqltuner** из хранилища Ubuntu: |
- | + | <code>sudo apt-get install mysqltuner</code> | |
- | sudo apt-get install mysqltuner | + | После установки запустите ее: |
- | + | <code>mysqltuner</code> | |
- | Then once its been installed, run it: | + | и ждите ее финального отчета. Верхняя секция предоставляет общую информацию а сервере баз данных, а нижняя часть содержит рекомендации по настройке, необходимые для изменения вашего my.cnf. Многие из них могут быть поправлены вживую на сервере без перезагрузки. Смотрите официальную документацию MySQL (указанную в разделе [[#ссылки|Ссылки]]) для перечня параметров, изменяемых %%"налету"%%. Далее часть примерного отчета по работающей базе, который показывает, что можно извлечь некоторую пользу от увеличения размера кэша запросов: |
- | + | <code> | |
- | mysqltuner | + | |
- | + | ||
- | and wait for its final report. The top section provides general information about the database server, and the bottom section provides tuning suggestions to alter in your my.cnf. Most of these can be altered live on the server without restarting, look through the official MySQL documentation (link in Resources section) for the relevant variables to change in production. The following is part of an example report from a production database which shows there may be some benefit from increasing the amount of query cache: | + | |
-------- Recommendations ----------------------------------------------------- | -------- Recommendations ----------------------------------------------------- | ||
General recommendations: | General recommendations: | ||
Строка 109: | Строка 101: | ||
table_cache (> 64) | table_cache (> 64) | ||
innodb_buffer_pool_size (>= 22G) | innodb_buffer_pool_size (>= 22G) | ||
- | + | </code> | |
- | One final comment on tuning databases: Whilst we can broadly say that certain settings are the best, performance can vary from application to application. For example, what works best for Wordpress might not be the best for Drupal, Joomla or proprietary applications. Performance is dependent on the types of queries, use of indexes, how efficient the database design is and so on. You may find it useful to spend some time searching for database tuning tips based on what applications you're using it for. Once you get past a certain point any adjustments you make will only result in minor improvements, and you'll be better off either improving the application, or looking at scaling up your database environment through either using more powerful hardware or by adding slave servers. | + | **//Один финальный комментарий по настройке базы данных//**: Хотя мы можем утверждать что определенные настройки самые лучшие, производительность может изменяться от приложения к приложению. Например, что работает великолепно для Wordpress, может оказаться не лучшим для Drupal, Joomla или проприетарных приложений. Производительность зависит от типов запросов, использования индексов, насколько эффективно спроектирована база данных и т.д. Вы можете посчитать полезным потратить некоторое время на поиск настроек базы данных под используемые вами приложения. Как только вы пройдете определенную точку, любые ваши изменения будут приводить к минимальным улучшениям и вам будет лучше либо заняться улучшением ваших приложений, либо масштабировать вашу базу данных, используя более производительное оборудование или добавляя зависимые сервера. |
====Ссылки==== | ====Ссылки==== | ||
- | See the MySQL Home Page for more information. | + | -- Смотрите [[http://www.mysql.com/|домашнюю страницу MySQL]] для дополнительной информации. |
- | + | -- Полная документация доступна в форматах как онлайн, так и оффлайн по ссылке [[http://dev.mysql.com/doc/|MySQL Developers portal]]. | |
- | Full documentation is available in both online and offline formats from the MySQL Developers portal | + | -- Для общей информации по SQL смотрите [[http://www.informit.com/store/product.aspx?isbn=0768664128|Using SQL Special Edition]] от Rafe Colburn. |
- | + | -- Страница [[https://help.ubuntu.com/community/ApacheMySQLPHP|Apache MySQL PHP Ubuntu Wiki]] также содержит полезную информацию. | |
- | For general SQL information see Using SQL Special Edition by Rafe Colburn. | + | |
- | + | ||
- | The Apache MySQL PHP Ubuntu Wiki page also has useful information. | + | |
---- | ---- |