Вышла новая база данных МТС за 2015 год

Дамп баз данных с помощью mysqldump

Только схему

mysqldump --no-data --routines --events db_name

Построчный дамп

Если необходимо сделать INSERT каждой записи отдельно (удобно для grep):

mysqldump --default-character-set=utf8 --extended-insert=FALSE --complete-insert=TRUE database > dump.sql

Исключить таблицу из дампа

mysqldump ... --ignore-table=db_table > dump.sql

Исключить базы данных

DATABASES_TO_EXCLUDE="db1 db2 db3"
EXCLUSION_LIST="'information_schema','mysql'"
for DB in `echo "${DATABASES_TO_EXCLUDE}"`
do
    EXCLUSION_LIST="${EXCLUSION_LIST},'${DB}'"
done
SQLSTMT="SELECT schema_name FROM information_schema.schemata"
SQLSTMT="${SQLSTMT} WHERE schema_name NOT IN (${EXCLUSION_LIST})"
MYSQLDUMP_DATABASES="--databases"
for DB in `mysql -ANe"${SQLSTMT}"`
do
    MYSQLDUMP_DATABASES="${MYSQLDUMP_DATABASES} ${DB}"
done
MYSQLDUMP_OPTIONS="--routines --triggers"
mysqldump ${MYSQLDUMP_OPTIONS} ${MYSQLDUMP_DATABASES} > MySQLDatabases.sql

Исключить базы данных (2 вариант)

candidates=$(echo "show databases" | mysql | grep -Ev "^(Database|mysql|performance_schema|information_schema)$")
mysqldump --databases $candidates

Исключить и сбросить каждую базу в отдельный файл:

candidates=$(echo "show databases" | mysql | grep -Ev "^(Database|mysql|performance_schema|information_schema)$")
for candidate in $candidates[*]; do
    mysqldump $candidate
done

Исключить базы данных (3 вариант)

mysqldump --databases `mysql --skip-column-names -e "SELECT GROUP_CONCAT(schema_name SEPARATOR ' ') FROM information_schema.schemata WHERE schema_name NOT IN ('mysql','performance_schema','information_schema');" >` >/mysql/backup/rds2.sql

Если количество БД измеряется десятками, метод не сработает, так как есть ограничение на GROUP_CONCAT (group_concat_max_len по-умолчанию = 1024).

Подробности