전체 백업은 데이터베이스의 모든 데이터와 모든 개체를 백업하는 것입니다.
MySQL 서버의 데이터 파일은 디스크 기반의 텍스트 파일이므로 전체 백업은 데이터베이스 파일을 복사하는 것이 가장 간단하고 빠른 방법입니다.
그러나 MySQL 서버의 데이터 파일은 서버가 실행되는 동안 항상 열려 있습니다. 진정한 전체 백업을 위해서는 먼저 MySQL 데이터베이스 서버를 중지해야 합니다.
데이터의 무결성을 보장하려면 MySQL 서버를 중지하기 전에 플러시 테이블 문을 실행하여 모든 데이터를 데이터 파일에 써야 합니다. 프로덕션 환경에서 백업을 위해 데이터베이스를 중지하는 것은 바람직하지 않기 때문에 학생들은 이 방법이 실현 가능하지 않다는 점만 알아야 합니다.
mysqldump 명령을 사용하여 테이블, 데이터베이스 및 데이터베이스 시스템을 백업합니다.
mysqldump [-h主机名] –u用户名 –p密码 --lock-all-tables --database [tables] > 文件名
-h 생략 가능한 호스트 이름은 로컬 서버를 나타내며 --lock-all-tables는 해당 테이블의 모든 테이블에 읽기 잠금을 적용합니다. 백업할 데이터베이스(이 과정에서 데이터베이스는 엄격하게 읽기 전용 상태입니다.) --database 뒤에는 백업해야 할 테이블이 올 수 있습니다. 테이블 이름을 지정하지 않으면 백업한다는 의미입니다. 전체 데이터베이스.
학생 테이블을 준비하고 세계 데이터베이스에 테이블을 구축하세요.
테이블 만들기:
CREATE DATABASE world; USE world; CREATE TABLE student( stuId INT(10) NOT NULL, stuName VARCHAR(10) NOT NULL, stuAge INT(10) NOT NULL, PRIMARY KEY(stuId) );
데이터 삽입:
INSERT INTO student(stuId, stuName, stuAge) VALUES(1, 'zhangsan', 18), (2, 'lisi', 19),(3, 'wangwu', 18);
모든 데이터를 데이터 파일에 쓰려면 flush tables;
문을 사용하세요.
FLUSH TABLES;
mysql 환경을 종료하고 mysqldump 명령을 사용하여 전체 백업을 만듭니다. 데이터베이스 세계의 :
mysqldump -u root -p --lock-all-tables --databases world > /tmp/world.sql
/tmp 디렉토리에 들어가서 백업 파일을 봅니다:
cd /tmp ls
이제 우리는 세계 라이브러리를 완전히 백업했으며 데이터 손실을 두려워하지 않습니다.
세계 데이터베이스에서 학생 테이블 손실 시뮬레이션:
DROP TABLE student;
테이블이 삭제되었는지 확인
SHOW TABLES;
mysql 명령을 사용하여 데이터베이스 복원:
mysql -uroot -p < /tmp/world.sql
mysql 환경에 들어가서 복구 결과 보기:
SHOW TABLES;
출력 결과:
테이블의 데이터 확인:
SELECT * FROM student;
증분 백업은 마지막 전체 백업 또는 증분 백업 이후 변경된 데이터를 백업하는 것입니다. 백업은 바이너리 로그 파일에 의존하며 데이터베이스를 열어야 합니다. 먼저 데이터베이스의 전체 백업을 수행하고 동시에 binlog 로그를 새로 고치십시오. 이 백업 이후의 모든 작업은 새로운 binlog 로그에 기록됩니다. 컨텐츠의 지속적인 증가를 구현하려면 추가된 binlog만 백업하면 됩니다. 데이터베이스의 완벽한 백업. 데이터베이스에 이상이 발생하면 가장 최근의 전체 백업을 먼저 복원한 후 증분 백업 파일을 순차적으로 하나씩 복원하여 데이터베이스 복구를 수행할 수 있습니다.
위 내용은 MySQL 데이터베이스의 전체 백업과 증분 백업을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!