Windows 환경 : MySQL 전체 및 증분 백업 및 실제로 데이터베이스 데이터 복원

1. 환경 준비

1. MySQL 환경 설치

MySQL 데이터베이스 백업 및 복원 작업을 수행 할 때 MySQL 환경이 미리 설치되어 있어야하며 MySQL 서비스가 성공적으로 시작되었습니다.

(1) MySQL 환경이 설치되어 있지 않은 경우 https://blog.csdn.net/weixin_43184774/article/details/106020174 블로그를 참조하십시오.
(2) MySQL 환경이 성공적으로 설치 되었으면 실행을 엽니 다. 창에서 다음을 입력하십시오. services.msc를 사용하여 Windows 서비스 창을 열고 MySQL이 켜져 있는지 확인하십시오. 활성화되지 않은 경우 (1) 단계의 문서를 참조하여 MySQL 서비스를 활성화하십시오.


 

2. 로그 빈 로그 구성 추가

(1) MySQL 설치 디렉토리에서 my.ini 구성 파일을 찾습니다.

(2) my.ini 구성 파일을 열고 my.ini 파일의 [mysqld] 아래에 줄을 추가합니다.

log-bin = mysql-bin 

(3) MySQL 서비스를 다시 시작하면 MySQL 설치 디렉터리의 데이터 디렉터리에 mysql-bin.000001 로그 파일이 생성됩니다.

비고 : mysql-bin.00000X 로그 파일은 후속 증분 데이터베이스 복원 작업에 사용됩니다.이 파일은 예약 된 작업에 따라 자동으로 생성 될 수 있습니다.

(4) MySQL 운영 환경을 열고 다음 명령을 실행하여 log-bin이 켜져 있는지 확인합니다. 상태가 ON이면 정상적으로 켜져 있음을 의미합니다.

show variables like 'log_bin';

둘째, 테스트 데이터베이스 및 테이블 만들기

1. 테스트 데이터베이스 만들기

(1) MySQL 환경에 로그인하여 클래스 데이터베이스를 생성합니다. 명령은 다음과 같습니다.

create database class character set gbk;

(2) MySQL 설치 디렉터리의 데이터 디렉터리를 입력하면 성공적으로 생성 된 데이터베이스 파일이 표시됩니다.

(3) 클래스 데이터베이스를 만든 후이 데이터베이스를 사용하려면 다음 명령을 실행합니다.

use class


2. 테스트 데이터 테이블 만들기
 

(1) 다음 명령을 입력하여 학생 테이블을 만듭니다.

CREATE TABLE student

(

  id INT unsigned not null auto_increment primary key,

  username VARCHAR(8) not null

);



(2) 새로 생성 된 student 테이블을 보려면 다음 명령을 실행합니다.이 때 student는 데이터가없는 빈 테이블입니다.

SELECT *FROM student;

(3) 다음 명령을 실행하여 학생 테이블에 데이터를 삽입합니다.

insert into student values(1,'张学友');
insert into student values(2,'刘德华');

(4) 데이터 삽입 명령을 실행 한 후 학생 테이블. 이때 학생 테이블에는 두 개의 데이터가 있습니다.

SELECT *FROM student;


 

셋, 데이터베이스 전체 백업 및 복원

1. 전체 백업 데이터베이스

(1) cmd 창을 열고 MySQL 설치 디렉토리의 bin 디렉토리로 이동하십시오.

(2) 방금 만든 클래스 데이터베이스의 전체 백업을 수행하려면 bin 디렉토리에서 다음 명령을 실행하십시오.

mysqldump --opt --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE -u root --password=123456 class student > "D:\beifen20201119.sql"

설명 :
--host = 127.0.0.1은 백업 할 데이터베이스의 IP 주소입니다.
--port = 3306 데이터베이스 포트 번호
" D : \ beifen20201119.sql " 전체 클래스 데이터베이스를 루트 디렉터리에 백업합니다. 의 디스크 D, 그리고 beifen20201119.sql 호출 이름
클래스 학생 백업 할 데이터베이스 및 테이블의 이름입니다. 당신은 클래스의 전체 데이터베이스를 백업하거나 별도로 학생 테이블을 백업 할 수 있습니다. 참고 : 백업 드라이브 문자는 MySQL 설치 디렉토리와 동일한 디스크에 있어야합니다. 문자에서 그렇지 않으면 다음과 같은 메시지가 표시됩니다. Access denied 

(3) 백업에 필요하지 않은 테이블 작업 :
구문 :

mysqldump --opt --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE -u root --password=123456 dbname --ignore-table=dbname.table1 --ignore-table=dbname.table2 > ./db_files/test.sql


예 :

mysqldump --opt --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE -u root --password=123456 class --ignore-table=class.student > "D:\beifen20201124.sql

(4) 백업이 완료되면 해당 디렉터리에 SQL 파일이 자동으로 생성되고 해당 디렉터리에 들어가 전체 백업 데이터베이스를 볼 수 있습니다.

(5) 위의 단계를 .bat 배치 스크립트 파일로 캡슐화 한 다음 배치 파일을 두 번 클릭하여 실행하여 전체 백업 데이터베이스를 실행할 수 있습니다.
전체 백업 데이터베이스 스크립트는 다음과 같습니다. 참고 : 이에 따라 구성해야합니다. 실제 설정 스크립트 파일에

rem Auther By Anker
rem date:20201119
rem ******Backup MySQL Start******
@echo off
::设置时间变量
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%"

::创建存储的文件夹
if not exist "D:\mysql_backup" md "D:\mysql_backup"

::执行备份操作
"D:\software\MySQL\mysql-8.0.22-winx64\bin\mysqldump" --opt --user=root --password=123456 --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE --routines --events "class" >D:\software\beifen_%Ymd%.sql

::删除90天前的备份数据
forfiles /p "C:\mysql_backup" /m backup_*.sql -d -90 /c "cmd /c del /f @path"

@echo on
rem ******Backup MySQL End******

2. 전체 데이터베이스 복원 

(1) 다음 명령을 실행하여 미리 생성 된 클래스 데이터베이스를 삭제합니다.

drop database class;

(2) 다음 명령을 실행하여 학생 테이블을 쿼리하면 클래스 데이터베이스를 찾을 수 없음을 알 수 있습니다.

SELECT *FROM student;

(3) 이전 단계에서 drop 명령을 수행했기 때문에 모든 데이터베이스 데이터 및 구조를 삭제하는 것과 동일하며, 이때 데이터베이스 구조를 다시 생성해야 복원 작업을 수행 할 수 있습니다. 따라서 create database 명령을 다시 실행 한 다음이 클래스 데이터베이스를 사용합니다. 즉,

create database class character set gbk; 
use class

(4) 다음 명령을 실행하여 삭제 된 클래스 데이터베이스를 복원합니다.

source D:\beifen20201119.sql

(5) 다음 명령을 다시 실행하여 학생 테이블을 쿼리하면 이전 학생 테이블 데이터가 돌아온 것을 알 수 있습니다. 

SELECT *FROM student;

네, 증분 백업 및 데이터베이스 복원

1. 증분 백업 데이터베이스

(1) 다음 명령을 실행하고 학생 테이블에 2 개의 데이터를 더 삽입합니다.

insert into student values(3,'郭富城');
insert into student values(4,'黎明');

 

(2) 쿼리 명령을 실행하여 학생 테이블을 쿼리합니다. 이때 두 개의 데이터가 더 있습니다.

SELECT *FROM student;

 

(3) truncate student; 명령을 실행하여 student 테이블의 데이터를 삭제합니다.
특별한주의 : drop student; 명령이 실행되면 전체 학생 테이블 구조 및 데이터가 삭제되며 현재 전체 양만 복원 할 수 있습니다.

