The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

MySQL - проблемы с русским языком и их решение (rus mysql database language codepage charset sort replication)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: rus, mysql, database, language, codepage, charset, sort, replication,  (найти похожие документы)
From: mahoune Newsgroups: http://www.sql.ru Date: Mon, 24 May 2004 18:21:07 +0000 (UTC) Subject: MySQL - проблемы с русским языком и их решение Оригинал: http://www.sql.ru/faq/faq_topic.aspx?fid=152 Проблем бывает несколько: Самая безобидная и пожалуй с чего надо начинать - правильно выставить кодировку (http://www.mysql.com/doc/en/Character_sets.html). Для этого достаточно правильным образом настроить MySQL через файл настроек my.cnf Вот пример этого файла, в файле остались строки, относящиеся только к настройкам языка: # Example mysql config file. # Copy this file to c:\my.cnf to set global options # # One can use all long options that the program supports. # Run the program with --help to get a list of available options # This will be passed to all mysql clients [client] default-character-set=cp1251 character-sets-dir = d:/usr/local/mysql/share/charsets [mysqld] default-character-set=cp1251 character-sets-dir=d:/usr/local/mysql/share/charsets/ ariable = innodb_lock_wait_timeout=50 [mysql] default-character-set = cp1251 Не работает сортировка и другие функции UCASE(), LCASE(), LIKE и другие. В этой ситуации лучшее решение это перекомпилить MySQL из исходных текстов с использованием ключа --with-charset=cp1251. Второй вариант использовать BINARY, но тут не все будет работать. Не будет работать UCASE() и другие. Не будет работать LIKE без учета регистра. Неверно возвращаются русские символы из базы данных. В этом вопросе надо понять главное, MySQL никогда не будет перекодировать ваши данные перед сохранением, за исключением случаев использования CHARACTER SET cp1251_koi8 соответственно для перекодирования cp1251 из/в koi8. Все остальные варианты, как правило, связаны с несоответствием настроек языка веб сервера и базы данных. Односторонняя репликация. Для организации резервного копирования БД нам будет необходимо запустить второй MySQL сервер. Заводим на основном сервере нового пользователя, для организации репликации: #mysql mysql> GRANT FILE ON *.* TO repl@"%" IDENTIFIED BY ''; Делаем на основном сервере дамп тех БД которые необходимо бэкапить: mysqldump --user=username --password=password --opt database > backup-file.sql Переносим получившийся файл на резервный сервер и загружаем структуру и данные в MySQL: mysql --user=username --password=password database < backup-file.sql Далее конфигурим оба сервера для организации репликации, создадим конфигурационные файл /etc/my.cnf Для основного сервера (master): [mysqld] log-bin binlog-do-db=dbname1 binlog-do-db=dbname2 binlog-do-db=dbname3 server-id=1 Для резервного сервера: [mysqld] master-host=adres_master_server master-user=repl master-password=master_password master-port=3306 server-id=2 replicate-do-db=dbname1 replicate-do-db=dbname2 replicate-do-db=dbname3 master-info-file=/var/lib/mysql/master.info После внесения всех изменений в конфигурации серверов, перезагружаем сначала основной MySQL, а затем резервный. Для проверки соединения, смотрим файл /var/lib/mysql/master.info

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру