MySQL Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:руководство_по_ubuntu_server:базы_данных:mysql [2012/07/15 19:00]
[Движки базы данных]
wiki:руководство_по_ubuntu_server:базы_данных:mysql [2013/02/20 10:01] (текущий)
[Ссылки]
Строка 38: Строка 38:
 ====Драйверы базы данных==== ====Драйверы базы данных====
  
-Хотя конфигурация по умолчанию для MySQL, предоставляемая пакетами Ubuntu имеет великолепную функциональность и работает достаточно хорошо,​ есть некоторые вещи, которые вы можете решить до того как продолжить.+Хотя конфигурация по умолчанию для MySQL, предоставляемая пакетами Ubuntuимеет великолепную функциональность и работает достаточно хорошо,​ есть некоторые вещи, которые вы можете решить до того как продолжить.
  
-MySQL разработан так, что позволяет хранить данные по-разному. Эти варианты относятся к драйверам (управляющим модулям - engines) как баз данных,​ так и хранилищ. Существует два основных драйвера,​ которые вам могут быть интересны:​ InnoDB и MyISAM. Драйверы хранилищ прозрачны (незаметны) конечным пользователям. MySQL управляет событиями по-разному на нижнем уровне,​ но независимо от того, какая система хранения данных используется,​ вы будете взаимодействовать с базой одним и тем же способом.+MySQL разработан так, что позволяет хранить данные по-разному. Эти варианты относятся к драйверам (управляющим модулям - engines) как баз данных,​ так и хранилищ. Существует два основных драйвера,​ которые вам могут быть интересны: ​**InnoDB** и **MyISAM**. Драйверы хранилищ прозрачны (незаметны) конечным пользователям. MySQL управляет событиями по-разному на нижнем уровне,​ но независимо от того, какая система хранения данных используется,​ вы будете взаимодействовать с базой одним и тем же способом.
  
 Каждый драйвер имеет свои преимущества и недостатки. Каждый драйвер имеет свои преимущества и недостатки.
Строка 49: Строка 49:
   -- **InnoDB** - более современный драйвер,​ созданный по принципам [[http://​ru.wikipedia.org/​wiki/​ACID|ACID]],​ что гарантирует надежную обработку транзакций базы данных. Блокировка записи производится на уровне одной записи в таблице. Это означает возможность нескольких изменений в одной таблице одновременно. Кэширование данных происходит также и в оперативной памяти внутри драйвера базы данных,​ позволяя кэшировать более эффективно чем на уровне блоков файлов. В соответствии с **ACID** все транзакции журналируются независимо от основных таблиц. Это позволяет намного более надежно восстанавливать данные при проверке целостности данных.   -- **InnoDB** - более современный драйвер,​ созданный по принципам [[http://​ru.wikipedia.org/​wiki/​ACID|ACID]],​ что гарантирует надежную обработку транзакций базы данных. Блокировка записи производится на уровне одной записи в таблице. Это означает возможность нескольких изменений в одной таблице одновременно. Кэширование данных происходит также и в оперативной памяти внутри драйвера базы данных,​ позволяя кэшировать более эффективно чем на уровне блоков файлов. В соответствии с **ACID** все транзакции журналируются независимо от основных таблиц. Это позволяет намного более надежно восстанавливать данные при проверке целостности данных.
  
-Начиная MySQL 5.5 InnoDB является драйвером по умолчанию и настоятельно рекомендуется вместо MyISAM, если только у вас нет специфических потребностей,​ уникальных для этого драйвера.+Начиная MySQL 5.5 **InnoDB** является драйвером по умолчанию и настоятельно рекомендуется вместо ​**MyISAM**, если только у вас нет специфических потребностей,​ уникальных для этого драйвера.
  
 ====Расширенные настройки==== ====Расширенные настройки====
Строка 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 timeFor initial set-up you may find Percona'​s my.cnf generating tool usefulThis 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 databaseSome 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 datayou 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 dataIt is advisable to make sure there are no other users or processes using the database whilst this takes placeDepending on how much data you've got in your databasethis may take a whileYou 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 dataTo give us an idea of how far the import process has got you may find the 'Pipe Viewer' ​utility, ​pv, usefulThe following shows how to install and use pv for this casebut if you'd rather not use it just replace ​pv with cat in the following commandIgnore any ETA times produced by pv, they'​re based on the average time taken to handle each row of the filebut 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 ​changesMost of the variables you may wish to change to improve performance are adjustable even whilst the server is running. As with anythingmake 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 workloadThe longer the server has been running forthe better the advice ​mysqltuner ​can provideIn a production environment,​ consider waiting for at least 24 hours before running the toolYou 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 reportThe top section provides general information about the database serverand 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 sectionfor the relevant variables to change in productionThe 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 databasesWhilst we can broadly say that certain settings are the bestperformance can vary from application to applicationFor examplewhat works best for Wordpress ​might not be the best for Drupal, Joomla ​or proprietary applicationsPerformance is dependent on the types of queriesuse of indexeshow efficient the database design is and so onYou may find it useful to spend some time searching for database tuning tips based on what applications you're using it forOnce you get past a certain point any adjustments you make will only result in minor improvementsand you'll be better off either improving the applicationor 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.+
  
 ---- ----