Created
January 18, 2019 10:11
-
-
Save Nex-Otaku/7220bc4d0eccf0af94c021634e1d781a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Экспорт полной структуры БД и данных без некоторых таблиц. | |
# Имя БД | |
dbname=MYDBNAME | |
# Пароль | |
dbpassword=MYDBPASSWORD | |
# Исключённые таблицы | |
skipped_tables=( table1 table2 table3 ) | |
# Папка для записи дампа | |
dump_dir=/home/my-user/tmp/backup | |
# Определяем весь список таблиц. | |
all_tables=( $(mysql MYDBUSER -p$dbpassword -s -N -e 'show tables') ) | |
# Процедура для сравнения массивов | |
diff(){ | |
awk 'BEGIN{RS=ORS=" "} | |
{NR==FNR?a[$0]++:a[$0]--} | |
END{for(k in a)if(a[k])print k}' <(echo -n "${!1}") <(echo -n "${!2}") | |
} | |
# Определяем, по каким таблицам будут выгружены данные. | |
dump_tables=( $(diff all_tables[@] skipped_tables[@]) ) | |
# Фиксируем время. | |
datetime=`date +\%Y-\%m-\%d_\%H-\%M-\%S` | |
# Определяем имена файлов | |
sql_data_file=$dump_dir/$dbname-$datetime-data.sql | |
zip_data_file=$sql_data_file.zip | |
sql_schema_file=$dump_dir/$dbname-$datetime-schema.sql | |
zip_schema_file=$sql_schema_file.zip | |
# Дополнительные параметры для дампа | |
dump_schema_params='--no-data --hex-blob --max-allowed-packet=512000000' | |
dump_data_params='--no-create-info --hex-blob --max-allowed-packet=512000000' | |
# Выгружаем структуру БД. | |
mysqldump $dbname $dump_schema_params > $sql_schema_file | |
# j - не переносим структуру папок | |
zip -j $zip_schema_file $sql_schema_file | |
rm $sql_schema_file | |
# Выгружаем данные по отдельным таблицам. | |
mysqldump $dbname ${dump_tables[@]} $dump_data_params > $sql_data_file | |
# j - не переносим структуру папок | |
zip -j $zip_data_file $sql_data_file | |
rm $sql_data_file |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment