среда, 7 августа 2013 г.

Смена кодировки MySQL / Changing collation MySQL


1. Dump всех БД кроме системной.
mysqldump <database> > <database file>.sql
sed \-r 's/latin1/utf8/g' <database file>.sql > <database file>_utf.sql
2. Из системной БД только таблица user.
mysqldump mysql user > user.sql
sed \-r 's/latin1/utf8/g' user.sql > user_utf.sql
3. В my.cnf добавить:
character-set-server=utf8
init-connect='SET NAMES utf8'

collation-server=utf8_general_ci
innodb_flush_log_at_trx_commit=1

вместо
innodb_flush_log_at_trx_commit=2

# Эти 2 строки только для режима репликации
sync_binlog=1

binlog-do-db = <db> # для всех баз, участвующих в репликации
4. Отключить в /usr/etc/my.cnf автоматический ввод пароля.
5. Остановить MySQL
#/etc/init.d/mysqld stop

6. Переименовать /data/mysql/data в data.old
7. Создать новую директорию data. не забыть права mysql:mysql
8. Первоначальная инициализация Mysql:
/etc/init.d/mysqld start

9. Задать пароль root'а через mysqladmin
10. Восстановить /usr/etc/my.cnf и проверить вход в консоль.
11. Восстановить таблицу user с пользователями и правами:
#mysql mysql < ./user_utf.sql

12. mysql>create database <database>; # выполнить для всех БД.
13. Загрузить дампы *_utf.sql в соответствующие базы.
14. проверить кодовые страницы для всех БД:
mysql> use <database>;
mysql> show variables like '%collation%';
mysql> show variables like '%char%';
В ответе должны фигурировать только utf8.
---------------------
15. на Slave server'е выполнить шаги 2-11.
16. из консоли прописать мастера репликации:
mysql> CHANGE MASTER TO MASTER_HOST = "masterip", MASTER_USER = "repluser", MASTER_PASSWORD = "replpass";
17. Запустить репликацию: mysql> START SLAVE;
После этого автоматом создадутся все базы данных, участвующие в репликации и в них загрузится информация.
18. Проверить статус репликации: mysql> SHOW SLAVE STATUS\G;

19. Выполнить пункт 14 для slave сервера.

Прусаков.

Комментариев нет:

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