>  기사  >  데이터 베이스  >  MySQL 데이터 백업 및 복구에 대한 자세한 설명

MySQL 데이터 백업 및 복구에 대한 자세한 설명

迷茫
迷茫원래의
2017-03-26 13:31:421165검색

이 글은 mysql5.5 centos6.5 64-bit를 사용합니다. (저는 rpm을 사용하여 mysql을 설치하며, 데이터베이스 설치 디렉터리가 기본값입니다.)

1. 백업 주의사항

읽기 잠금 문제: 데이터베이스(또는 특정 테이블)가 읽기 잠금 작업을 수행하면 데이터베이스의 쓰기 작업에 영향을 미치므로 데이터베이스에 쓸 수 없습니다. 이번에는. 데이터 백업 시 읽기 잠금 동작을 수행하는 이유는 백업 데이터의 무결성과 일관성을 보장하기 위한 것이며, 데이터 백업이 완료되면 자동으로 잠금이 해제됩니다.

업데이트 로그 문제: 데이터를 백업할 때마다 새 로그 파일이 생성됩니다. 이렇게 일정 기간 백업한 후 데이터베이스가 갑자기 중단되면 해당 시간의 데이터가 삭제됩니다. bin-log 로그를 통해 기간을 복원할 수 있습니다. 데이터 복구 단계: 백업된 데이터 복원 + 최신 bin-log 로그의 데이터 복원

2. 도서 백업에는 mysqldump 사용

mysqldump: 데이터베이스의 데이터를 텍스트 파일로 백업하는 명령입니다. 테이블의 구조와 테이블의 데이터는 생성된 텍스트 파일에 저장됩니다.

mysqldump 명령 작동 방식: 먼저 백업해야 하는 테이블의 구조를 찾은 다음 텍스트 파일에 CREATE 문을 생성합니다. 그런 다음 테이블의 모든 레코드를 INSERT 문으로 변환합니다. 그런 다음 이러한 문을 통해 테이블을 만들고 데이터를 삽입할 수 있습니다.

테스트 데이터베이스를 /tmp/mysql_back/ 디렉터리에 백업합니다.

 [root@localhost tmp]# mysqldump -uroot -p111111 test -l -F > '/tmp/mysql_back/test.sql';

매개변수 해석:

1.mysqldump mysql 데이터 백업 명령

2. -uroot -p111111 사용자 이름 및 비밀번호

3. test: 백업할 데이터베이스 이름

4. 읽기 잠금 제어

5 , -F: 새 로그 파일 생성

이 명령문을 실행하면 /var에 새 bin-log 로그 mysql-bin.000002

6이 생성되는 것을 확인할 수 있습니다. /lib/mysql 디렉토리, /tmp/mysql_back/test.sql : 생성된 백업 파일의 위치와 이름

3. 데이터 복구

1. 복구:

 [root@localhost tmp]# mysql -uroot -p111111 test -v -f</tmp/mysql_back/test.sql

-v: 가져오기 세부 정보 보기

-f: 가져오기 프로세스 중에 오류가 발생하면 이를 건너뛰고 다음 명령문을 계속 실행할 수 있습니다.

2. bin-log 로그의 데이터를 복원합니다.

/var/lib/mysql

[ root@에 있는 mysql-bin.000002 로그의 모든 레코드입니다. localhost mysql]# mysqlbinlog --no-defaults mysql-bin.000002 |mysql -uroot -p111111 test;

3. bin-log 로그의 지정된 위치에 데이터를 복원합니다

전달된 위치 복원 데이터

BEGIN
/*!*/;
# at 175
#170206 22:55:48 server id 1  end_log_pos 263     Query    thread_id=17    exec_time=0    error_code=0
use `test`/*!*/;
SET TIMESTAMP=1486392948/*!*/;
insert into t1 values(10)
/*!*/;
# at 263
#170206 22:55:48 server id 1  end_log_pos 290     Xid = 178
COMMIT/*!*/;
# at 290
#170206 22:55:54 server id 1  end_log_pos 358     Query    thread_id=17    exec_time=0    error_code=0
SET TIMESTAMP=1486392954/*!*/;
BEGIN
/*!*/;
# at 358
#170206 22:55:54 server id 1  end_log_pos 446     Query    thread_id=17    exec_time=0    error_code=0
SET TIMESTAMP=1486392954/*!*/;
insert into t1 values(12)
/*!*/;
# at 446
#170206 22:55:54 server id 1  end_log_pos 473     Xid = 179
COMMIT/*!*/;
# at 473
#170206 22:56:42 server id 1  end_log_pos 547     Query    thread_id=17    exec_time=0    error_code=0
SET TIMESTAMP=1486393002/*!*/;
truncate t1

bin-log 로그의 데이터를 위치 172, 473(end_log_pos)으로 복원

[root@localhost mysql]# mysqlbinlog --no-defaults mysql -bin .000002 --start-position="175" --stop-position="473"|mysql -uroot -p111111 test;

4. bin-log 로그에서 지정된 기간의 데이터를 복원합니다.

형식: 3

--start-position="175"를 --start-date="2016-12-30 21:30:34"

으로 교체 --stop-position="473"은 --stop-date="2016-12-30 23:30:34"

로 대체됩니다.

위 내용은 MySQL 데이터 백업 및 복구에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.