MySQL 데이터베이스의 콜드 백업
머리말
이 환경은 Centos 7.8 시스템을 기반으로
특정 구성 을 위해 MySQL-5.7.14를 빌드 합니다. MySQL-5.7.14 환경 구성을 참조하십시오.
백업은 시스템에서 고려해야 할 가장 중요한 사항입니다. 시스템의 전체 계획, 개발 및 테스트 프로세스에서 차지하는 비중은 1 % 미만이지만 중요하지 않고 모호해 보이는 작업은 복원 되어야만 진정으로 반영 될 수 있습니다. 이는 데이터 손실 및 데이터 다운 머신을 보려는 시도를 수신 할 수 없다는 것입니다. 데이터베이스 백업도 중요하며 다음으로 MySQL 데이터베이스 전략을 소개합니다.
1. 데이터베이스 백업 유형
백업 분류
1. 핫 백업, 웜 백업, 콜드 백업 (서버 상태에 따라 다름)
- 핫 백업 : 읽기 및 쓰기는 영향을받지 않습니다.
- 웜 백업 : 읽기 작업 만 수행 할 수 있습니다.
- 콜드 백업 : 오프라인 백업, 읽기 및 쓰기 작업이 중단됩니다.
2. 물리적 백업 및 논리적 백업 (개체에서 분리)
- 물리적 백업 : 데이터 파일 복사;
- 논리적 백업 : 데이터를 텍스트 파일로 내 보냅니다.
3. 전체 백업, 증분 백업, 차등 백업 (데이터 수집에서 분리)
- 전체 백업 : 모든 데이터를 백업합니다.
- 증분 백업 : 마지막 전체 백업 또는 증분 백업 이후 변경된 데이터 만 백업합니다.
- 차등 백업 : 마지막 전체 백업 이후 변경된 데이터 만 백업
백업 전략의
장단점 비교
논리적 백업의 장단점
1. 논리적 백업의 장점 :
- 백업 속도 측면에서 두 가지 유형의 백업은 서로 다른 스토리지 엔진에 따라 다릅니다.
- 물리적 백업의 복원 속도는 매우 빠릅니다. 그러나 물리적 백업의 최소 세분성은 테이블에 대해서만 수행 할 수 있습니다.
- 논리적 백업의 구조는 일반적으로 순수 ASCII이므로 텍스트 처리 도구를 사용하여
- 논리적 백업은 호환성이 매우 강력하지만 물리적 백업은 버전 요구 사항이 매우 높습니다.
- 논리적 백업은 데이터 보안도 보장합니다.
2. 논리적 백업의 단점 :
- 논리 백업은 RDBMS에 추가 부담을주는 반면 베어 백업에는 부담이 없습니다.
- 논리적 백업의 결과는 소스 파일보다 클 수 있습니다. 너무 많은 사람들이 백업 내용을 압축합니다.
- 논리 백업은 부동 소수점 숫자의 정밀도 정보를 잃을 수 있습니다.
둘째, 데이터베이스 백업의 내용
- 데이터 파일
- 로그 파일 (예 : 트랜잭션 로그, 바이너리 로그)
- 저장 프로 시저, 저장 함수, 트리거
- 구성 파일 (매우 중요하며 각 구성 파일을 백업해야 함)
- 데이터베이스 백업을 구현하는 데 사용되는 스크립트, 데이터베이스 정리를위한 Crontab 등
3. MySQL 데이터베이스의 콜드 백업
1. 환경 준비
Centos 시스템을 기반으로하는 두 개의 MySQL-7.5.14 서버
node01 및 node02
2. 백업 요구 사항
요구 사항 : node01의 MySQL 데이터베이스의 모든 데이터를 node02의 데이터베이스 서버에 백업하고 node02의 서버에서 백업 데이터의 가용성을 확인합니다.
3. 백업 프로세스
node01 노드 서버 데이터베이스 정보보기
mysql> use db1;
Database changed
mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| fruits |
+---------------+
1 row in set (0.00 sec)
mysql> select * from fruits;
+------+------+------------+---------+
| f_id | s_id | f_name | f_price |
+------+------+------------+---------+
| a1 | 101 | apple | 5.20 |
| a2 | 103 | apricot | 2.20 |
| b1 | 101 | blackberry | 10.20 |
| b2 | 104 | berry | 7.60 |
| b5 | 107 | xxxx | 3.60 |
| bs1 | 102 | orange | 11.20 |
| bs2 | 105 | melon | 8.20 |
| c0 | 101 | cherry | 3.20 |
| l2 | 104 | lemon | 6.40 |
| m1 | 106 | mango | 15.60 |
| m2 | 105 | xbabay | 2.60 |
| m3 | 105 | xxtt | 11.60 |
| o2 | 103 | coconut | 9.20 |
| t1 | 102 | banana | 10.30 |
| t2 | 102 | grape | 5.30 |
| t4 | 107 | xbababa | 3.60 |
+------+------+------------+---------+
16 rows in set (0.00 sec)
mysql>
node01 노드, 데이터베이스 백업 파일 팩 시작
# 停止mysqld服务
[root@mysql-yum ~]# systemctl stop mysqld
# 打包文件
[root@mysql-yum ~]# cd /var/lib/mysql
[root@mysql-yum mysql]# ll
total 110660
-rw-r-----. 1 mysql mysql 56 Jan 14 13:38 auto.cnf
-rw-------. 1 mysql mysql 1679 Jan 14 13:38 ca-key.pem
-rw-r--r--. 1 mysql mysql 1074 Jan 14 13:38 ca.pem
-rw-r--r--. 1 mysql mysql 1078 Jan 14 13:38 client-cert.pem
-rw-------. 1 mysql mysql 1679 Jan 14 13:38 client-key.pem
drwxr-x--- 2 mysql mysql 56 Jan 16 17:30 db1
-rw-r----- 1 mysql mysql 309 Jan 16 17:34 ib_buffer_pool
-rw-r-----. 1 mysql mysql 12582912 Jan 16 17:34 ibdata1
-rw-r-----. 1 mysql mysql 50331648 Jan 16 17:34 ib_logfile0
-rw-r-----. 1 mysql mysql 50331648 Jan 14 13:38 ib_logfile1
drwxr-x---. 2 mysql mysql 4096 Jan 14 13:38 mysql
drwxr-x---. 2 mysql mysql 8192 Jan 14 13:38 performance_schema
-rw-------. 1 mysql mysql 1679 Jan 14 13:38 private_key.pem
-rw-r--r--. 1 mysql mysql 451 Jan 14 13:38 public_key.pem
-rw-r--r--. 1 mysql mysql 1078 Jan 14 13:38 server-cert.pem
-rw-------. 1 mysql mysql 1675 Jan 14 13:38 server-key.pem
drwxr-x---. 2 mysql mysql 8192 Jan 14 13:38 sys
[root@mysql-yum mysql]# tar czf /opt/mysql_datafile.bak.tar.gz *
[root@mysql-yum mysql]# ll /opt/
total 1348
-rw-r--r-- 1 root root 1378773 Jan 16 17:42 mysql_datafile.bak.tar.gz
# 拷贝文件
[root@mysql-yum mysql]# scp /opt/mysql_datafile.bak.tar.gz 192.168.5.12:/opt/
node02 노드 시작, 응답 데이터
# 查看备份数据包
[root@mysql-rpm ~]# ll /opt/mysql_datafile.bak.tar.gz
-rw-r--r-- 1 root root 1378773 Jan 16 17:43 /opt/mysql_datafile.bak.tar.gz
# 停止mysqld服务
[root@mysql-rpm ~]# systemctl stop mysqld
# 删除原有的mysqld服务数据存放目录的文件
[root@mysql-rpm ~]# cd /var/lib/mysql
[root@mysql-rpm mysql]# rm -rf ./*
# 解压备份数据到mysqld服务数据存放目录
[root@mysql-rpm mysql]# tar xf /opt/mysql_datafile.bak.tar.gz -C /var/lib/mysql
[root@mysql-rpm mysql]# ll
total 110660
-rw-r----- 1 mysql mysql 56 Jan 14 13:38 auto.cnf
-rw------- 1 mysql mysql 1679 Jan 14 13:38 ca-key.pem
-rw-r--r-- 1 mysql mysql 1074 Jan 14 13:38 ca.pem
-rw-r--r-- 1 mysql mysql 1078 Jan 14 13:38 client-cert.pem
-rw------- 1 mysql mysql 1679 Jan 14 13:38 client-key.pem
drwxr-x--- 2 mysql mysql 56 Jan 16 17:30 db1
-rw-r----- 1 mysql mysql 309 Jan 16 17:34 ib_buffer_pool
-rw-r----- 1 mysql mysql 12582912 Jan 16 17:34 ibdata1
-rw-r----- 1 mysql mysql 50331648 Jan 16 17:34 ib_logfile0
-rw-r----- 1 mysql mysql 50331648 Jan 14 13:38 ib_logfile1
drwxr-x--- 2 mysql mysql 4096 Jan 14 13:38 mysql
drwxr-x--- 2 mysql mysql 8192 Jan 14 13:38 performance_schema
-rw------- 1 mysql mysql 1679 Jan 14 13:38 private_key.pem
-rw-r--r-- 1 mysql mysql 451 Jan 14 13:38 public_key.pem
-rw-r--r-- 1 mysql mysql 1078 Jan 14 13:38 server-cert.pem
-rw------- 1 mysql mysql 1675 Jan 14 13:38 server-key.pem
drwxr-x--- 2 mysql mysql 8192 Jan 14 13:38 sys
# 启动mysqld服务
[root@mysql-rpm mysql]# systemctl start mysqld
[root@mysql-rpm mysql]# netstat -lnutp | grep mysqld
tcp6 0 0 :::3306 :::* LISTEN 2135/mysqld
node02 노드 검증 백업 효과
[root@mysql-rpm mysql]# mysql -uroot -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.14 MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
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 |
| db1 |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql> use db1;
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
mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| fruits |
+---------------+
1 row in set (0.00 sec)
mysql> select * from fruits;
+------+------+------------+---------+
| f_id | s_id | f_name | f_price |
+------+------+------------+---------+
| a1 | 101 | apple | 5.20 |
| a2 | 103 | apricot | 2.20 |
| b1 | 101 | blackberry | 10.20 |
| b2 | 104 | berry | 7.60 |
| b5 | 107 | xxxx | 3.60 |
| bs1 | 102 | orange | 11.20 |
| bs2 | 105 | melon | 8.20 |
| c0 | 101 | cherry | 3.20 |
| l2 | 104 | lemon | 6.40 |
| m1 | 106 | mango | 15.60 |
| m2 | 105 | xbabay | 2.60 |
| m3 | 105 | xxtt | 11.60 |
| o2 | 103 | coconut | 9.20 |
| t1 | 102 | banana | 10.30 |
| t2 | 102 | grape | 5.30 |
| t4 | 107 | xbababa | 3.60 |
+------+------+------------+---------+
16 rows in set (0.00 sec)
mysql>
데이터 백업이 완료되었습니다! ! !