mySQL에는 논리적 백업과 물리적 백업이 있습니다. 논리적 백업의 가장 큰 장점은 다양한 스토리지 엔진의 백업에도 동일한 방법을 사용할 수 있다는 점이다. 물리적 백업은 다르며, 스토리지 엔진마다 백업 방법이 다릅니다.
MySQL에서 논리적 백업은 mysqldump를 사용하여 데이터베이스의 데이터를 텍스트 파일로 백업한 내용을 볼 수 있다. 그리고 편집되었습니다. 백업 범위에 따라 백업은 다음 세 가지 백업 유형으로 나눌 수 있습니다.
지정된 데이터베이스 또는 데이터베이스의 일부 테이블 백업
mysqldump [옵션] 데이터베이스 이름 [테이블 이름] > data.sql
지정된 여러 데이터베이스 백업
mysqldump [옵션] –database > data.sql 데이터베이스 1 데이터베이스 2 데이터베이스 3...
모든 데이터베이스 백업
mysqldump [옵션] –all-database > data.sql
분석: [옵션] 백업 시 필요한 권한 정보 등 mysqldump –help를 통해 볼 수 있는 mysqldump에 대한 많은 옵션이 있습니다. 데이터 백업의 일관성을 보장하려면 MySQL 스토리지 엔진이 북쪽에 있을 때 -l 매개변수를 추가해야 합니다. 이는 백업 기간 동안 모든 테이블에 읽기 잠금을 추가한다는 의미입니다. , 쓰지 않았습니다. 그러나 InnoDB 엔진의 경우 –single-transaction을 사용할 수 있습니다. data.sql이 백업한 데이터 파일
매개변수:
l: 모든 테이블 잠금을 나타냅니다.
f: 새 날짜 파일 생성을 나타냅니다.
인스턴스는 xxpt입니다. 데이터베이스의 모든 테이블은 dequan.sql 테이블에 백업됩니다. 명령은 다음과 같습니다.
mysqldump -uroot -p xxpt >dequan.sql
위에서 백업 경로를 지정하지 않았기 때문에 기본적으로 현재 경로로 백업됩니다. 경로이므로 백업은 D:wampbinmysqlmysql5에 있습니다. .6.17bin 경로가 다운되었습니다.
Mysqldump 복구도 매우 간단합니다. 백업을 입력으로 사용하면 됩니다. 그 결과는 다음과 같습니다.
mysql -uroot -p dbname
불완전 복구에는 시점 복구와 위치 기반 복구가 포함됩니다. 시점과 위치는 바이너리 로그(binlog log)의 시점과 위치에 해당합니다.
데이터룸이 오후 4시부터 5시 사이에 잘못 설정되어 있으면 복구 시 건너뛰어야 합니다. . 먼저 binlog 로그를 살펴보겠습니다. 예를 들어, 오후 4시 이후에 데이터를 업데이트하는 것은 잘못된 것이므로 복구 중에 건너뛰어야 합니다. 오후 5시 이후에 데이터를 삭제하는 것은 정확하며 유지되어야 합니다.
1. mysql -uroot -p dbname을 통해
위치 복구를 사용할 때는 먼저 binlog 로그 파일을 확인해야 합니다. 위치 번호를 입력한 후 다음 명령을 사용하여 복원합니다.
mysqlbinlog D:wampbinmysqlmysql5.6.17datamybinlog.000012 –stop-position=716406|mysql -uroot -p
5포인트 이후 작업 복원
D: wampbinmysqlmysql5.6.17datamybinlog .000012 –start-position=723613|mysql -uroot -p
물리적 백업은 콜드 백업과 핫 백업으로 구분됩니다. . 논리적 백업에 비해 가장 큰 장점은 빠른 백업 및 복구 속도입니다. 물리적 백업의 원칙은 파일 cp를 기반으로 하기 때문입니다.
콜드 백업은 실제로 데이터베이스 서비스를 중지하고 데이터 파일을 복사하는 방법입니다. 이 방법은 MyISAM과 InnoDB 모두에 적합합니다.
복원: 먼저 Mysql 서비스를 중지하고 운영 체제 수준에서 MySQL 데이터 파일을 복원한 다음 Mysql 서비스를 다시 시작하고 Mysqlbinlog 도구를 사용하여 백업 이후의 모든 binlog를 복원합니다.
mysql의 다양한 스토리지 엔진의 핫 백업은 다릅니다.
MyISAM 스토리지 엔진의 백업 원리는 백업할 테이블에 읽기 잠금을 추가한 후 해당 데이터 파일을 백업 디렉터리에 복사하는 것입니다. 일반적인 방법
방법 1: mysqlhotcop 사용
mysqlhotcop db_name [디렉토리]
방법 2: 수동으로 테이블 복사본 잠금
먼저 데이터베이스의 모든 테이블에 읽기 잠금을 추가한 다음 데이터를 보호합니다.
읽기 잠금으로 모든 테이블 플러시 테이블을 잠급니다.
학습...
SELECT …INTO OUTFILE …+[options] 명령을 사용하여 구현합니다.
옵션 매개변수는 다음과 같습니다
기본 경로는 데이터에 해당하는 경로입니다.
mysqldump 사용
mysqldump - u 사용자 이름 -T targetDir dbname tableName[options]
예:
mysqldump -uroot -p -T D:/wamp/bin/mysql/mysql5.6.17/ xxpt t1
표시된 것처럼 두 개의 파일이 생성됩니다. 아래:
t1.txt에 데이터 정보가 저장됩니다. t1.sql 파일의 내용은 다음과 같습니다
-- MySQL dump 10.13 Distrib 5.6.17, for Win32 (x86) ---- Host: localhost Database: xxpt -- ------------------------------------------------------ -- Server version 5.6.17-log /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */;/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */;/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; ---- Table structure for table `t1`--DROP TABLE IF EXISTS `t1`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `t1` ( `id1` int(11) NOT NULL DEFAULT '0', `id2` int(3) unsigned zerofill NOT NULL DEFAULT '000') ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; -- Dump completed on 2016-04-18 19:30:51
방법 1:
데이터 인파일 로드
예:
데이터 인파일 'D:/wamp/bin/mysql/mysql5.6.17/t1.txt'를 테이블 t1에 로드
방법 2: mysqlinport 사용
위 내용은 MySQL 백업 및 복구에 대한 자세한 설명이며, 보다 자세한 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고하시기 바랍니다. !