nixp.ru v3.0

17 октября 2017,
вторник,
00:54:38 MSK

DevOps с компанией «Флант»
Longobard написал 18 января 2005 года в 14:14 (730 просмотров) Ведет себя как мужчина; открыл 291 тему в форуме, оставил 2499 комментариев на сайте.

Подкиньте идею.

Нужно сделать так:

сделать отдельно дампы каждой sql базы. При этом сейчас у меня в скрипте просто столбик команд mysqldump с нужными аргами. Это криво. Как бы получить список баз в нормальном виде — я бы по нему скриптм бы прошелся…. Или как сказать mysqldump-у, чтобы он так сделал? --all-databases не годится — он создаст ОДИН дамп, а мне нужна куча — по одному на базу.

Anarchist

Привет алканавтам.

Какую траву сегодня курим?..

Доки по мускулу не курил?

В каталоге /var/lib/mysql (отличный задается опциями при компилляции) есть некоторые файлы и каталоги. Подкаталог /var/lib/mysql == база данных.

RTFM man ls на предмет вывода списка каталогов.

ЗЫ: Но что-то мнеговорит, что сие не совсем правильный способ.

Но, извини, точнее надо формулировать ТЗ. Анекдот помнишь?

Master

mysql> show databases;

вот список баз

Longobard

2 Anarchist 10x!

2 Master там таакой выхлоп, запаришься парсить :)

Longobard

Вот скриптик:

#!/bin/bash
cd /path/to/dump-dir
list=`ls /var/lib/mysql`
for i in $list;
do
    mysqldump --opt --password=blablabla $i > $i.sql
done
tar cjf `date +%d.%m.%Y`-mysqldump.tar.bz2 *.sql
rm *.sql

Как, норм?

Master
LONGOBARD
2 Master там таакой выхлоп, запаришься парсить :)

Я бы сделал скрипт на perl (используя DBI/DBD) для выполнения запроса «show databases», а потом из этого скрипта в цикле запускал бы mysqldump и gzip через pipe.

Longobard
Master
Я бы сделал скрипт на perl (используя DBI/DBD) для выполнения запроса «show databases», а потом из этого скрипта в цикле запускал бы mysqldump и gzip через pipe.

Зачем тут перл, если обычного шелла хватило ? :)

Anarchist
LONGOBARD
2 Master там таакой выхлоп, запаришься парсить :)

Какой нах.. выхлоп?!?

#!/bin/sh
#
mysql -e "SHOW DATABASES"

И?..

Anarchist
LONGOBARD
Вот скриптик:

#!/bin/bash
cd /path/to/dump-dir
list=`ls /var/lib/mysql`
for i in $list;
do
    mysqldump --opt --password=blablabla $i > $i.sql
done
tar cjf `date +%d.%m.%Y`-mysqldump.tar.bz2 *.sql
rm *.sql

Как, норм?

Если тебя понесло туда, то:

#!/bin/bash
cd /path/to/dump-dir
LIST=`ls /var/lib/mysql`#Переменные помнится принято в верхнем регистре обзывать...
for i in $LIST;
NAME=`echo $LIST".sql"`
do
    mysqldump --opt --password=blablabla $i > $i.sql
#done #Не здесь
tar cjf `date +%d.%m.%Y`-mysqldump.tar.bz2 *.sql #А вот этого не понял.
#rm *.sql #Нафиг надо.
bzip2 -v $NAME
done

Закатывать бэкап всех баз в один тарболл не вижу смысла.

В общем: учи шелл, думай, дерзай.

Удачи.

RTFM man bzip2 также рекомендуется.

Anarchist

Обращаю внимание на тот факт, что помимо каталогов (т.е. баз данных) в /var/lib/mysql есть и простые файлы (и не только простые файлы…).

Longobard

не, твой скрипт сделает кучку тарболлов с дампом каждой базы отдельно. А мне нужно единый тарболл.

tar cjf `date +%d.%m.%Y`-mysqldump.tar.bz2 *.sql

эта строка (которю ты не понял) она сливает все дампы в ОДИН тарболл с именем вида DD.MM.YY-mysqldump.tar.bz2 (например 18.01.2005-mysqldump.tar.bz2)

#rm *.sql #Нафиг надо.

Вай? зачем оставлять дампы в голом (.sql) виде, если они уже в тарболле?

#Переменные помнится принято в верхнем регистре обзывать…

Впервые слышу. Как хочу — так и называю :)

Anarchist
LONGOBARD
не, твой скрипт сделает кучку тарболлов с дампом каждой базы отдельно. А мне нужно единый тарболл.

Во-первых: пропущена необходимая опция ls.

Во-вторых: обоснуй.

LONGOBARD
эта строка (которю ты не понял) она сливает все дампы в ОДИН тарболл с именем вида DD.MM.YY-mysqldump.tar.bz2 (например 18.01.2005-mysqldump.tar.bz2)

Пробел не заметил.

LONGOBARD
Вай? зачем оставлять дампы в голом (.sql) виде, если они уже в тарболле?

Удаляются в цикле после сжатия.

Ели тебе так уж нравится, то после предложенного мной циклам можешь прописать:

tar cf `date +%d.%m.%Y`-mysqldump.tar   *.bz2

Понимаешь почему я это рекомендую?

LONGOBARD
Впервые слышу. Как хочу — так и называю :)

Тебе же потом читать тяжело будет…