xtrabackup을 사용하여 mysql 데이터베이스를 백업하는 방법에 대한 지침
xtrabackup은 percona에서 제공하는 mysql 백업 도구로, 데이터베이스에 연결하여 데이터베이스 데이터를 백업하는 물리적인 백업 도구입니다. innodb 스토리지 엔진의 경우 전체 백업과 증분 백업을 지원합니다. myisam 스토리지 엔진은 증분 백업만 지원합니다. xtrabackup의 innodb 증분 백업은 테이블 공간의 LSN을 기반으로 하기 때문에 소위 LSN은 테이블 공간이 여러 데이터 블록으로 분할된다는 의미입니다. 각 데이터 블록은 해당 시퀀스 번호를 갖습니다. 일련번호가 업데이트되었습니다. 전체 백업은 모든 데이터 블록을 백업하는 것을 의미하며, 증분 백업은 전체 백업에서 마지막 데이터 블록의 일련번호를 기준으로 최신 데이터 블록의 일련번호로 백업하는 것을 의미합니다. myisam은 테이블스페이스를 지원하지 않기 때문에 증분 백업을 수행할 수 없습니다.
Xtrabackup은 percona에서 제공하는 mysql 데이터베이스 백업 도구이며, 공식 소개에 따르면 이는 innodb 및 xtradb 데이터베이스의 핫 백업을 수행할 수 있는 세계 유일의 오픈 소스 도구이기도 합니다.
Xtrabackup에는 주로 두 가지 도구가 포함되어 있습니다.
xtrabackup: innodb 및 xtradb 테이블의 데이터를 핫 백업하는 도구입니다.
innobackupex: xtrabackup을 수행하는 데 사용됩니다. 캡슐화된 Perl 스크립트는 MyISAM 테이블과 데이터 테이블 구조를 백업하고 복원할 수 있습니다.
- xtrabackup에서 백업한 데이터는 데이터 복구를 수행 중입니다. 이전에 다음 사항에 주의해야 합니다.
- 증분 백업이 있는 경우 증분 백업과 전체 백업을 병합해야 합니다.
- 트랜잭션을 지원하는 테이블의 백업인 경우 복원하기 전에 먼저 트랜잭션 로그의 롤백 및 커밋 작업을 수행해야 합니다.
- 연속 백업이 있는 경우. 작업을 수행하려면 트랜잭션 로그만 커밋하면 되고 롤백할 필요는 없습니다. 트랜잭션 롤백은 모든 백업 작업이 통합된 후에만 수행할 수 있습니다.
-
이 문서에서는 자세한 실험 단계를 통해 xtrabackup을 사용하는 방법을 보여줍니다.
-
centos7 가상 머신, mariadb-5.5.52 버전의 데이터베이스 설치, 먼저 학생 데이터 테이블이 포함된 SQL 스크립트를 통해 hellodb 테스트 라이브러리를 가져옵니다. 이 실험은 학생을 대상으로 수행됩니다. table, 명령은 다음과 같습니다.
mysql -uroot < hellodb.sql
- xtrabackup을 설치하려면 공식 홈페이지에서 설치 패키지를 다운로드한 후 yum을 통해 설치하면 됩니다. 다운로드 사이트는 다음과 같습니다. 설치 프로세스
- 백업 및 복구의 주요 명령:
xtrabackup_binlog_info: 바이너리 로그의 내용을 기록합니다.
- xtrabackup_checkpoints: 백업 유형, 시작 및 종료 lsn 번호와 같은 정보
mysql -uroot < hellodb.sql
安装xtrabackup,可以从官方网站下载安装包,然后通过yum进行安装,下载站点为:,此处不再演示安装过程;
xtrabackup的主要命令为innobackupex,通过innobackupex --help或者man手册可以获取到帮助信息;
数据库已经导入,此时可以进行数据库的备份操作,先进行数据库的全量备份和恢复:
xtrabackup_binlog_info:记录二进制日志的内容;
xtrabackup_checkpoints:记录备份类型,开始和结束的lsn编号等备份信息;
xtrabackup_info:记录更详细的备份信息,如是否为所有库备份,是否压缩,备份执行的命令等信息;
xtrabackup_logfile:记录的是事务日志,为二进制文件,不可查看;
首先确保数据库已经开启二进制日志,通过show global variables like 'log_bin';命令可以看到是否已经开启,通过show binary logs;可以看到目前正在使用的二进制日志是哪一个;
通过xtrabackup进行备份,数据备份到/data/backup目录下,备份完成会在指定目录下生成一个以当前时间命名的文件夹:
innobackupex -u root /data/backup
文件夹内容如下:
-
此时就备份成功了,然后演示数据库的恢复操作。注意:恢复之前需要首先停止数据库服务:
xtrabackup_info: 모든 라이브러리 백업 여부, 압축 여부, 백업에서 실행된 명령 및 기타 정보와 같은 보다 자세한 백업 정보를 기록합니다.innobackupex --apply-log 2017-07-13_21-02-07/ #首先进行事务日志的提交和回滚 innobackupex --copy-back 2017-07-13_21-02-07/ #进行数据恢复,会自动把数据恢复到mysql的数据目录下
xtrabackup_logfile: 바이너리 파일이며 볼 수 없는 트랜잭션 로그를 기록합니다. -
- First; 데이터베이스에서 바이너리 로그가 활성화되었는지 확인하세요.
show 전역 변수(예: 'log_bin';
)를 사용하여 활성화되었는지 확인하세요. show 바이너리 로그를 사용하면 현재 어떤 바이너리 로그가 있는지 확인할 수 있습니다.
innobackupex -u root /data/backup
-
폴더 내용은 다음과 같습니다. 🎜
🎜🎜🎜🎜이 시점에서는 백업이 성공한 후 데이터베이스 복구 작업을 시연합니다. 참고: 복구하기 전에 먼저 데이터베이스 서비스를 중지해야 합니다. 🎜
innobackupex --apply-log 2017-07-13_21-02-07/ #첫 번째 트랜잭션 로그 커밋 및 롤백 innobackupex --copy-back 2017-07 - 13_21-02-07/ #데이터 복구를 수행하면 데이터가 mysql 데이터 디렉터리에 자동으로 복원됩니다.
🎜🎜🎜🎜복구 성공 후 복구된 데이터의 모든 소유자와 그룹은 루트 사용자이므로 루트 사용자여야 합니다. 수정되었습니다. 데이터베이스에 로그인하려면 mysql 사용자여야 합니다. 🎜🎜🎜🎜 데이터베이스에 로그인하면 모든 데이터가 복원된 것을 볼 수 있습니다. 🎜🎜🎜🎜🎜이번에는 증분 백업 및 복구 작업을 시연합니다. 🎜🎜🎜🎜🎜프로덕션 환경에서는 바이너리 로그와 데이터 파일을 다른 디스크에 배치하는 것이 좋습니다. 가능한 한 많은 손실을 보장하기 위한 시간 복구 데이터가 적고 바이너리 파일도 손실되면 잠재적으로 많은 데이터 손실이 발생합니다. 데이터 복구 작업이 완료된 후 데이터 보안을 보장하기 위해 데이터 전체 백업을 수행해야 합니다.
몇 가지 새로운 정보를 데이터베이스에 삽입한 다음 증분 백업을 수행합니다.
-
다음 명령을 사용하여 데이터베이스의 증분 백업을 수행하면 /data/backup 디렉터리에 time이라는 이름의 새 폴더가 생성됩니다.
innobackupex -u root - p 1234567a --incremental -- Incremental-basedir=/data/backup/2017-07-13_21-07-23/ /data/backup/
innobackupex -u root -p 1234567a --incremental --incremental-basedir=/data/backup/2017-07-13_21-07-23/ /data/backup/
然后停掉数据库服务,删除数据库目录下的所有数据,进行数据恢复操作,步骤如下:
innobackupex --apply-log --redo-only 2017-07-13_22-16-19/ #进行全量备份的事务提交,但是不回滚未提交事务,因为未提交事务可能在下次的增量备份中提交 innobackupex --apply-log --redo-only 2017-07-13_22-16-19/ --incremental-dir=2017-07-13_22-18-34/ #进行增量备份和全备份的合成已经事务提交工作 innobackupex --apply-log 2017-07-13_22-16-19/ #对于全备份也没有完成的事务进行回滚操作 innobackupex --copy-back 2017-07-13_22-16-19/ #此时采用全备份即可恢复数据,不再需要增量备份,因为已经进行了备份的合成操作
- 그런 다음 데이터베이스 서비스를 중지하고, 데이터베이스 디렉터리를 설정하고 데이터 복구 작업을 수행하는 경우 단계는 다음과 같습니다.
innobackupex --apply-log --redo-only 2017-07-13_22-16-19/ # 전체 백업을 위해 트랜잭션을 커밋하지만 커밋되지 않은 트랜잭션은 롤백하지 않습니다. 커밋되지 않은 트랜잭션은 다음 증분 백업에 제출할 수 있기 때문입니다. innobackupex --apply-log --redo-only 2017-07-13_22-16-19/ --incremental-dir=2017-07-13_22 -18-34/ #증분 백업 수행 전체 백업으로 트랜잭션 제출 작업 합성 innobackupex --apply-log 2017-07-13_22-16-19/ #전체 백업에서 완료되지 않은 트랜잭션에 대한 롤백 작업 innobackupex --copy- back 2017-07-13_22- 16-19/ #이때, 전체백업을 이용하여 데이터를 복원할 수 있으며, 백업합성작업이 이루어졌기 때문에 더 이상 증분백업이 필요하지 않습니다
역시 복원된 데이터의 소유자와 그룹을 수정한 후 데이터베이스에 로그인하면 전체 데이터를 볼 수 있습니다.
위 내용은 xtrabackup을 사용하여 mysql 데이터베이스를 백업하는 방법에 대한 지침의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









