이 글은 mysql5.5 centos6.5 64-bit를 사용합니다. (저는 rpm을 사용하여 mysql을 설치하며, 데이터베이스 설치 디렉터리가 기본값입니다.)
읽기 잠금 문제: 데이터베이스(또는 특정 테이블)가 읽기 잠금 작업을 수행하면 데이터베이스의 쓰기 작업에 영향을 미치므로 데이터베이스에 쓸 수 없습니다. 이번에는. 데이터 백업 시 읽기 잠금 동작을 수행하는 이유는 백업 데이터의 무결성과 일관성을 보장하기 위한 것이며, 데이터 백업이 완료되면 자동으로 잠금이 해제됩니다.
업데이트 로그 문제: 데이터를 백업할 때마다 새 로그 파일이 생성됩니다. 이렇게 일정 기간 백업한 후 데이터베이스가 갑자기 중단되면 해당 시간의 데이터가 삭제됩니다. bin-log 로그를 통해 기간을 복원할 수 있습니다. 데이터 복구 단계: 백업된 데이터 복원 + 최신 bin-log 로그의 데이터 복원
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 : 생성된 백업 파일의 위치와 이름
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!