MariaDB와 MySQL은 바이너리 로그를 사용하여 데이터베이스의 모든 변경 사항을 기록합니다. 이 바이너리 로그는 포인트-인-타임 복구를 가능하게 하여 특정 시점으로 데이터베이스를 복원할 수 있습니다. MariaDB와 MySQL에서 바이너리 로그를 사용하여 데이터베이스를 복원하는 방법에 대해 알아보겠습니다.
바이너리 로그 이해하기
- 바이너리 로그는 데이터베이스의 모든 변경 사항을 기록합니다. 여기에는 테이블 생성, 데이터 삽입, 업데이트 및 삭제 등이 포함됩니다.
- 바이너리 로그는 포인트-인-타임 복구를 가능하게 합니다. 이는 특정 시점으로 데이터베이스를 복원할 수 있음을 의미합니다.
MariaDB, MySQL 바이너리 로그를 사용하여 데이터베이스 복구 단계
1. 데이터베이스 및 테이블 확인
복구해야 하는 데이터베이스인 ‘mydb’와 해당 데이터베이스의 테이블이 존재하는지 확인합니다.
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mydb |
| mysql |
| performance_schema |
+--------------------+
4 rows in set (0.000 sec)
MariaDB [(none)]> use mydb;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [mydb]> show tables;
+----------------+
| Tables_in_mydb |
+----------------+
| test |
+----------------+
1 row in set (0.000 sec)
2. 바이너리 로그 식별
현재 사용 중인 바이너리 로그 파일과 위치를 확인합니다. 다음 명령을 사용하여 확인할 수 있습니다.
MariaDB [(none)]> show master status;
+------------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------------+----------+--------------+------------------+
| mariadb-bin-bin.000001 | 334 | | |
+------------------------+----------+--------------+------------------+
1 row in set (0.000 sec)
3. 복구 SQL 파일 생성
바이너리 로그에서 SQL 문을 추출하여 복구 파일을 만듭니다. 다음 명령을 사용하여 수행할 수 있습니다.
[root@localhost ~]# mysqlbinlog /var/lib/mysql/mariadb-bin-bin.000001 > /tmp/mariadb-recovery.sql
[root@localhost ~]# ls -l /tmp/mariadb-recovery.sql
-rw-r--r--. 1 root root 1152 Dec 6 10:45 /tmp/mariadb-recovery.sql
4. 기존 데이터베이스 삭제 (필요한 경우)
복원하려는 데이터베이스가 이미 존재하고 덮어써야 하는 경우 DROP DATABASE
명령을 사용하여 삭제합니다.
MariaDB [(none)]> drop database mydb;
Query OK, 1 row affected (0.351 sec)
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.000 sec)
5. 복구 파일에서 복원
복구 파일에 있는 SQL 문을 실행하여 데이터베이스를 복원합니다. 다음 명령을 사용하여 수행할 수 있습니다.
[root@localhost ~]# mysql -u root -p < /tmp/mariadb-recovery.sql
Enter password:
6. 복원 확인
복원이 성공적으로 완료되었는지 확인합니다. 다음 명령을 사용하여 확인할 수 있습니다.
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mydb |
| mysql |
| performance_schema |
+--------------------+
4 rows in set (0.000 sec)
MariaDB [(none)]> use mydb;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [mydb]> show tables;
+----------------+
| Tables_in_mydb |
+----------------+
| test |
+----------------+
1 row in set (0.000 sec
추가 고려 사항
- 여러 바이너리 로그: 여러 바이너리 로그가 관련된 경우 올바른 순서대로 처리해야 합니다.
- 부분 복원: 특정 테이블이나 데이터만 복원하려면 복구 파일의 SQL 문을 필터링할 수 있습니다.
- 백업: 정기적인 백업은 재해 복구에 필수적입니다. 바이너리 로그는 기본 백업 방법이 아니어야 합니다.
- 권한: 데이터베이스 및 바이너리 로그에 액세스할 수 있는 권한이 있는지 확인하세요.
바이너리 로그와 복구 SQL 파일을 사용하여 MariaDB 데이터베이스를 복구하는 것은 강력한 복구 기술입니다. 그러나 언제나 주의를 기울이고 이러한 작업을 수행하기 전에 적절한 백업이 있는지 확인해야 합니다. 이 단계별 안내를 따라 데이터 손실 시 효과적으로 MariaDB 데이터베이스를 복구할 수 있습니다.