truncate student;

 

(4) query 명령을 다시 실행하여 student 테이블을 쿼리하면 student 테이블에 데이터가 없음을 알 수 있습니다.

SELECT *FROM student;

(5) 위의 단계를 .bat 배치 스크립트 파일로 캡슐화 한 다음 두 번 클릭하여 배치 파일을 실행하여 데이터베이스의 증분 백업을 수행 할 수 있습니다.
증분 백업 데이터베이스 스크립트는 다음과 같습니다. 참고 : 반드시 설정해야합니다 . 실제 설정에 따라이 스크립트 파일을 구성하십시오.

rem Auther By Anker
rem date:20201119
rem ******Backup MySQL Start******
@echo off
::设置时间变量
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%"

::执行增量备份操作
mysqladmin -u root -p123456 flush-logs

@echo on
rem ******Backup MySQL End******

2. 데이터베이스의 증분 복구 

(1) 증분 복구를 수행하기 전에 먼저 전체 복구를 수행하여 특정 기간 동안 데이터베이스 데이터를 최신 데이터로 복원해야합니다. 즉, 다음 명령을 실행합니다. source D : \ beifen20201119.sql

(2) 쿼리 명령을 다시 실행하여 학생 테이블을 쿼리하면 이전 학생 테이블 데이터가 다시 돌아 왔지만 테이블의 데이터는 Jacky Cheung 및 Andy Lau 뿐이며 추가 된 Guo Fucheng 및 나중에 Liming.

SELECT *FROM student;

 

(3) 새로 추가 된 Guo Fucheng 및 Liming 데이터를 복원하려면 bin-log 파일을 사용해야합니다. 즉, mysql 환경에서 다음 명령을 실행하십시오.

show binlog events in 'mysql-bin.000001';

 

(4) 빈 로그 콘텐츠에 기록 된 새벽 데이터의 시작 및 끝 위치보기

(5) MySQL 설치 디렉터리의 데이터 디렉터리에서 다음 명령을 실행하여 데이터 디렉터리에 백업해야하는 bin-log 파일을 sql 파일로 변환합니다.

mysqlbinlog --no-defaults mysql-bin.000001 --start-position=3898 --stop-position=4034 > d:\\zengliang.sql

(6) 이때 D 드라이브가 자동으로 zengliang.sql 파일을 생성하는 것을 볼 수 있습니다.

(7) 다음 명령을 실행하여 삭제 된 새벽 데이터를 복원합니다.

source d://zengliang.sql

(8) 질의 명령을 다시 실행하여 학생 테이블을 질의하면 이전 학생 테이블 새벽의 데이터가 다시 돌아온 것을 알 수 있습니다.

SELECT *FROM student;

다섯, 정기적으로 백업 작업 수행

(1) 시작 프로그램 검색 목록에서 "Task Scheduler"를 검색하여 엽니 다.

(2) 작업 스케줄러를 연 후 오른쪽의 "기본 작업 생성"을 클릭하고 예약 된 작업의 이름과 설명을 작성합니다.

(3) 임의로 이름을 선택하고 "다음"을 클릭합니다.

(4) 필요에 따라 타이밍 실행 기간을 클릭하여 선택하고 "다음"을 클릭하십시오.

(5) 필요한 실행 시간을 설정하고 "다음"을 클릭합니다.

(6) "프로그램 시작"을 선택하고 "다음"을 클릭합니다.

(7) 완료된 백업 스크립트 파일을 찾아 선택하고 "다음"을 클릭합니다.

(8) 정보가 정확한지 확인한 후 "마침"을 클릭합니다.

(9) 예약 된 작업이 생성 된 후 생성 한 작업은 작업 목록에 표시되며 작업을 마우스 오른쪽 버튼으로 클릭하여 삭제할 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

추천

출처blog.csdn.net/weixin_43184774/article/details/109830081