powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Публикации участников [закрыт для гостей] / MariaDB: инкрементальное резервное копирование баз данных в Ред ОС 8
1 сообщений из 1, страница 1 из 1
MariaDB: инкрементальное резервное копирование баз данных в Ред ОС 8
    #26
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Приведу пример скрипта для создания полной и дополнительных копий про помощи программы mariadb-backup.

Документация: https://mariadb.com/docs/server/server-usage/backup-and-restore/mariadb-backup/incremental-backup-and-restore-with-mariadb-backup

В РЕД OC 8 программа присутствует в штатном репозитории, как и MariaDB Server, находится в пакете, например, mariadb-backup-10.11.11-1.red80.x86_64.

В отличии от сриптового набора SQL запросов, которые создаются при дампе, представляет собой бинарный набор данных. Полезно при более-менее крупном наборе данных, когда ежедневное создание обычного SQL дампа может занимать продолжительное время. Плюс гибкость в оперировании.

Алгоритм

Воскресенье - полный бэкап
Понедельник - изменения от восресенья
Вторник - изменения от понедельника
и т.д. до следующего воскресенья, когда опять полный бэкап.

#####

Расписание
Код: BASH
1.
2.
3.
4.
5.
6.
7.
8.
#
0 7 * * sun /srv/scripts/backup/backup_mariabackup.sh --backup-full > /dev/null 2>&1
0 7 * * mon /srv/scripts/backup/backup_mariabackup.sh --backup-inc1 > /dev/null 2>&1
0 7 * * tue /srv/scripts/backup/backup_mariabackup.sh --backup-inc2 > /dev/null 2>&1
0 7 * * wed /srv/scripts/backup/backup_mariabackup.sh --backup-inc3 > /dev/null 2>&1
0 7 * * thu /srv/scripts/backup/backup_mariabackup.sh --backup-inc4 > /dev/null 2>&1
0 7 * * fri /srv/scripts/backup/backup_mariabackup.sh --backup-inc5 > /dev/null 2>&1
0 7 * * sat /srv/scripts/backup/backup_mariabackup.sh --backup-inc6 > /dev/null 2>&1
Пример скрипта
Код: BASH
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
#!/bin/bash
#

BACKUPDIR="/var/lib/mysql/_backup/mariabackup"

#
FULL="${BACKUPDIR}/full"
INC1="${BACKUPDIR}/inc1"
INC2="${BACKUPDIR}/inc2"
INC3="${BACKUPDIR}/inc3"
INC4="${BACKUPDIR}/inc4"
INC5="${BACKUPDIR}/inc5"
INC6="${BACKUPDIR}/inc6"
#

#####

do_backup_full() {
    DST="${FULL}/data"
    find ${FULL} -maxdepth 1 -mindepth 1 -type d -name "data" -exec rm -rf {} \;

    mariadb-backup --backup \
      --target-dir=${DST} \
      --user=root
}

do_backup_inc1() {
    SRC="${FULL}/data"
    DST="${INC1}/data"
    find ${INC1} -maxdepth 1 -mindepth 1 -type d -name "data" -exec rm -rf {} \;

    mariadb-backup --backup \
      --target-dir=${DST} \
      --incremental-basedir=${SRC} \
      --user=root
}

do_backup_inc2() {
    SRC="${INC1}/data"
    DST="${INC2}/data"
    find ${INC2} -maxdepth 1 -mindepth 1 -type d -name "data" -exec rm -rf {} \;

    mariadb-backup --backup \
      --target-dir=${DST} \
      --incremental-basedir=${SRC} \
      --user=root
}

do_backup_inc3() {
    SRC="${INC2}/data"
    DST="${INC3}/data"
    find ${INC3} -maxdepth 1 -mindepth 1 -type d -name "data" -exec rm -rf {} \;

    mariadb-backup --backup \
      --target-dir=${DST} \
      --incremental-basedir=${SRC} \
      --user=root
}

do_backup_inc4() {
    SRC="${INC3}/data"
    DST="${INC4}/data"
    find ${INC4} -maxdepth 1 -mindepth 1 -type d -name "data" -exec rm -rf {} \;

    mariadb-backup --backup \
      --target-dir=${DST} \
      --incremental-basedir=${SRC} \
      --user=root
}

do_backup_inc5() {
    SRC="${INC4}/data"
    DST="${INC5}/data"
    find ${INC5} -maxdepth 1 -mindepth 1 -type d -name "data" -exec rm -rf {} \;

    mariadb-backup --backup \
      --target-dir=${DST} \
      --incremental-basedir=${SRC} \
      --user=root
}

do_backup_inc6() {
    SRC="${INC5}/data"
    DST="${INC6}/data"
    find ${INC6} -maxdepth 1 -mindepth 1 -type d -name "data" -exec rm -rf {} \;

    mariadb-backup --backup \
      --target-dir=${DST} \
      --incremental-basedir=${SRC} \
      --user=root
}

#####

case "$1" in
    --backup-full)
        do_backup_full
        ;;
    --backup-inc1)
        do_backup_inc1
        ;;
    --backup-inc2)
        do_backup_inc2
        ;;
    --backup-inc3)
        do_backup_inc3
        ;;
    --backup-inc4)
        do_backup_inc4
        ;;
    --backup-inc5)
        do_backup_inc5
        ;;
    --backup-inc6)
        do_backup_inc6
        ;;
    *)
        echo "Usage: $0 --backup-full | --backup-inc1 | --backup-inc2 | --backup-inc3 | --backup-inc4 |­--backup-inc5 | --backup-inc6"
esac
Обратите внимание на
Код: BASH
1.
find ${FULL} -maxdepth 1 -mindepth 1 -type d -name "data" -exec rm -rf {} \;
Перед созданием копии удаляется предыдущий набор. -maxdepth 1 -mindepth 1 - важно, иначе подаляет лишнее, ограничиваемся только рабочей директорией создаваемого набора.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Публикации участников [закрыт для гостей] / MariaDB: инкрементальное резервное копирование баз данных в Ред ОС 8
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]