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

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

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

Как же происходит изменение кодировки базы данных для 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
Рубрика: Все для DLE » Полезные статьи
Ранее » Конвертировать Базу Данных DLE utf-8 в windows-1251« Далее Патч DataLife Engine исправление WYSIWYG редактора
Добавление комментарияОставить комментарий