데이터 통합 단순화 : AmazonRdsMysQL 및 Redshift의 Zero ETL 통합 효율적인 데이터 통합은 데이터 중심 구성의 핵심입니다. 전통적인 ETL (추출, 변환,로드) 프로세스는 특히 데이터베이스 (예 : AmazonRDSMySQL)를 데이터웨어 하우스 (예 : Redshift)와 통합 할 때 복잡하고 시간이 많이 걸립니다. 그러나 AWS는 이러한 상황을 완전히 변경 한 Zero ETL 통합 솔루션을 제공하여 RDSMYSQL에서 Redshift로 데이터 마이그레이션을위한 단순화 된 거의 실시간 솔루션을 제공합니다. 이 기사는 RDSMYSQL ZERL ETL 통합으로 Redshift와 함께 작동하여 데이터 엔지니어 및 개발자에게 제공하는 장점과 장점을 설명합니다.

MySQL은 여러 동시 연결을 처리하고 멀티 스레딩/다중 프로세싱을 사용하여 각 클라이언트 요청에 독립적 인 실행 환경을 할당하여 방해받지 않도록 할 수 있습니다. 그러나 동시 연결 수는 시스템 리소스, MySQL 구성, 쿼리 성능, 스토리지 엔진 및 네트워크 환경의 영향을받습니다. 최적화에는 코드 레벨 (효율적인 SQL), 구성 레벨 (Max_Connections 조정), 하드웨어 수준 (서버 구성 개선)과 같은 많은 요소를 고려해야합니다.

