Network & Server Factory

개인 공부 기록

Server & OS/Monitoring

[ZABBIX] zabbix-backup 스크립트로 설정 DB 백업하고 다른 서버에 복원

1nfra 2022. 10. 7. 02:42

Zabbix를 다른 서버로 옮기려고 maxhq/zabbix-backup 스크립트(0.9.3)로 설정 DB를 백업하고, 새 서버의 zabbix DB를 다시 만든 뒤 복원했습니다. 이 스크립트는 이력(history, trends 등) 같은 큰 테이블은 구조만 백업하고, 설정 데이터만 옮깁니다.

1. 환경

항목 내용
DB MySQL 5.7.33 (zabbix DB)
백업 도구 maxhq/zabbix-backup 0.9.3 (zabbix-dump)
백업 범위 설정 데이터 (history, trends, events 등 큰 테이블은 스키마만)
주의: 복원 과정에서 새 서버의 기존 zabbix DB를 삭제(DROP)합니다. 새 서버에 남겨야 할 데이터가 있다면 먼저 백업해 두세요.

2. 백업 (기존 서버)

2.1 스크립트 준비

아래 저장소에서 소스를 내려받아 백업할 Zabbix 서버로 옮긴 뒤 압축을 풉니다.

 

GitHub - maxhq/zabbix-backup: Backup script for Zabbix configuration data (MySQL/PostgreSQL)

Backup script for Zabbix configuration data (MySQL/PostgreSQL) - GitHub - maxhq/zabbix-backup: Backup script for Zabbix configuration data (MySQL/PostgreSQL)

github.com

[root@zabbix ~]# tar -xvf zabbix-backup-0.9.3.tar.gz
zabbix-backup-0.9.3/
zabbix-backup-0.9.3/.gitignore
zabbix-backup-0.9.3/LICENSE.txt
zabbix-backup-0.9.3/README.md
zabbix-backup-0.9.3/RELEASE.md
zabbix-backup-0.9.3/get-table-list.pl
zabbix-backup-0.9.3/zabbix-dump
[root@zabbix ~]# ls
zabbix-backup-0.9.3  zabbix-backup-0.9.3.tar.gz
[root@zabbix ~]#

2.2 백업 실행

zabbix-dump를 실행하면 zabbix_server.conf에서 DB 정보를 읽어 백업합니다. 끝나면 .sql.gz 파일이 만들어집니다.

[root@zabbix ~]# ./zabbix-backup-0.9.3/zabbix-dump
Reading database options from /etc/zabbix/zabbix_server.conf...
Configuration:
 - type:     mysql
 - socket:   /var/lib/mysql/mysql.sock
 - database: zabbix
 - user:     zabbix
 - output:   /root
Fetching list of existing tables...
Starting table backups...

For the following large tables only the schema (without data) was stored:
 - acknowledges
 - alerts
 - auditlog
 - auditlog_details
 - event_recovery
 - events
 - event_suppress
 - event_tag
 - history
 - history_log
 - history_str
 - history_text
 - history_uint
 - item_rtdata
 - problem
 - problem_tag
 - task
 - task_acknowledge
 - task_check_now
 - task_close_problem
 - task_remote_command
 - task_remote_command_result
 - trends
 - trends_uint

Compressing backup file...
Backup Completed
/root/zabbix_cfg_zabbix.localdomain_20221007-0216_db-mysql-4.4.2.sql.gz
[root@zabbix ~]# ls
zabbix-backup-0.9.3         zabbix_cfg_zabbix.localdomain_20221007-0216_db-mysql-4.4.2.sql.gz
zabbix-backup-0.9.3.tar.gz
[root@zabbix ~]#

3. 복원 (새 서버)

3.1 백업 파일 압축 해제

만들어진 .sql.gz 파일을 새 Zabbix 서버로 옮기고 gunzip으로 압축을 풉니다.

[root@zabbix backup]# ls
zabbix_cfg_zabbix.localdomain_20221007-0145_db-mysql-4.4.2.sql.gz
[root@zabbix backup]# gunzip zabbix_cfg_zabbix.localdomain_20221007-0145_db-mysql-4.4.2.sql.gz
[root@zabbix backup]# ls
zabbix_cfg_zabbix.localdomain_20221007-0145_db-mysql-4.4.2.sql

3.2 Zabbix 서비스 중지

[root@zabbix ~]# systemctl stop zabbix-server zabbix-agent httpd

3.3 zabbix DB 다시 만들기

MySQL에 접속해 기존 zabbix DB를 삭제하고 새로 만듭니다.

[root@zabbix ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 356
Server version: 5.7.33 MySQL Community Server (GPL)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| zabbix             |
+--------------------+
5 rows in set (0.00 sec)

mysql> drop database zabbix;
Query OK, 149 rows affected (0.20 sec)

mysql> create database zabbix character set utf8;
Query OK, 1 row affected (0.00 sec)

mysql> exit
Bye

3.4 백업 데이터 넣기

[root@zabbix ~]# mysql -u root -p zabbix < /backup/zabbix_cfg_zabbix.localdomain_20221007-0145_db-mysql-4.4.2.sql   Enter password:
[root@zabbix ~]#

3.5 서비스 다시 시작

중지했던 zabbix-server, zabbix-agent, httpd를 다시 시작하면 설정값이 새 서버로 옮겨집니다.

systemctl start zabbix-server zabbix-agent httpd

4. 정리

  • zabbix-backup 스크립트는 설정 데이터만 빠르게 백업해 서버 이전에 쓰기 좋습니다.
  • 이력 데이터(history, trends 등)는 스키마만 백업되므로 새 서버에서는 수집 이력이 새로 쌓입니다.
  • 복원 전에는 Zabbix 서비스를 멈추고, 대상 DB를 새로 만든 뒤 넣어야 합니다.
728x90
서울
--:--:--
-전체 글
-카테고리
오늘 방문