[ОТВЕТИТЬ]
25.07.2013 12:33
bujhm1987
 
Как сделать дамп в файл с разделителями? Для этого используется ключ --tab, но при использовании получаю ошибку:

root@pgdb1:~# mysqldump -v --all-databases --tab -uroot -pПАРОЛЬ > /home/sa/tab.sql
mysqldump: --databases or --all-databases can't be used with --tab.

Подскажите что не так. Если я уберу -all-databases mysqldump выдаст сообщение об ошибке и призыв использовать эту опцию. В общем сделать бэкап всех баз или одной отдельной он не дает.
25.07.2013 13:09
OlegON
 
не очень понял, надо получить данные с разделителями или команды с каким-то особым разделителем?
25.07.2013 13:31
whitewizard
 
а так:
mysqldump --all-databases --tab -v -uroot -pПАРОЛЬ > /home/sa/tab.sql
25.07.2013 13:33
Mtirt
 
А я не поняла, надо все базы данных или какую-то конкретную?
25.07.2013 15:14
bujhm1987
 
Цитата:
whitewizard а так:
mysqldump --all-databases --tab -v -uroot -pПАРОЛЬ > /home/sa/tab.sql
Не помогло
mysqldump: --databases or --all-databases can't be used with --tab.
25.07.2013 15:15
bujhm1987
 
Цитата:
Mtirt А я не поняла, надо все базы данных или какую-то конкретную?
Не важно. Важно сделать не просто dump, а в формате csv, это позволит разворачивать дамп быстрее.
25.07.2013 15:41
whitewizard
 
Цитата:
Значится так — есть задача вытянуть данные из таблицы mysql в простенький csv файлик, дабы его открыть быстренько в excel. Зачем белым людям нужна такая магия — мне никогда не понять, но раз заказчик попросил, то я сделал. Итак, отдаёмся во власть консоли и пишем:
mysqldump -u [USER_NAME] -p "--where=[WHERE]" "--fields-terminated-by=," "--tab=./" [DB_NAME] [TABLE] > [TABLE].txt

Вот и вся любовь (на выходе получим два файла — один с SQL и второй с CSV)

p.s. директория в которой выполняется эта команда должна быть открыта для записи, иначе оно ругаться будет ;)

для винды будет так:
mysqldump -v БАЗА--tab=ПУТЬ -uroot -pПАРОЛЬ
25.07.2013 15:49
OlegON
 
Цитата:
-T, --tab=name Create tab-separated textfile for each table to given
я по прежнему не понимаю, что нужно сделать и почему быстрее дамп восстанавливать так. сам дамп делаю так
Код:
mysqldump --opt --max_allowed_packet=2147483648 -hlocalhost -uroot -ppassword database>/file
25.07.2013 16:23
bujhm1987
 
Цитата:
whitewizard для винды будет так:
mysqldump -v БАЗА--tab=ПУТЬ -uroot -pПАРОЛЬ
спасибо
а всю базу в один csv можно сдампить?
25.07.2013 16:23
bujhm1987
 
Цитата:
OlegON я по прежнему не понимаю, что нужно сделать и почему быстрее дамп восстанавливать так. сам дамп делаю так
Код:
mysqldump --opt --max_allowed_packet=2147483648 -hlocalhost -uroot -ppassword database>/file
вычитал что восстановление из файла с табуляцией идет быстрее,вот и ищу способы :)
25.07.2013 16:25
whitewizard
 
Цитата:
bujhm1987 спасибо
а всю базу в один csv можно сдампить?
Думаю, что нет. Таблицы ведь разные.
И чот не верится, что такой уж большой прирост в скорости будет.
А быстрее всего будет бэкап холодный.
25.07.2013 16:48
bujhm1987
 
Цитата:
whitewizard Думаю, что нет. Таблицы ведь разные.
И чот не верится, что такой уж большой прирост в скорости будет.
А быстрее всего будет бэкап холодный.
:connie_mini_cry: холодный это как?
25.07.2013 16:54
whitewizard
 
останови службу MYSQL и тупо скопируй папку с данными и упакуй её
25.07.2013 16:57
OlegON
 
Цитата:
bujhm1987 вычитал что восстановление из файла с табуляцией идет быстрее,вот и ищу способы :)
не будет... с чего бы? винты просто будут лишнего дергаться, проца там не так много... либо холодный с основной БД, либо холодный с реплицированной, если останавливать БД нельзя.
25.07.2013 17:10
bujhm1987
 
После b/r база шустрее работает :)
25.07.2013 17:11
whitewizard
 
Это понятно
База сколько весит?
MySql 5.1 ?
25.07.2013 17:19
OlegON
 
лучше узнай размеры табличек

