== 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 мора да биде вклучен. \\ Процедурата е: * 1) враќање на целосниот backup, * 2) извршување на mysqlbinlog со --stop-datetime * 3) внесување на replay настани назад во MySQL. == Automation