Увод
У овом тексту ћемо проћи кроз како направити резервну копију више МиСКЛ или МариаДБ база података које се налазе на истој машини користећи прилагођену басх скрипту и постављање црон посла.
Резервне копије базе података
Претпоставићемо да имамо три МиСКЛ базе података на нашој Вултр инстанци под називом дб-вултр-сите , дб-вултр-блог , дб-вултр-апп (Не брините о креирању ових база података, моћи ћете да замените њихова имена за ваше где се користе у скрипти у кораку 2 испод) .
Пријавите се на своју МиСКЛ или МариаДБ базу података и покрените упит испод да бисте креирали корисника базе података за db_user_backupsруковање резервним копијама
GRANT LOCK TABLES, SELECT, SHOW VIEW, REPLICATION CLIENT ON *.* TO 'db_user_backups'@'%' IDENTIFIED BY '{COMPLEX-PASSWORD}';
Такође покрените доле да бисте били сигурни да је МиСКЛ конфигурисан да исправно враћа сачуване процедуре
SET GLOBAL log_bin_trust_function_creators = 1;
Подесите неопходну структуру директоријума и потребне датотеке
# create backup directory with environment and log file
sudo mkdir /backups && cd /backups
sudo touch .env db-backup.sh db-backup.log
sudo chmod -R 775 /backups
sudo chmod -R g+s /backups
sudo chmod +x db-backup.sh
# add mysql backup user credentials into environment file
echo "export MYSQL_USER=db_user_backups" > /backups/.env
echo "export MYSQL_PASS={COMPLEX-PASSWORD}" >> /backups/.env
Отворите дб-бацкуп.сх nano /backups/db-backup.shи налепите код испод у њега, а затим сачувајте датотеку (Цтрл+Кс -> И -> притисните Ентер) .
DB_NAMES=( 'db-vultr-site' 'db-vultr-blog' 'db-vultr-app' ) #replace with your own database name(s)
BKUP_NAMES=()
BKUP_DIR="/backups"
# get total number of directories
total_dbs=${#DB_NAMES[@]}
# create backup file names
for (( i=0; i<${total_dbs}; i++ )); do
BKUP_NAMES[$i]="`date +%Y%m%d%H%M`-backup-$${DB_NAMES[$i]}.sql.gz"
done
# get backup users credentials
source $BKUP_DIR/.env
# create backups
for (( i=0; i<${total_dbs}; i++ )); do
# NOTE: --routines flag makes sure stored procedures are also backed up
mysqldump --routines -u ${MYSQL_USER} -p${MYSQL_PASS} | gzip > ${BKUP_DIR}/${BKUP_NAMES[$i]}
done
Горњи код се креће кроз низ са именом(овима) база података које желите да направите резервну копију и то чини.
Цроњоб Сетуп
Подесите цроњоб да се покреће сваке поноћи који покреће скрипту за резервну копију и чува резултат/излаз у дневник резервне копије.
Отворите цронтаб
crontab -e
Додајте унос испод у цронтаб
0 0 * * * /usr/bin/env bash /backups/db-backup.sh &>> /backups/db-backup.log
Напомена: Током тестирања можете подесити цроњоб да се покреће сваких 1 минут уместо као испод
* * * * * /usr/bin/env bash /backups/db-backup.sh &>> /backups/db-backup.log
-ИЛИ- сваких 5 минута (замените 5 са бројем минута који желите)
*/5 * * * * /usr/bin/env bash /backups/db-backup.sh &>> /backups/db-backup.log
Шта је следеће
Вероватно нећете желети да ваше резервне копије буду на истим серверима на којима се покреће ваша база података, већ на серверу на другој географској локацији. Постоји неколико начина да се то уради, у распону од коришћења СФТП-а до коришћења прилагођених алата које пружа безброј добављача складиштења у облаку који су доступни. Једна добра алтернатива је Рсинц као што је овде објашњено - вултр.цом/доцс/сетуп-филе-мирроринг-усинг-рсинц-ин-дебиан-убунту
Написао Лами Адабониан