настройка кодировки в mariadb

alxmel

Участник
Привет коллеги! Столкнулся я недавно с проблемой - нужно было перенести дамп бд с одного сервера на другой. Перенос был с windows+xampp(mariadb) на opensuse + mariadb. Проблема в том что вот кодировка настроена по разному на серверах и плюс в xampp был phpmy admin. Как мне перенастроить параметры кодировки на сервере бд opensuse ?
 

UEF

Модератор
Команда форума
Переменная | значение
character_set_client | utf8
character_set_connection | utf8
character_set_database | latin1
character_set_filesystem | binary
character_set_results | utf8
character_set_server | latin1
character_set_system | utf8
character_sets_dir | /usr/share/mysql/charsets/

Вы можете посмотреть эти параметры командой:
Код:
 show variables like 'char%';
Задаются параметры кодировки командой
Код:
MariaDB [(none)]> set character_set_server=utf8;
 

alxmel

Участник
Большое спасибо. Подскажите еще насколько может вырасти производительность при переезде на unix сервер? Если к примеру брать равные условия по ОЗУ cpu и hdd. У меня есть скрипт cms который на виртуальной машине xammp+win2008r2 работает как то грустно. Есть мнение что если все перенести на suse то будет работать быстрее.
 

dimon

Участник
Большое спасибо. Подскажите еще насколько может вырасти производительность при переезде на unix сервер? Если к примеру брать равные условия по ОЗУ cpu и hdd. У меня есть скрипт cms который на виртуальной машине xammp+win2008r2 работает как то грустно. Есть мнение что если все перенести на suse то будет работать быстрее.
все зависит от того как вы настроите сервер и откуда руки растут
Вообще работать быстрее должно
 

alxmel

Участник
Не знаю не получается у меня ничего
Поэтому опять нужна помощь сообщества.
Есть сервер виртуальная машина (4cpu+16gbОЗУ) на winserver 2008r2+xampp (mariadb)+SSL сертификат - там живет форум на версии 4.2.3. Как то он медленно работает и я хочу перенести все это хозяйство в suse leap + mariadb(16ОЗУ+ 16CPU) .
На исходном сервере для бэкапа используется сипекс дампер.

Параметры кодировки в win+xampp сервере:
Код:
  Переменная Значение сессии / Глобальное значение
  character set client     latin1
 (Значение сессии )  utf8mb4
 character set connection     latin1
 (Значение сессии )  utf8mb4
 character set database     latin1
 character set filesystem     binary
 character set results     latin1
 (Значение сессии )  utf8mb4
 character set server     latin1
 character set system     utf8
 character sets dir     C:\xampp\mysql\share\charsets
Добавлять cpu и памяти для винды нехочу - тупиковый путь.

Суть проблемы как я понял - снять дамп в "правильной кодировке" с работающего сервера что бы залить на новый и тут у меня проблемы.
У меня почему то не получается перенести БД на suse сервер - точнее получается но когда отображается форум вижу иероглифы.

Параметры кодировки suse сервера:
Код:
MariaDB [(none)]> show variables like 'char%';
+--------------------------+------------------------------+
| Variable_name            | Value                        |
+--------------------------+------------------------------+
| character_set_client     | utf8                         |
| character_set_connection | utf8                         |
| character_set_database   | utf8                         |
| character_set_filesystem | binary                       |
| character_set_results    | utf8                         |
| character_set_server     | utf8                         |
| character_set_system     | utf8                         |
| character_sets_dir       | /usr/share/mariadb/charsets/ |
+--------------------------+------------------------------+
8 rows in set (0.01 sec)
Все таблицы в работающем виндовом сервере в кодировке latin1_swedish_ci - это я смотрю в phpmyadmin.

Как я в итоге переношу бд.
1. Я снимаю 3 дампа явно указывая настройки кодировки в сипекс дампере - Авто/latin1/UTF-8 (это для того что бы у меня были разные варианты дампов с разной кодировкой)
2. Пробую залить дампы в новый сервер и смотрю верная кодировка в браузере или нет.
3. Я пробовал задавать параметры кодировки как вы мне выше советовали но после перезапуска демона mariadb кодировка слетает.
Подскажите что я делаю не так??

-----Подумал и добавил------

пытаюсь исправить кодировку в vbulletin 4.2.3
 

CheBuRek

Участник
Сначала добейтесь того что бы параметры кодировок были идентичными на обоих серверах.
Вот это лучше привести в utf8
Код:
 character_set_client     | utf8                         |
| character_set_connection | utf8                         |
| character_set_database   | utf8                         |
| character_set_filesystem | binary                       |
| character_set_results    | utf8                         |
| character_set_server     | utf8                         |
| character_set_system     | utf8                         |
| character_sets_dir       | /usr/share/mariadb/charsets/
Потом выгружать дамп в .sql формате, кстати помоему sypex dumper умеет ставить разную кодировку и исправлять ее?
 

NanoSuit

Участник
Еще забыл спросить, а где в phpMyAdmin консоль mariadb???
на самой главной странице
image_149.jpg

- -Подумал и добавил - -

В принципе алгоритм прост.

1. Переносим все вложения и прочее в файловую систему (перед перекодировкой не должно в базе быть ничего бинарного)
2. Сливаем дамп со старого сервера
Код:
mysqldump -uuser -ppassword --add-drop-table --default-character-set=latin1 forum_database > dump.sql
3. Копируем файл дампа на новый сервер
4. Перекодируем файл с latin1 в utf8 прямо в консоли
Код:
iconv -c -f LATIN1 -t UTF8 dump.sql > dump_tpm.sql
5. Заменяем текст кодировки по всему файлу дампа
Код:
sed -e 's/latin1/utf8/g' dump_tpm.sql > dump_utf8.sql
6. Заливаем дамп в заранее созданную (со сравнением utf-8) базу
Код:
mysql -u user -ppassword --default-character-set=utf8 forum_database < dump_utf8.sql
7. Проверяем.
 
Верх Низ