MySQL이 테이블 구조를 수정하면 메타 데이터 잠금 장치가 일반적으로 사용되므로 테이블을 잠글 수 있습니다. 자물쇠의 영향을 줄이려면 다음과 같은 조치를 취할 수 있습니다. 1. 온라인 DDL과 함께 테이블을 사용할 수 있습니다. 2. 배치에서 복잡한 수정을 수행합니다. 3. 소형 또는 피크 기간 동안 운영됩니다. 4. PT-OSC 도구를 사용하여 더 미세한 제어를 달성하십시오.

1. 올바른 색인을 사용하여 스캔 한 데이터의 양을 줄임으로써 데이터 검색 속도를 높이십시오. 테이블 열을 여러 번 찾으면 해당 열에 대한 인덱스를 만듭니다. 귀하 또는 귀하의 앱이 기준에 따라 여러 열에서 데이터가 필요한 경우 복합 인덱스 2를 만듭니다. 2. 선택을 피하십시오 * 필요한 열만 선택하면 모든 원치 않는 열을 선택하면 더 많은 서버 메모리를 선택하면 서버가 높은 부하 또는 주파수 시간으로 서버가 속도가 느려지며, 예를 들어 Creation_at 및 Updated_at 및 Timestamps와 같은 열이 포함되어 있지 않기 때문에 쿼리가 필요하지 않기 때문에 테이블은 선택을 피할 수 없습니다.

기본 키는 데이터베이스의 각 행을 고유하게 식별하는 키 속성이기 때문에 MySQL 기본 키는 비어있을 수 없습니다. 기본 키가 비어 있으면 레코드를 고유하게 식별 할 수 없으므로 데이터 혼동으로 이어질 수 있습니다. 자체 점수 정수 열 또는 UUID를 기본 키로 사용하는 경우 효율성 및 우주 점유와 같은 요소를 고려하고 적절한 솔루션을 선택해야합니다.

Root로 MySQL에 로그인 할 수없는 주된 이유는 권한 문제, 구성 파일 오류, 암호 일관성이 없음, 소켓 파일 문제 또는 방화벽 차단입니다. 솔루션에는 다음이 포함됩니다. 구성 파일의 BAND-ADDRESS 매개 변수가 올바르게 구성되어 있는지 확인하십시오. 루트 사용자 권한이 수정 또는 삭제되어 재설정되었는지 확인하십시오. 케이스 및 특수 문자를 포함하여 비밀번호가 정확한지 확인하십시오. 소켓 파일 권한 설정 및 경로를 확인하십시오. 방화벽이 MySQL 서버에 연결되는지 확인하십시오.

MySQL은 Android에서 직접 실행할 수는 없지만 다음 방법을 사용하여 간접적으로 구현할 수 있습니다. Android 시스템에 구축 된 Lightweight Database SQLite를 사용하여 별도의 서버가 필요하지 않으며 모바일 장치 애플리케이션에 매우 적합한 작은 리소스 사용량이 있습니다. MySQL 서버에 원격으로 연결하고 데이터 읽기 및 쓰기를 위해 네트워크를 통해 원격 서버의 MySQL 데이터베이스에 연결하지만 강력한 네트워크 종속성, 보안 문제 및 서버 비용과 같은 단점이 있습니다.

MySQL은 JSON 데이터를 반환 할 수 있습니다. json_extract 함수는 필드 값을 추출합니다. 복잡한 쿼리의 경우 where 절을 사용하여 JSON 데이터를 필터링하지만 성능 영향에주의하십시오. JSON에 대한 MySQL의 지원은 지속적으로 증가하고 있으며 최신 버전 및 기능에주의를 기울이는 것이 좋습니다.
