<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Одминский блог &#187; Базы данных</title>
	<atom:link href="http://odminblog.ru/partition/dbases/feed/" rel="self" type="application/rss+xml" />
	<link>http://odminblog.ru</link>
	<description>Блог о технологиях, технократии и методиках борьбы с граблями</description>
	<lastBuildDate>Fri, 03 Feb 2012 14:32:58 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Настраиваем MySQL для работы на VPS с 512Mb RAM</title>
		<link>http://odminblog.ru/nastraivaem-mysql-dlya-raboty-na-vps-s-512mb-ram/</link>
		<comments>http://odminblog.ru/nastraivaem-mysql-dlya-raboty-na-vps-s-512mb-ram/#comments</comments>
		<pubDate>Sat, 08 Oct 2011 00:48:57 +0000</pubDate>
		<dc:creator>anchous</dc:creator>
				<category><![CDATA[Базы данных]]></category>
		<category><![CDATA[Сайты и их проблемы]]></category>
		<category><![CDATA[Хостинг]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[сайты]]></category>
		<category><![CDATA[хостинг]]></category>

		<guid isPermaLink="false">http://odminblog.ru/?p=1631</guid>
		<description><![CDATA[Прикупил я тут клиенту хостинг под его новый сайт. Поскольку была необходимость в прикручивании библиотеки ffmpeg на сайт под Drupal, для того чтобы видюшки конвертились сами во флешки при добавлении, хотя для меня это не убедительно, так как на локальном компе можно нормально законвертить ручками. Ну вообщем по причине наличия ffmpeg решил взять самый дешевый [...]]]></description>
			<content:encoded><![CDATA[<p>Прикупил я тут клиенту хостинг под его новый сайт. Поскольку была необходимость в прикручивании библиотеки ffmpeg на сайт под Drupal, для того чтобы видюшки конвертились сами во флешки при добавлении, хотя для меня это не убедительно, так как на локальном компе можно нормально законвертить ручками. Ну вообщем по причине наличия ffmpeg решил взять самый дешевый <a href="http://odminblog.ru/hostings/burstnet/">VPS за 5,95$ у Burst.NET</a> с 512 оперативы, 1MHz, 20Gb HDD, 10Tb трафа и 2IP + Direct Admin за 7$, так как настраивать руками меня ломало.</p>
<p>Взять то я его взял, но вебмастера не могли ничего делать, так как на любую операцию система ругалась:<br />
<strong>ERROR 1135 (HY000): Can&#8217;t create a new thread (errno 11); if you are not out of available memory</strong><strong><br />
gzip: error while loading shared libraries: cannot create cache for search path: Cannot allocate memory</strong><br />
подключившись, я обнаружил что при попытке логина по ssh вылетала ошибка:<br />
<strong>bash: fork: Cannot allocate memory</strong></p>
<p><strong><span id="more-1631"></span></strong>То бишь сделать ничего мог, так что отписался суппорту, что вот есть проблема с серваком. так что решите плиз. Суппорт же начал меня грузить на предмет того, что мне надо с апгрейтиться до 1Gb чтобы у меня все стало отлично, так как ось и Direct Admin отжирают все 512Mb. Я же давил на то, что top, к которому я таке смог пробиться показывает что занято всего 42% памяти и значит парни не тока оверселят, но еще и оверлодят память.</p>
<p>В таком духе мы препирались часов 5, поскольку мне некогда было лезть и особо разбираться. Я пару раз обложил в сердцах суппорт матюгами, после чего они начинали шевелиться быстрее, но все равно начинали втулять мне необходимость покупки 1Gb. Хотя по началу я хотел забрать бабло, накатать абузу в палку, в итоге во втором часу решил все таки глянуть более предметно, что происходит. Кстати в этом ключе- суппорт вещь такая- буквально в парралель  меня упал мой VPS и если честно я решил что это месть Burst, но оказалось что там была проблема с диском и другой чувак мне все замечательно и быстро решил, тем более что я конечно нервничал, так как буквально на этой неделе запилил два симпотных сайта, а бэкап датировался естественно началом сентября. <img src='http://odminblog.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Ну вообщем сунулся кое как в сервак и понял, что мускуль кушает под себя 360Mb, так как грузится без файла конфигурации. Уж не знаю- толи забыли создать при первоначальной настройке, толи удалили в сердцах вебмастера, но пришлось озадачиться тюнингом MySQL под сервер с 512M, поместив в файл /etc/my.cnf следующие строки:<br />
<strong>[mysqld]<br />
local-infile=0<br />
socket = /var/lib/mysql/mysql.sock<br />
max_connections=300<br />
slow-query-log<br />
query_cache_limit=16M<br />
query_cache_size=32M<br />
key_buffer=16M<br />
sort_buffer=64M<br />
read_buffer = 2M<br />
read_rnd_buffer_size = 768k<br />
read_buffer_size=64M<br />
max_allowed_packet=16M<br />
thread_stack = 128K<br />
skip-innodb<br />
table_cache = 64M</strong><br />
Поскольку у меня оказалась InnoDB (правда не совсем понятно с какой целью мне ее прикрутили, хотя вебмастеров по форумам я именно ей и пугал при разговорах о горячем бэкапе), то пришлось поиграться с её параметрами, так как стандартные в 50-80% от RAM для innodb_buffer_pool_size забивали систему под 500 Mb, и в этом случае параметр skip-innodb убирается<br />
<strong>innodb_buffer_pool_size=16M<br />
innodb_additional_mem_pool_size=8M<br />
</strong><br />
После перезагрузки система зашуршала, отбирая под себя 440Mb.</p>
<p>Пришлось еще повыкидывать несколько параметров, так что файл приобрел вид:<br />
<strong>[mysqld]<br />
local-infile=0<br />
max_connections=300<br />
read_buffer_size=1M<br />
sort_buffer=1M<br />
log-slow-queries<br />
query_cache_limit=256K<br />
key_buffer=1M<br />
innodb_buffer_pool_size=16M<br />
innodb_additional_mem_pool_size=8M<br />
max_allowed_packet=16M<br />
</strong><br />
После чего система стартанула уже с 350Mb, с которыми уже можно было в принципе жить.</p>
<p>Хостинг конечно хороший, но как попадешь на тупаря в суппорте, так хоть стой, хоть падай.</p>
<div id="crp_related"><h3>Читать еще:</h3><ul><li><a href="http://odminblog.ru/ustanovka-servera-baz-dannyx-mysql-na-centos/" rel="bookmark" class="crp_title">Установка сервера баз данных mySQL на CentOS</a></li><li><a href="http://odminblog.ru/novyj-xosting-novye-problemy/" rel="bookmark" class="crp_title">Новый хостинг, новые проблемы</a></li><li><a href="http://odminblog.ru/pereezd-na-novyj-xosting-burst-net/" rel="bookmark" class="crp_title">Переезд на новый хостинг Burst.NET</a></li><li><a href="http://odminblog.ru/mysql-server-install/" rel="bookmark" class="crp_title">Установка сервера БД MySQL</a></li><li><a href="http://odminblog.ru/restore-joomla-password-to-mysql/" rel="bookmark" class="crp_title">Восстановление пароля Joomla к MySQL</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://odminblog.ru/nastraivaem-mysql-dlya-raboty-na-vps-s-512mb-ram/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Настройка скриптов для импорта баз данных в mysql</title>
		<link>http://odminblog.ru/nastrojka-skriptov-dlya-importa-baz-dannyx-v-mysql/</link>
		<comments>http://odminblog.ru/nastrojka-skriptov-dlya-importa-baz-dannyx-v-mysql/#comments</comments>
		<pubDate>Sun, 17 Jul 2011 14:27:54 +0000</pubDate>
		<dc:creator>anchous</dc:creator>
				<category><![CDATA[Базы данных]]></category>
		<category><![CDATA[Сайты и их проблемы]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[сайты]]></category>
		<category><![CDATA[техподдержка]]></category>

		<guid isPermaLink="false">http://odminblog.ru/?p=1374</guid>
		<description><![CDATA[Данный пост является продолжением темы с импортом больших баз данных в mysql и здесь я расскажу как именно надо настроить скрипт для импорта базы данных.
Процедура установки обоих скриптов проста и начинается с их редактирования, после чего скрипты закачиваются на хост, куда, в ту же папку, кладется и выгрузка из базы данных, которую нам необходимо импортировать [...]]]></description>
			<content:encoded><![CDATA[<p>Данный пост является продолжением <a title="импортирование больших баз данных в mysql" href="http://odminblog.ru/kak-importirovat-bolshu-bazu-dannyx-v-mysql/">темы с импортом больших баз данных в mysql</a> и здесь я расскажу как именно надо настроить скрипт для импорта базы данных.</p>
<p>Процедура установки обоих скриптов проста и начинается с их редактирования, после чего скрипты закачиваются на хост, куда, в ту же папку, кладется и выгрузка из базы данных, которую нам необходимо импортировать в новую базу на сервере mysql. На скрипт устанавливаем права доступа 755.<br />
Теперь немного подробнее о настройке каждой из программ:</p>
<p><strong>1. BigDump</strong><br />
Открываем файл скрипта bigdump.php, в котором отыскиваем и меняем следующие строки на необходимые значения<br />
$db_server   = &#8216;localhost&#8217;;<br />
$db_name     = &#8216;DB_NAME&#8217;;<br />
$db_username = &#8216;DB_USER&#8217;;<br />
$db_password = &#8216;DB_PASSWORD&#8217;;<br />
$filename           = &#8216;OUR_DUMP.SQL&#8217;; /* Наш дамп базы данных который мы выгрузили вместе со скриптом*/<br />
$db_connection_charset = &#8216;Charset&#8217;; /*Поскольку мы работаем с русскими базами, то вероятнее всего это utf8 или cp1251*/</p>
<p>После этого открываем в бродилке скрипт хттп://наш-сайт/папка/bigdump.php и видим свой файлец, после чего наживаем на линк Start import</p>
<p><strong>2. Sypex Dumper</strong><br />
С этим скриптом еще проще, так как у него есть графический интерфейс, через который можно вводить все данные, а также делать экспорт и импорт баз данных. Собственно заливаем файлец скрипта dumper.php на хостинг, но с одной оговоркой- опять же в плане кодировок. По умолчанию скрипт работает с cp1251, так что если надо залить utf-8, то добавляем в следующую строку параметр принудительной замены кодировки:<br />
define(&#8216;RESTORE_CHARSET&#8217;, &#8216;forced-&gt;utf8&#8242;);</p>
<p>После чего коннектимся через бродилку хттп://наш-сайт/папка/dumper.php<br />
вводим логин на базу данных сайта и получаем возможность как импортировать нужную нам базу данных, так и экспортировать.</p>
<div id="crp_related"><h3>Читать еще:</h3><ul><li><a href="http://odminblog.ru/kak-importirovat-bolshu-bazu-dannyx-v-mysql/" rel="bookmark" class="crp_title">Как импортировать большую базу данных в mysql</a></li><li><a href="http://odminblog.ru/ustanovka-servera-baz-dannyx-mysql-na-centos/" rel="bookmark" class="crp_title">Установка сервера баз данных mySQL на CentOS</a></li><li><a href="http://odminblog.ru/defrag-innodb/" rel="bookmark" class="crp_title">Дефрагментация и сжатие InnoDB</a></li><li><a href="http://odminblog.ru/ustanovka-neskolkix-cms-na-odnu-bazu-dannyx/" rel="bookmark" class="crp_title">Установка нескольких CMS на одну базу данных</a></li><li><a href="http://odminblog.ru/sozdanie-rezervnoj-kopii-sajta-cherez-ftp/" rel="bookmark" class="crp_title">Создание резервной копии сайта через ftp</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://odminblog.ru/nastrojka-skriptov-dlya-importa-baz-dannyx-v-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как импортировать большую базу данных в mysql</title>
		<link>http://odminblog.ru/kak-importirovat-bolshu-bazu-dannyx-v-mysql/</link>
		<comments>http://odminblog.ru/kak-importirovat-bolshu-bazu-dannyx-v-mysql/#comments</comments>
		<pubDate>Sun, 17 Jul 2011 13:22:21 +0000</pubDate>
		<dc:creator>anchous</dc:creator>
				<category><![CDATA[Базы данных]]></category>
		<category><![CDATA[Сайты и их проблемы]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[сайты]]></category>
		<category><![CDATA[техподдержка]]></category>

		<guid isPermaLink="false">http://odminblog.ru/?p=1370</guid>
		<description><![CDATA[Бывает возникает ситуация, в которой необходимо загрузить на сервер хостинга базу данных больше разрешенного хостингом в утилите управления базами данных phpMyAdmin- обычно этот предел установлен в  ~2Mb. Если это случается на виртуале, то обычно просто заливаю базу через ftp и прошу суппорт хостинга помочь в данном вопросе.
Поскольку использую нормальные хостинги, то решение это проблемы занимает [...]]]></description>
			<content:encoded><![CDATA[<p>Бывает возникает ситуация, в которой необходимо загрузить на сервер хостинга базу данных больше разрешенного хостингом в утилите управления базами данных phpMyAdmin- обычно этот предел установлен в  ~2Mb. Если это случается на виртуале, то обычно просто заливаю базу через ftp и прошу суппорт хостинга помочь в данном вопросе.</p>
<p>Поскольку использую нормальные хостинги, то решение это проблемы занимает всего 10-15 минут, так что особо не парился, но тут столкнулся с тем что возникла необходимость подсказать человеку у которого суппорт курил бамбук, так что выделилось несколько вариантов решения данной проблемы. Оговорюсь сразу что наиболее удобен для импорта базы данных mysql последний вариант, но он подходит только тем у кого есть доступ к терминалу. Так что в статье описаны все возможные способы импорта большой базы данных в mysql, кроме общения с суппортом.</p>
<p>1. Варинт первый &#8211; выгружаем бэкап базы не целиком, а по несколько таблиц, чтобы файл не превышал наши лимиты. Основной минус данного решения- это то, что операцию выгрузки- загрузки необходимо будет проводить много раз, так что подойдет исключительно для тех у кого много свободного времени и нечем заняться на досуге.</p>
<p>2. Вариант второй &#8211; выгружать в пожатом состоянии- так как степень сжатия для текстового файла будет максимальной. Но тут опять же можно столкнуться с тем, что на хостинге не установлена поддержка архиваторов.</p>
<p>3. Используем сторонний скрипт, который позволяет производить экспорт и импорт базы данных, минуя общение с phpMyAdmin. Наиболее известный из имеющихся в наличии, и к тому же наиболее хорошо работающий- это <a rel="nofollow" href="http://odminblog.ru/links/go.php?url=http://www.ozerov.de/bigdump/" target="_blank">BigDump</a>. О том как его настроить &#8211; я <a title="настройка скриптов для импорта базы данных" href="http://odminblog.ru/nastrojka-skriptov-dlya-importa-baz-dannyx-v-mysql/">отписался чуть позже</a>, так что это касается и настройки по 5му пункту.</p>
<p>4. Как частный случай 3 вариант, возможно залить на сервер эмулятор терминала и сделать 5 пункт через него. Например можно попробовать PHPterm, но в этом варианте можно столкнуться с ограничениями хостинга в плане безопасности запуска команд и скриптов.</p>
<p>5. Также есть простенькая программка аналогичная BigDump, которая также позволяет импортировать большие базы данных, только в данном случае необходим Zend Optimizer либо Nu-Coder. Программка называется <a rel="nofollow" href="http://odminblog.ru/links/go.php?url=http://sypex.net/ru/products/dumper/downloads/" target="_blank">Sypex Dumper</a>, и вторую версию скрипта можно даже интегрировать в наиболее популярные CMS. На сайте есть как платная утилита, так и облегченная бесплатная версия.</p>
<p>6. Если таки имеется доступ к консоли, то можно добавить в php.ini следующие строки (увеличиваем лимит загрузки файлов по времени и размеру), после загрузки, лучше вернуть все назад, чтобы не нагнули сервак с оказией:<br />
max_execution_time = 20000<br />
max_input_time = 20000<br />
upload_max_filesize = 150M<br />
post_max_size = 150M</p>
<p>7. Но на самом деле наиболее быстрым и оптимальным вариантом загрузки большой базы данных, имея доступ к консоли, будет загрузить дамп базы данных dump.sql через ftp, а затем залить её через консоль ssh:<br />
mysql -h <strong>hostname </strong>-u <strong>user-name</strong> -p <strong>DB_name</strong> &lt;  /path-to-dir/dump.sql<br />
если у вас в качестве хоста базы данных используется стандартный localhost , то ключик -h можно и опустить, так что получится вида:<br />
mysql -u <strong>user-name</strong> -p <strong>DB_name</strong> &lt;  /path-to-dir/dump.sql</p>
<p>Да, чуть не забыл про самые поганые грабли всей пляски с импортом- при импорте базы данных могут возникнуть проблемы с кодировками, поэтому нам надо убедиться что дефолтная база и выгрузка sql находятся в одной кодировке, либо переконвертировать базу данных в стандартную для mysql кодировку (обычно это utf-8):<br />
iconv -f CP1251 -t UTF-8 dump.sql &gt; dump.sql.utf8<br />
либо указать необходимую кодировку при процедуре импорта базы данных:<br />
mysql -h <strong>hostname </strong>-u <strong>user-name</strong> -default_character_set <strong>utf8 </strong>-p <strong>DB_name</strong> &lt;  /path-to-dir/dump.sql</p>
<div id="crp_related"><h3>Читать еще:</h3><ul><li><a href="http://odminblog.ru/nastrojka-skriptov-dlya-importa-baz-dannyx-v-mysql/" rel="bookmark" class="crp_title">Настройка скриптов для импорта баз данных в mysql</a></li><li><a href="http://odminblog.ru/ustanovka-neskolkix-cms-na-odnu-bazu-dannyx/" rel="bookmark" class="crp_title">Установка нескольких CMS на одну базу данных</a></li><li><a href="http://odminblog.ru/sozdanie-rezervnoj-kopii-sajta-cherez-ftp/" rel="bookmark" class="crp_title">Создание резервной копии сайта через ftp</a></li><li><a href="http://odminblog.ru/defrag-innodb/" rel="bookmark" class="crp_title">Дефрагментация и сжатие InnoDB</a></li><li><a href="http://odminblog.ru/razblokirovka-bana-ip-adresa-v-cpanel/" rel="bookmark" class="crp_title">Разблокировка бана IP адреса в cpanel</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://odminblog.ru/kak-importirovat-bolshu-bazu-dannyx-v-mysql/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Создание форума без использования сервера баз данных</title>
		<link>http://odminblog.ru/sozdanie-foruma-bez-ispolzovaniya-servera-baz-dannyx/</link>
		<comments>http://odminblog.ru/sozdanie-foruma-bez-ispolzovaniya-servera-baz-dannyx/#comments</comments>
		<pubDate>Fri, 10 Jun 2011 20:29:24 +0000</pubDate>
		<dc:creator>anchous</dc:creator>
				<category><![CDATA[Базы данных]]></category>
		<category><![CDATA[Сайты и их проблемы]]></category>
		<category><![CDATA[интернет]]></category>
		<category><![CDATA[сайты]]></category>

		<guid isPermaLink="false">http://odminblog.ru/?p=1265</guid>
		<description><![CDATA[Вчера ночью на мауле некий чел закинул удочку- можно ли поднять форум без использования базы данных, и главное как это сделать. Я конечно поржал на эту тему и начал фантанизировать на предмет того, что конечно можно писать в txt файлец, например с разделителем двоеточием и уже оттуда все это дело парсить в сам форум, но [...]]]></description>
			<content:encoded><![CDATA[<p>Вчера ночью на мауле некий чел закинул удочку- можно ли поднять форум без использования базы данных, и главное как это сделать. Я конечно поржал на эту тему и начал фантанизировать на предмет того, что конечно можно писать в txt файлец, например с разделителем двоеточием и уже оттуда все это дело парсить в сам форум, но чем дальше тем это будет тухлее и тормазнутее.</p>
<p>Ну а после этого полез посмотреть, а что по этому пишут в инете- ибо если какому то челу на мауле подобная ересь пришла в башку, то наверное кому нить из 6 миллиардов -1 однозначно тоже. Оказалось что здесь их просто таки тысячи, и кстати технологии не намного опередили полет моей фантазии, собственно сообщения накапливались  в отдельных файлах, которые естественно были увязаны между собою как связанные базы данных.</p>
<p>Так что если вы также морочитесь вопросом какие бывают форумы, для того чтобы не использовать сервер баз данных, то могу дать вам наводку, чисто куда копать. Ибо при нонешних ценах на хостинг, от 220 до 280 рублей за анлим, морочиться такой темой излишний головняк. Так что собственно гугль вам в помощь, для поиска описалова для форумов без использования баз данных &#8211; первые два, наиболее крутых продукта:</p>
<p>ExBB, Ikonboard, eForum 2.5, Forum203, QuickForum, Simple BBS, Tiny php forum, Ultimate PHP Board (UPB), x.forum, ZZ PHP Board, TextDB forum, PHPWind</p>
<p>Откровенно говоря мне не совсем ясны корни этого извращения, ибо в данный момент как я уже сказал, цены по крайней мере на зарубежный хостинг находятся крайне низко, но как объяснил вопрошавший у него ситуация такого рода, что может повесить некоорое количество доменов, но база только одна. В связи с чем родился резонный вопрос, а что мешает использовать одну базу под несколько проектов, ведь по сути если движок при установке не дропает базу, а просто добавляет свои таблицы, то такой вариант вполне может быть работоспособным. Надо будет позднее порыть на данную тематику.</p>
<div id="crp_related"><h3>Читать еще:</h3><ul><li><a href="http://odminblog.ru/nastrojka-skriptov-dlya-importa-baz-dannyx-v-mysql/" rel="bookmark" class="crp_title">Настройка скриптов для импорта баз данных в mysql</a></li><li><a href="http://odminblog.ru/ustanovka-neskolkix-cms-na-odnu-bazu-dannyx/" rel="bookmark" class="crp_title">Установка нескольких CMS на одну базу данных</a></li><li><a href="http://odminblog.ru/phpbb-install/" rel="bookmark" class="crp_title">Установка движка форума phpBB</a></li><li><a href="http://odminblog.ru/sozdanie-rezervnoj-kopii-sajta-cherez-ftp/" rel="bookmark" class="crp_title">Создание резервной копии сайта через ftp</a></li><li><a href="http://odminblog.ru/defrag-innodb/" rel="bookmark" class="crp_title">Дефрагментация и сжатие InnoDB</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://odminblog.ru/sozdanie-foruma-bez-ispolzovaniya-servera-baz-dannyx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Установка сервера БД MySQL</title>
		<link>http://odminblog.ru/mysql-server-install/</link>
		<comments>http://odminblog.ru/mysql-server-install/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 11:13:48 +0000</pubDate>
		<dc:creator>anchous</dc:creator>
				<category><![CDATA[Базы данных]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[port]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[базы]]></category>
		<category><![CDATA[буфер]]></category>
		<category><![CDATA[таблица]]></category>

		<guid isPermaLink="false">http://odmin.sane4ka.ru/?p=583</guid>
		<description><![CDATA[Сейчас, в преддверии всяких разных настроек, типо почтарей, шейперов, сислогов и прочее, мы будем ставить open-sourse сервер БД от компании Sun MySQL. С использованием MySQL работа этих сервисов упрощается и функционирование значительно ускоряется. Писать о мускуле можно бесконечно, посему я этого делать не буду, если есть желание почитать, то это можно сделать на оффсайте. Естественно [...]]]></description>
			<content:encoded><![CDATA[<p>Сейчас, в преддверии всяких разных настроек, типо почтарей, шейперов, сислогов и прочее, мы будем ставить open-sourse сервер БД от компании Sun MySQL. С использованием MySQL работа этих сервисов упрощается и функционирование значительно ускоряется. Писать о мускуле можно бесконечно, посему я этого делать не буду, если есть желание почитать, то это можно сделать на оффсайте. Естественно предполагается, что перед установкой, мы полностью <a href="http://odminblog.ru/hardening-freebsd/">заточили систему</a> и <a href="http://odminblog.ru/ports-update-freebsd/">обновили порты</a>.</p>
<p>Итак установка мускуля. Ставить будем, актуальную на данный момент, версию MySQL 5.1.41. Существует три вида подобной установки и я пойду сверху вниз по мере усложнения.</p>
<p><span id="more-583"></span>1. Первый вид, наиболее простой и незатратный. Мы просто скачиваем с <noindex><a rel="nofollow" href="http://dev.mysql.com/downloads/">офф.сайта</a></noindex> полностью откомпилированный сервак и распаковываем его у себя на сервере. Откровенно говоря я больше предпочитаю этот вариант поскольку он наиболее быстрый и надежный, тем более думаю что инженеры Sun однозначно не хуже меня соберут необходимый продукт. Тем более что этот способ позволяет получить наиболее актуальную версию продукта, более свежую, чем будет установлена, например, из портов. Единственно что, он устанавливается в максимальной комплектации и идет с подключением всех возможных модулей.</p>
<p># wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.41-freebsd7.0-i386.tar.gz/from/http://www.mirrorservice.org/sites/ftp.mysql.com/<br />
# tar -xzvf mysql-5.1.41-freebsd7.0-i386.tar.gz<br />
# mv ./mysql-5.1.41-freebsd7.0-i386 /usr/local/mysql</p>
<p>Добавляем в систему пользователя и группу от которой будет работать демон mysqld, наречем его mysql. Зададим  ему права на папку хранения баа данных, по умолчанию, и создадим первичный комплект БД MySQL.</p>
<p># cd /usr/local/mysql<br />
# chown -R mysql:mysql /usr/local/mysql/*<br />
# scripts/mysql_install_db &#8211;user=mysql<br />
# chown -R root .<br />
# chown -R mysql data</p>
<p>Прописываем скрипт запуска сервера<br />
# cp support-files/mysql.server /usr/local/etc/rc.d/</p>
<p>2. Этот способ lyssara-style, т.е. установка из портов. Выбираем версию сервера 5.1, на данный момент актуальной является версия 5.1.41</p>
<p># cd /usr/ports/databases/mysql51-server/<br />
# make &amp;&amp; make install &amp;&amp; make clean</p>
<p>##### Используемые по умолчанию параметры установки #####<br />
WITH_CHARSET=charset    Define the primary built-in charset (latin1).<br />
WITH_XCHARSET=list      Define other built-in charsets (may be &#8216;all&#8217;).<br />
WITH_COLLATION=collate  Define default collation (latin1_swedish_ci).<br />
WITH_OPENSSL=yes        Enable secure connections.<br />
WITH_LINUXTHREADS=yes   Use the linuxthreads pthread library.<br />
WITH_PROC_SCOPE_PTH=yes Use process scope threads<br />
(try it if you use libpthread).<br />
BUILD_OPTIMIZED=yes     Enable compiler optimizations<br />
(use it if you need speed).<br />
BUILD_STATIC=yes        Build a static version of mysqld.<br />
(use it if you need even more speed).<br />
WITHOUT_THR_ALARM=yes   Disable signals (this reduces kernel lock<br />
contention on SMP, but has the side effect<br />
that you can&#8217;t kill clients that are sleeping).<br />
WITHOUT_INNODB=yes      Disable support for InnoDB table handler.<br />
WITH_ARCHIVE=yes        Enable support for Archive Storage Engine.<br />
WITH_CSV=yes            Enable support for CSV Storage Engine.<br />
WITH_FEDERATED=yes      Enable support for Federated Storage Engine.<br />
WITH_NDB=yes            Enable support for NDB Cluster.<br />
#####################################################<br />
Смотрим файл Makefile и выбираем те параметры что интересуют нас и записываем их в /etc/make.conf  У меня получилось следующее:<br />
###########</p>
<p>.if ${.CURDIR} == ${PORTSDIR}/databases/mysql51-server<br />
WITH_CHARSET=utf8<br />
WITH_XCHARSET=all<br />
WITH_COLLATION=uft8_bin<br />
WITH_LINUXTHREADS=yes<br />
BUILD_OPTIMIZED=yes<br />
BUILD_STATIC=yes<br />
WITHOUT_INNODB=no<br />
.endif<br />
.if ${.CURDIR} == ${PORTSDIR}/databases/mysql54-client<br />
WITH_CHARSET=utf8<br />
WITH_COLLATION=utf8_bin<br />
BUILD_OPTIMIZED=yes<br />
.endif</p>
<p>###########<br />
Копируем скрипт загрузки в rc.d<br />
# cp /usr/local/share/mysql/mysql.server /usr/local/etc/rc.d/</p>
<p>3. И наконец последний. Из все предыдущих он наиболее родной для юникса, но при этом наиболее заковыристый. Но ведь настоящие программеры пишут в блокноте <img src='http://odminblog.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Итак скачиваем сырцы и устанавливаем в систему. Этот способ наиболее гибкий, т.к. можно варьировать всевозможные конфигурации, как и в случае с портами, но сырцы реже попадаются кривыми, нежели порты.</p>
<p># tar -xzvf mysql-5.1.41.tar.gz<br />
# cd mysql-5.1.41<br />
Смотрим доступные для установки опции<br />
# ./configure &#8211;help<br />
Создаем шаманскую фразу призывающую демона MySQL снизойти на наш сервер<br />
# ./configure &#8211;prefix=/usr/local/mysql &#8211;localstatedir=/usr/local/mysql/data &#8211;with-mysqld-user=mysql &#8211;with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock &#8211;with-charset=utf8 &#8211;with-extra-charsets=all &#8211;with-error-inject<br />
# make &amp;&amp; make install &amp;&amp; make clean<br />
# sh scripts/mysql_install_db</p>
<p>Теперь после того как мы поставили MySQL всеми этими различными способами, переходим к правке конфиг файла<br />
# vi /usr/local/etc/my.cnf<br />
####### Подробные описания параметров на <noindex><a rel="nofollow" href="http://dev.mysql.com/doc/refman/5.0/en/server-options.html" target="_blank">офф.сайте</a></noindex> <strong>MySQL</strong><em></p>
<p># Раздел настроек клиента <strong>MySQL</strong></em><br />
[client]<br />
<em># Указываем сокет сервера, к которому следует обращаться.<br />
# Можно также указать порт, на котором будет крутиться сервер,<br />
# но поскольку мы планируем использовать сервер <strong>MySQL</strong><br />
# для локальных баз, то закомментируем эту директиву</em><br />
# port            = 3306<br />
socket          = /tmp/mysql.sock<br />
<em># Указываем пароль для подключения к БД, если используем</em><br />
# password       = your_password</p>
<p><em># Настройки сервера <strong>MySQL</strong></em><br />
[mysqld]<br />
<em># Расположение баз данных <strong>MySQL</strong></em><br />
datadir=/usr/local/mysql/base<br />
<em># Расположение сокета</em><br />
socket=/tmp/mysql.sock<br />
<em># Пользователь от которого запускается демон</em> <strong><em>MySQL</em></strong><br />
user=mysql<em><br />
# Адрес и порт на которых демон слушает обращения (для локальной базы<br />
# оставляем 127.0.0.1 или не используем вовсе)</em><br />
bind-address    = 127.0.0.1<br />
# port            = 3306<br />
<em># Размер блока для таблиц типа <strong>MyISAM</strong>- тот буфер памяти<br />
# который система использует для индексирования. Максимальный размер<br />
# на 32-битных платформах 4Gb. Обычно задают порядка<br />
# 25% размера оперативной памяти.<br />
</em>key_buffer_size=50M<br />
<em># Максимальный размер пакета. Изначально размер пакета<br />
# задается параметром <strong>net_buffer_length</strong>, но в случае необходимости<br />
#  может возрасти до <strong>max_allowed_packet</strong>.<br />
# Этот параметр, по умолчанию, задается небольшого значения,<br />
# для отлова больших (предположительно ошибочных) пакетов.</em><br />
max_allowed_packet = 1M<br />
<em># Количество максимальных разрешенных клиентских сессий.<br />
# По умолчанию этот параметр равен 100</em><br />
max_connections=300<br />
<em># Увеличение этого параметра увеличивает количество<br />
# дискриптеров необходимых для <strong>mysqld</strong>.<br />
# Выяснить необходимость увеличения табличного кэша,<br />
# можно путем проверки статуса <strong>Opened_tables</strong></em><br />
table_cache = 4<br />
<em># Каждому потоку, производящему операцию сортировки,<br />
# выделяется буфер заданного размера. Увеличение этого параметра<br />
# ускоряет выполнение операций <strong>ORDER BY</strong> и <strong>GROUP BY</strong></em><br />
sort_buffer_size = 1M<br />
<em># Каждому потоку производящему операцию последовательного сканирования,<br />
# выделяется буфер заданного (в байтах) размера,<br />
# для каждой сканируемой таблицы.<br />
# При множественных последовательных сканированиях, значение параметра<br />
# имеет смысл увеличить, т.к. по умолчанию он равен 131072.</em><br />
read_buffer_size = 1M<br />
<em># При сортировке прочтенных строк происзводится операция ключевой сортировки,<br />
# при которой строка считывается через заданный буфер,<br />
# во избежании поиска на диске.<br />
# Большое значение данного параметра способно значительно увеличить<br />
# производительность операции <strong>ORDER BY</strong>.</em><br />
read_rnd_buffer_size = 256K<br />
<em># Каждый клиентский поток соотносится с буфером соединения и<br />
# результирующим буфером. Оба они имеют размер заданный данным параметром,<br />
# но при необходимости могут динамически увеличиваться,<br />
# вплоть до величины заданной параметром <strong>max_allowed_packet</strong>.<br />
# Каждый результирующий буфер сокращается до величины <strong>net_buffer_length</strong><br />
# после каждого SQL отчета.</em><br />
net_buffer_length = 2K<br />
<em># Этим параметром задается размер стека для каждого потока.<br />
# Большое количество ограничений, обнаруживаемых тестом <strong>crash-me</strong>,<br />
# зависит от значения этого параметра.<br />
# Значения по умолчанию (192Kb) достаточно для нормальных операций.</em><br />
thread_stack = 64K<br />
<em># Не использовать системные блокировки<br />
</em>skip-locking<br />
<em># Данный параметр, в режиме <strong>ON</strong>, используется для работы локальной БД,<br />
# т.е. сервер <strong>MySQL</strong> не использует стек TCP/IP,<br />
# а работает только через файл сокета.<br />
# Данный параметр задается при конфигурации опцией<strong><br />
# &#8211;skip-networking</strong></em> <em>(как и все  доступные опции)</em><br />
skip-networking<br />
<em># Не резолвить доменные имена клиентов, и использовать только IP.<br />
# Если используется этот параметр то поле <strong>Host </strong>в таблице<br />
#  разрешений (grant table) должно содержать только IP адреса или <strong>localhost</strong></em><br />
skip-name-resolve<br />
<em># Отключение поддержки <strong>BDB </strong>(<strong>Berkeley DB</strong>), в том случае если нет<br />
# необходимости поддержки <strong>BDB </strong>таблиц. Этот параметр позволяет сэкономить<br />
# память и тем самым ускорить выполение некоторых операций.</em><br />
skip-bdb<br />
<em># Путь хранения лог файла (у пользователя <strong>mysql </strong>должны быть права на запись)</em><br />
log-error=/var/log/mysql.errors</p>
<p>##########################################################</p>
<p>Вроде как все готово, можно запускать в плавание. Первый запуск осуществим командой:<br />
# bin/mysqld_safe &#8211;user=mysql &amp;<br />
Дальнейшие манипуляции с сервером MySQL будем производить посредством запускающего скрипта<br />
# /usr/local/etc/rc.d/mysql-server [fast|force|one](start|stop|restart|rcvar|status|poll)<br />
Смотрим- все ли у нас запустилось:<br />
# ps -axj | grep mysql</p>
<p>И начинаем размышлять, что теперь к этому серверу мы можем прикрутить.</p>
<div id="crp_related"><h3>Читать еще:</h3><ul><li><a href="http://odminblog.ru/ustanovka-servera-baz-dannyx-mysql-na-centos/" rel="bookmark" class="crp_title">Установка сервера баз данных mySQL на CentOS</a></li><li><a href="http://odminblog.ru/nastrojka-skriptov-dlya-importa-baz-dannyx-v-mysql/" rel="bookmark" class="crp_title">Настройка скриптов для импорта баз данных в mysql</a></li><li><a href="http://odminblog.ru/razblokirovka-bana-ip-adresa-v-cpanel/" rel="bookmark" class="crp_title">Разблокировка бана IP адреса в cpanel</a></li><li><a href="http://odminblog.ru/defrag-innodb/" rel="bookmark" class="crp_title">Дефрагментация и сжатие InnoDB</a></li><li><a href="http://odminblog.ru/kak-importirovat-bolshu-bazu-dannyx-v-mysql/" rel="bookmark" class="crp_title">Как импортировать большую базу данных в mysql</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://odminblog.ru/mysql-server-install/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Дефрагментация и сжатие InnoDB</title>
		<link>http://odminblog.ru/defrag-innodb/</link>
		<comments>http://odminblog.ru/defrag-innodb/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 14:28:55 +0000</pubDate>
		<dc:creator>anchous</dc:creator>
				<category><![CDATA[Базы данных]]></category>
		<category><![CDATA[exim]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[innodb]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[база данных]]></category>
		<category><![CDATA[дамп]]></category>

		<guid isPermaLink="false">http://odmin.sane4ka.ru/?p=459</guid>
		<description><![CDATA[Есть у меня отличный почтарь, да не один, а несколько. Все они крутятся в связке Exim + DBmail + MySQL, конечно там есть много чего еще, но это основная связка, и нас из неё интересует последняя составляющая mySQL. Дело в том, что база пользователей и всего имеющегося мусора крутится по мускулем и хостится в базе [...]]]></description>
			<content:encoded><![CDATA[<p>Есть у меня отличный почтарь, да не один, а несколько. Все они крутятся в связке Exim + DBmail + MySQL, конечно там есть много чего еще, но это основная связка, и нас из неё интересует последняя составляющая mySQL. Дело в том, что база пользователей и всего имеющегося мусора крутится по мускулем и хостится в базе типо InnoDB, которую необходимо постоянно сжимать и сканировать. Желательно каждую ночь, чтобы мусор скопившийся за день, не забивал место в табличном пространстве.</p>
<p>К большому сожалению база InnoDB работает по принципу ниппеля, т.е. туда дуй, оттуда х&#8230; Объясняя это доступным языком- табличное пространство может как расширяться так и уменьшаться, но физический размер базы при этом изменяется только в сторону увеличения. Проще говоря если у вас база была на максимуме 20гигов, и после этого вы её почистив освободили 90% пространства, внутри база у вас будет свободна на 90% (посмотреть свободное пространство можно командой в консоли управления сервером: mysql&gt; show table status; ), но снаружи она так и будет занимать на диске 20 Гиг физического пространства диска. Так вот у меня, на одном из серверов, она успела разрастись, пока я прочухал тот факт, что забыл установить чистящий скриптик, до 250 Гигов, которые конечно работают как часы, но самой цифрой действуют мне на нервы. В этой связи надо что то делать. Но делать можно только одним способом, а именно перегнать базу в дамп sql и затянуть его обратно, предварительно дропнув имеющегося монстра. В этой связи, ровно как и для дефрагментации табличного пространства, нашим лучшим другом является системная утилита mysqldump, входящая в стандартный комплект поставки сервера mySQL.</p>
<p>*** Для дефрагментации InnoDB также можно использовать способ двойной перегонки <img src='http://odminblog.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  базы, с помощью команды ALTER преобразовать её в тип MyISAM, а затем обратно в тип InnoDB.<br />
<span id="more-459"></span>Данная утилита дает возможность сделать мгновенный слепок базы данных (на тему мгновенности конечно это я так, для красивого словца- полтора гига шло минут 7, 250 прошли за 2.5 часа) представляющий собой текстовый файл с набором SQL команд для создания и заполнения таблиц.<br />
Собственно приступаем к работе:</p>
<p># mysqldump -uSQL_USER_EXIM -p EXIM_DATABASE &gt; /tmp/exim.sql</p>
<p>-u или &#8211;user=  &#8211; имя пользователя<br />
-p &#8211;password  -  запрос пароля<br />
exim_database &#8211; имя базы данных<br />
exim.sql &#8211; файл для вывода дампа</p>
<p>за раз можно загнатьв дамп несколько баз, если перечислить их друг за другом, после опции -B или &#8211;databases:</p>
<p># mysqldump -uSQL_USER_EXIM -p database1 -B database2 database3 &gt; /tmp/database.sql</p>
<p>также можно снять дамп всех таблиц, если использовать оператор -A или &#8211;all-databases:</p>
<p># mysqldump -uSQL_USER_EXIM -p -A &gt; /tmp/database.sql</p>
<p>Данная операция займет некоторое время и место на диске, зависящее от объема базы SQL.</p>
<p>После этого останавливаем сервер mySQL</p>
<p>#  /usr/local/mysql/support-files/mysql.server stop</p>
<p>*****<br />
С версии 6.x доступен так называемый on-line backup для всех типов баз. Его отличительные особенности то, что он не блокирует выполнение INSERT/UPDATE/DELETE и выполняется простейшими командами:<br />
BACKUP DATABASE &lt;db_name&gt; to &lt;file&gt;<br />
RESTORE &lt;file&gt; [OVERWRITE]<br />
*****</p>
<p>Делаем резервную копию базы данных которую мы предполагаем экспортировать, из папки %mysql%/data переписываем файл базы и журналов InnoDB и соответствующую ей папку с файлами *.frm в самое укромное место на винте.</p>
<p>После этого удаляем таблицу и соответствующие ей файлы, и запускаем сервер:</p>
<p>#  /usr/local/mysql/support-files/mysql.server start</p>
<p>Сервер немного подумает и восстановит пустую базу InnoDB, после чего мы заливаем в неё наш бэкап. Сделать это можно двумя способами, либо из командной строки:</p>
<p># mysql -uSQL_USER_EXIM -p EXIM_DATABASE &lt; /tmp/exim.sql</p>
<p>либо из консоли сервера:</p>
<p>mysql&gt; use EXIM_DATABASE;<br />
mysql&gt; source exim.sql</p>
<p>После чего смотрим производительность и размер диска, занимаемый базой.<br />
******<br />
Парочка полезных советов:</p>
<p>При ограниченных ресурсах памяти или объемной базе данных, следует использовать опцию &#8211;quick или &#8211;opt, это позволит утилите mysqldump начать делать дамп базы без предварительной загрузки её в память.</p>
<p>Также может возникнуть необходимость указания кодировки в которой вы хотели бы получить дамп вашей базы, для этого используется опция &#8211;default-character-set=</p>
<p>Опция -f позволит продолжать выполнение резервирования даже при получении ошибки в ходе выполнения процедуры.</p>
<p>Удобная команда для автоматического резервирования со сжатием:<br />
mysqldump -uROOT -pPASSWD DBNAME | gzip -c &gt; `date &#8220;+%Y-%m-%d&#8221;`.gz</p>
<p>Также возможно резервироватьна удаленный хост:<br />
mysqldump -uROOT -PNUMBER_PORT -hHOST -pPASSWD DBNAME</p>
<div id="crp_related"><h3>Читать еще:</h3><ul><li><a href="http://odminblog.ru/nastrojka-skriptov-dlya-importa-baz-dannyx-v-mysql/" rel="bookmark" class="crp_title">Настройка скриптов для импорта баз данных в mysql</a></li><li><a href="http://odminblog.ru/kak-importirovat-bolshu-bazu-dannyx-v-mysql/" rel="bookmark" class="crp_title">Как импортировать большую базу данных в mysql</a></li><li><a href="http://odminblog.ru/ustanovka-servera-baz-dannyx-mysql-na-centos/" rel="bookmark" class="crp_title">Установка сервера баз данных mySQL на CentOS</a></li><li><a href="http://odminblog.ru/mysql-server-install/" rel="bookmark" class="crp_title">Установка сервера БД MySQL</a></li><li><a href="http://odminblog.ru/razblokirovka-bana-ip-adresa-v-cpanel/" rel="bookmark" class="crp_title">Разблокировка бана IP адреса в cpanel</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://odminblog.ru/defrag-innodb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

