Все для DataLife Engine / Все для DLE / Полезные статьи / Описание конвертирование базы данных на сервере SSH

Описание конвертирование базы данных на сервере SSH



Для конвертировании больших DLE Баз Данных( БД ) , размер которых может доходить до сотен мегабайт , конвертирование БД в ту или иную кодировку практически становится не возможным, для текстовых редакторов Notepad ++ или PHP скриптов. Так как возможности у них ограничены. Если же база данных имеет меньший размер то произвести конвертирование базы данных DLE utf-8 в windows-1251 можно своими силами. Для таких случаев, когда своими силами не как не справиться подходят достаточно быстрые операции с использованием SSH, о чем собственно и пойдет речь в данной статье.

Веб-мастерам и веб-разработчикам очень важно уметь управлять данными MySQL, или хотя бы знать её важные стороны и функции, советуем пройти на страницу sql для чайников, чтобы познакомиться со всеми аспектами этой интересной темы и технологии, которые обязательно пригодятся в создание сайта.

Как же происходит изменение кодировки базы данных для Dle прямо на сервере с использованием shell (SSH) на примере операционной системы CentOS 5. Если база данных очень большая, то для начала идем к файлу конфигурации MySQL сервера my.cnf и меняем в нем временно значение строк max_allowed_packet на большее. Т.е., например:

max_allowed_packet = 256M


Делаем перезапуск сервер MySQL командой

service mysqld restart


Далее для простоты работы переходим по SSH в папку backup нужного сайта, где и будем проводить все манипуляции с базой данных по смене кодировки с utf-8 на windows-1251.Например, такой командой (все пути в командах будут указаны для примера и вам придется изменить их на свои относительно путей на вашем сервере):

cd /var/www/user/data/www/Ваш сайт.ru/backup


На время работы сайт лучше отключить в админпанели скрипта для посетителей.

1. Делаем дамп последней базы данных используя раздел админки "Управление базой данных". Дамп обычно имеет название что-то вроде

2012-03-16_02-10_user_base_55e2d753e9072ed783a2258bbf2d6106.sql.gz

Распакуем его командой:

gunzip 2012-03-16_02-10_user_base_55e2d753e9072ed783a2258bbf2d6106.sql.gz


У вас получится файл 2012-03-16_02-10_user_base_55e2d753e9072ed783a2258bbf2d6106.sql, который мы просто переименуем через панель управления для простоты работы, например, в dump.sql. Как вариант, если размер базы данных слишком большой, то дамп можно сделать через shell такой командой:
mysqldump -uИМЯ_БАЗЫ -pПАРОЛЬ_БАЗЫ -hlocalhost -A > dump.sql


2. Теперь перекодируем dump.sql в нужную нам кодировку с нужными параметрами командой:
iconv -f UTF-8 -t WINDOWS-1251 dump.sql > dump_cp1251.sql


Т.е. мы конвертируем дамп из кодировки utf-8 в windows-1251 и сохраняем его как новый файл с названием dump_cp1251.sql.

3. Теперь у нас есть база данных в нужной нам кодировке windws-1251 и нам нужно выставить правильные DEFAULT CHARSET для всех таблиц. Делаем это командой:

cat dump_cp1251.sql | replace "utf8" "cp1251" > dump_cp1251_replace.sql


Т.е. мы меняем в файле базы данных dump_cp1251.sql значения DEFAULT CHARSET с utf8 на ср1251 и сохраняем его как новый файл dump_cp1251_replace.sql.

4. Теперь можно восстановить этот дамп, который уже полностью поддерживает кодировку windows-1251, и сразу создать новую базу данных (или указать существующую - таблицы будут перезаписаны) командой:

mysql -uuser -ppassword newbdname --default-character-set=cp1251 < dump_cp1251_replace.sql


На данном примере показан способ конвертирования из UTF-8 в windows-1251. Аналогичным способом конвертируется и из windows-1251 в UTF-8, только кодировки в командах меняются соответственно.

Дополнительно...

Если вы планируете установить новую базу данных на другом домене, то вы можете сразу сменить имя домена по всей базе данных на новое и затем восстановить базу данных. Пример такой замены:

cat dump_cp1251.sql | replace "site.ru" "new.site.ru" > dump_cp1251_replace.sql


И потом восстанавливаем базу по пункту 4.

Примечание: Если у вас в процессе создания или восстановления базы данных возникают ошибки сервера, то это обычно связано с маленькими лимитами max_allowed_packet в my.cnf (увеличивайте на очень больших базах пока не пропадет ошибка) или с нехваткой времени выполнения скрипта (время увеличивайте в php.ini или через панель управления).

«Автор:» ower xz
Источник: dle-news

Наш «все для DataLife Engine» предлагает полезную статью dle cms! Описание конвертирование базы данных на сервере SSH статья представлена на нашем блоге.
  • 40
Добавить комментарий

Оставить комментарий

    • bowtiesmilelaughingblushsmileyrelaxedsmirk
      heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
      winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
      worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
      expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
      disappointedconfoundedfearfulcold_sweatperseverecrysob
      joyastonishedscreamtired_faceangryragetriumph
      sleepyyummasksunglassesdizzy_faceimpsmiling_imp
      neutral_faceno_mouthinnocent