| Version 22 (modified by , 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
- Чекор 1:
- 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
- Чекор 1: Stop 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
- 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
- Ако не е овозможено, тогаш во my.ini
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 mysql-bin.000003 | mysql -u root -p airportdb
- Сценарија кога би се употребил PITR:
- Случајно бришење податоци
- Погрешни UPDATE команди
- Кога треба да се вратат податоци од конкретен timestamp
- Враќање по ransomware напади или злонамерни операции
Automation
Note:
See TracWiki
for help on using the wiki.
