Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Публикации участников [закрыт для гостей] / MariaDB: инкрементальное резервное копирование баз данных в Ред ОС 8 / 1 сообщений из 1, страница 1 из 1
25.09.2025, 15:28
    #26
basename
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MariaDB: инкрементальное резервное копирование баз данных в Ред ОС 8
Приведу пример скрипта для создания полной и дополнительных копий про помощи программы 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
Форумы / Публикации участников [закрыт для гостей] / MariaDB: инкрементальное резервное копирование баз данных в Ред ОС 8 / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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