Код:
SELECT 
concat(table_schema,'.',table_name),
concat(round(table_rows/1000000,2),'M') rows,
concat(round(data_length/(1024*1024),2),'M') DATA,
concat(round(index_length/(1024*1024),2),'M') idx,
concat(round((data_length+index_length)/(1024*1024),2),'M') total_size,round(index_length/data_length,2) idxfrac 
FROM information_schema.TABLES ORDER BY data_length+index_length DESC LIMIT 10;
может, там пара самых пузатых... их и будешь переливать... а то и просто
Код:
mysqlcheck --repair --analyze --optimize --auto-repair
сделай, быстрее будет шуршать.
25.07.2013 18:45
bujhm1987
 
Цитата:
whitewizard Это понятно
База сколько весит?
MySql 5.1 ?
5.1.63, 170 гб
25.07.2013 18:46
bujhm1987
 
Цитата:
OlegON лучше узнай размеры табличек

Код:
SELECT 
concat(table_schema,'.',table_name),
concat(round(table_rows/1000000,2),'M') rows,
concat(round(data_length/(1024*1024),2),'M') DATA,
concat(round(index_length/(1024*1024),2),'M') idx,
concat(round((data_length+index_length)/(1024*1024),2),'M') total_size,round(index_length/data_length,2) idxfrac 
FROM information_schema.TABLES ORDER BY data_length+index_length DESC LIMIT 10;
может, там пара самых пузатых... их и будешь переливать... а то и просто
Код:
mysqlcheck --repair --analyze --optimize --auto-repair
сделай, быстрее будет шуршать.
база укм4, все пузатые в inno, их check не спасет
25.07.2013 19:30
OlegON
 
А сколько идет восстановление сейчас, из обычного дампа? И по размерам табличек все же сто́ит посмотреть.
25.07.2013 19:44
bujhm1987
 
Цитата:
OlegON А сколько идет восстановление сейчас, из обычного дампа? И по размерам табличек все же сто́ит посмотреть.
16 часов
26.07.2013 05:15
bujhm1987
 
с ошибками разобрался,теперь команда выглядит так :

автор
mysqldump -v supermag --tab=/home/sa/backup -uroot -pПАРОЛЬ

Но получаю другую ошибку:
автор
-- Connecting to localhost...
-- Retrieving table structure for table table1...
-- Sending SELECT query...
mysqldump: Got error: 1: Can't create/write to file '/home/sa/backup/table1.txt' (Errcode: 13) when executing 'SELECT INTO OUTFILE'
26.07.2013 05:20
bujhm1987
 
Сорри,с правами непорядок
26.07.2013 06:00
bujhm1987
 
Хм,теперь на каждую таблицу есть по два файла - *.sql и *.txt. Логически всё правильно - в *.sql лежит скрипт с DDL таблички для drop-create, в *.txt - данные в csv. Вопрос такой теперь - как используя их развернуть дамп? mysqlimport это позволит сделать,но там насколько помню нельзя задать в качестве параметра каталог с txt, только имена файлов через запятую,я прав?*
26.07.2013 06:17
bujhm1987
 
Пытаюсь сделать через mysqlimport и получаю
root@pgdb1:/tmp# mysqlimport --delete --lock-tables -uroot -pПАРОЛЬ supermag table1.txt
mysqlimport: Error: 13, Can't get stat of '/var/lib/mysql/supermag/table1.txt' (Errcode: 2), when using table: table1
Через load data всё чудесно загружается. Делал рестарт мускулю,не помогло.
26.07.2013 07:27
OlegON
 
Цитата:
bujhm1987 mysqlimport: Error: 13, Can't get stat of '/var/lib/mysql/supermag/table1.txt'
опять с правами навертел или table1.txt не существует. ты уверен, что таблички без внешних ключей, что так отдельно их заливаешь?
26.07.2013 08:27
bujhm1987
 
Цитата:
OlegON опять с правами навертел или table1.txt не существует. ты уверен, что таблички без внешних ключей, что так отдельно их заливаешь?
разобрался,нигде не было указано что файлы для импорта должны лежать в каталоге БД.
22.08.2013 12:17
Кость
 
16 часов на восстановление?
хм...
у меня база под 600 гигов, я делаю так:
1. останавливаю службы
2. копирую по сети на другой сервак (так быстрее, уходит времени с 2:00 до ~5:20)
3. запускаю службы
4. второй сервак начинает бэкап скопированной папки, а службы на первом уже работают

базу я быстрее разверну подменой, нежели вы дампом

но, на батники ушло много времени: проверка состояния служб для останова/старта (если не остановились, то повторить останову), логирование, отправка сообщения на почту итд...
зато 600 гигабайт у меня превращается в архив размером ~60 гигабайт (7z)
Опции темы


Часовой пояс GMT +3, время: 20:02.

 

Форум сделан на основе vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.