wiki:Backup

Version 28 (modified by 222039, 10 days ago) ( diff )

--

Backup

Logical Backup

  • mysqldump - Стандардна алатка за logical backups
    • Целосна резервна копија: mysqldump -u root -p airportdb > airportdb_backup.sql
    • Специфични табели: mysqldump -u root -p airportdb flight flight_log > partial_backup.sql
    • Компресија: mysqldump -u root -p airportdb | xz > airportdb_backup.sql.xz
    • JSON: mysqldump -u root -p airportdb | mysql2json > airportdb_backup.json (Можно и во XML & CSV)
    • Само структура (без податоци): mysqldump -u root -p --no-data airportdb > schema_only.sql

Physical Backup

  • Целосен physical backup: mysqlbackup --backup-dir=/backup/full_backup backup
  • XtraBackup (САМО ЗА LINUX!!!):
    • Чекор 1: xtrabackup --backup --target-dir=/backups/full_backup
    • Чекор 2: xtrabackup --prepare --target-dir=/backups/full_backup
    • Чекор 3: restoration
  • Manual Backup:
    • Чекор 1: Stop MySQL - net stop MySQL80 | sudo systemctl stop mysql
    • Чекор 2: Копирање на MySQL data directory - C:\ProgramData\MySQL\MySQL Server 8.0\Data | /var/lib/mysql/
    • Чекор 3: Start MySQL - net start MySQL80 | sudo systemctl start mysql

Restoration

Logical Restore

  • Враќање на целата база: mysql -u root -p airportdb < airportdb_backup.sql
  • За враќање на специфични табели од целосниот backup треба:
    • Метод 1: Extract со sed
    • Метод 2: Extract со grep
    • Метод 3: Со awk
    • mysql -u root -p airportdb < extracted_table.sql

Од целосен SQL backup не може директно да се враќаат само одредени табели – мора прво да се издвојат со sed/grep/awk и да се внесе само тој дел во MySQL.

Physical Restore

  • Physical Restore:
    • Stop MySQL: net stop MySQL80 | sudo systemctl stop mysql
    • Избриши ја старата data directory (или rename): C:\ProgramData\MySQL\MySQL Server 8.0\Data | /var/lib/mysql/
    • Копирање на backup-от назад во data directory
    • Start MySQL: net start MySQL80 | sudo systemctl start mysql
  • XtraBackup:
    • Подготовка на backup-от: xtrabackup --prepare --target-dir=/backups/full_backup
    • Stop MySQL: sudo systemctl stop mysql
    • Враќање на backup-от: sudo xtrabackup --copy-back --target-dir=/backups/full_backup
    • Поставување на дозволи: sudo chown -R mysql:mysql /var/lib/mysql
    • Start MySQL: sudo systemctl start mysql

Верификација по Restoration

По враќањето на backup-от, задолжително провери:

  • SELECT COUNT(*) FROM table_name; - Провери број на записи
  • SHOW TABLES; - Провери дали сите табели се вратени
  • SHOW TABLE STATUS; - Провери статус на табелите
  • Тестирај неколку SELECT и JOIN queries

Point-in-Time Recovery (PITR)

Point-In-Time Recovery овозможува враќање на базата податоци до прецизен момент. Методот користи последен целосен backup и ги replay MySQL binary логовите (INSERT, UPDATE, DELETE) до одреден timestamp или позиција. За да работи PITR, binlog мора да биде вклучен.

Процедурата е:

  • Враќање на целосниот backup,
  • Извршување на mysqlbinlog со --stop-datetime
  • Внесување на replay настани назад во MySQL.
  • Поставување на Binary Log:
    • SHOW VARIABLES LIKE 'log_bin'; - Провери дали е овозможено binary logging
      • Ако не е овозможено, тогаш во my.ini
        • log_bin = mysql-bin
        • binlog_format = ROW
        • server_id = 1
    • SHOW BINARY LOGS; Прегледај binary логови
    • SHOW BINLOG EVENTS IN 'binlog.000001';
  • PITR Процес
    • Врати од последниот целосен backup
    • Примени binary логови до специфична точка во време
      • mysqlbinlog --stop-datetime="2025-11-15 13:35:00" binlog.000001 | mysql -u root -p airportdb
    • Враќање до определена позиција во binlog-от
      • mysqlbinlog --start-position=100 --stop-position=500 binlog.000003 | mysql -u root -p airportdb
  • Сценарија кога би се употребил PITR:
    • Случајно бришење податоци
    • Погрешни UPDATE команди
    • Кога треба да се вратат податоци од конкретен timestamp
    • Враќање по ransomware напади или злонамерни операции

Automation

  • Доколку сакаме процесот на backup да биде целосно автоматизиран, можеме да користиме Task Scheduler во Windows за да креираме задачи кои ќе ја извршуваат соодветната скрипта. Скриптата ќе ги содржи командите за извршување на backup-от, а на самата задача може да специфицираме на колку време да се повторува, на пример дневно или неделно. На овој начин се обезбедува редовно, сигурно и автоматско зачувување на податоците.
Note: See TracWiki for help on using the wiki.