wiki:Backup

Version 21 (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 stop 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 stop mysql

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';

Automation

Note: See TracWiki for help on using the wiki.