SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 20.10.2011 11:17:28

_Сергей
Завсегдатай
Зарегистрирован: 26.11.2008
Сообщений: 36

Резервное копирование базы с помощью mysqldump

Здравствуйте.

Перечитал все заметки с этого сайта и в интернете тоже. Целью этих заметок было лишь констатация факта, что существует такая утилита mysqldump и сто с ее помощью можно делать бекапы. Это все так, но почему-то нигде не описано что бекап через mysqldump может вызвать проблему с кодировками. Делая бекапы я всегда опасаюсь, что он окажется бесполезным из-за кирилицы. Вся проблема в том что я знаю только название базы структуру таблиц и количество таблиц типы полей делают программисты, они их меняют добавляют таблицы изменяют. Для меня проблема кодировок страшный мрак существует ли способ как безошибочно определить какую кодировку надо выбрать что mysqldump сделал копию без потери кирилицы.

Спасибо.

Неактивен

 

#2 23.10.2011 20:27:27

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Резервное копирование базы с помощью mysqldump

mysqldump никогда не бьет кодировки, если у Вас данные хранятся в тех кодировках,
которыми подписаны таблицы (т.е. если данные находятся в кодировке koi8-r и хра-
нятся в столбце с кодировкой koi8-r, то данные будут нормально преобразованы в utf-8
и обратно при восстановлении; а если же столбец подписан cp1251 — ждите беды).

Подробнее описано в FAQ#3.

Неактивен

 

#3 24.10.2011 10:56:52

_Сергей
Завсегдатай
Зарегистрирован: 26.11.2008
Сообщений: 36

Re: Резервное копирование базы с помощью mysqldump

К сожалению, FAQ ситуации не прояснило.
У нас етсь 2 кодировки.
1) Кодировка при создании таблицы

CREATE TABLE enctest2 (
    str1 CHAR(10),
    str2 CHAR(15)
) DEFAULT CHARSET cp1251;


2) кодировка клиента. SET NAMES

То что мне удалось выделить из той каши, что твориться у меня в голове, оба эти параметра играют роль. Если программисты при разработке сайта указали SET NAMES то я об этом не узнаю. Я могу оперировать только той кодировкой которая выставлена в таблице. Но в таком случае я получу вместо кирилицы "????????".

Я прав?

Ведь в идеале должно быть без всяких SET NAMES в настройках сервера должно совпадать кодировка таблиц по умолчанию и кодировка клиента. Тогда проблем быть не должно.

Правильно?

Неактивен

 

#4 25.10.2011 11:13:33

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Резервное копирование базы с помощью mysqldump

У нас есть три кодировки — кодировка, в которой хранятся данные на диске,
кодировка, которой подписан столбец (или сама таблица) и кодировка клиента.
В случае, когда первые две кодировки совпадают (тот случай, к которому нужно
стремиться), все данные импортируются и экспортируются правильно. Тем не
менее, никто не мешает Вам сохранить строку, скажем, «РїСЂРёРІРµС‚» в таблицу,
подписанную кодировкой cp1251 и жить с этим неплохо (точнее — до первого
преобразования кодировок, например, при создании резервной копии).

Неактивен

 

#5 08.01.2012 03:17:51

Fess
Участник
Зарегистрирован: 08.01.2012
Сообщений: 2

Re: Резервное копирование базы с помощью mysqldump

Приветствую! Чтобы не создавать новую тему, спрошу в этойsmile

Есть дамп mysqldump.sql, сделанный утилитой mysqldump.

Подскажите, какой командой можно посмотреть список (названия) баз, содержащихся в этом дампе?

Заранее спасибо!

Неактивен

 

#6 08.01.2012 03:28:15

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Резервное копирование базы с помощью mysqldump

Что-то вроде
cat mysqldump.sql | grep DATABASE

Неактивен

 

#7 08.01.2012 04:16:56

Fess
Участник
Зарегистрирован: 08.01.2012
Сообщений: 2

Re: Резервное копирование базы с помощью mysqldump

rgbeast написал:

Что-то вроде
cat mysqldump.sql | grep DATABASE

Выдает просто огромное количество текстаsad

Неактивен

 

#8 09.01.2012 00:11:15

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Резервное копирование базы с помощью mysqldump

Не то, что нужно, разве?

fgrep '-- Current Database:' mysqldump.sql

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson