>  기사  >  데이터 베이스  >  Mysql은 백업과 binlog를 결합하여 실수로 삭제된 작업 데이터를 복원합니다.

Mysql은 백업과 binlog를 결합하여 실수로 삭제된 작업 데이터를 복원합니다.

php是最好的语言
php是最好的语言원래의
2018-08-07 11:23:182119검색

백업 + binlog를 결합하여 데이터를 복원하세요.

시나리오: 어젯밤에 모든 준비를 마친 후 사용자가 오늘 아침에 실수로 테이블을 삭제했습니다.

해결 방법: 원래 프로덕션 환경에서 직접 복원하는 것은 권장되지 않습니다. 전체 데이터베이스 + 로그를 다른 머신에서 복원한 다음 프로덕션 환경으로 가져오는 것이 좋습니다.

Mysql은 백업과 binlog를 결합하여 실수로 삭제된 작업 데이터를 복원합니다.

1) 테이블 생성

select now(); 
create table itpuxfg1 (
`id` int(10) unsigned not null auto_increment,
`name` varchar(16) not null,
`sex` enum('m','w') not null default 'm',
`age` tinyint(3) unsigned not null,
primary key (`id`)
) engine=innodb default charset=utf8;
insert into itpux.itpuxfg1(`name`,`sex`,`age`) values
('itpux1','w',21),
('itpux2','m',22),
('itpux3','w',23),
('itpux4','m',24),
('itpux5','w',25);
commit;
select * from itpux.itpuxfg1;

2) 백업 논리적 백업 만들기

mysqldump -uroot -p -F -R --all-databases > alldb_bak.sql

3) 아침에 비즈니스 운영 시뮬레이션

show master status; -- 154
select now(); -- 2018-04-27 06:27:40
update itpux.itpuxfg1 set name='itpux04' where id=4;
commit;
select * from itpux.itpuxfg1;
select now(); -- 2018-04-27 06:28:03
update itpux.itpuxfg1 set name='itpux05' where id=5;
commit;
select * from itpux.itpuxfg1;
show master status; -- 890

4) 정오에 실수로 삭제

select now(); -- 2018-04-27 06:29:00
drop table itpuxfg1;
select * from itpux.itpuxfg1;
show master status; -- 1078

5) 다른 머신에 복원 (제 경우는 로컬이므로 프로덕션은 로컬이 아니어야 합니다.)

show master status; 필요한 binlog를 백업하려면 이 파일 이름을 사용하세요

--binlog 로그를 복사하는 것을 기억하세요

'itpuxdb-binlog. 000003';

mysqlbinlog itpuxdb-binlog.000003 |grep "DROP TABLE"

mysqlbinlog itpuxdb-binlog.000003 |grep "itpuxfg1" (로그에는 두 가지 다른 버전이 있다는 점에 유의하세요. )

Mysql은 백업과 binlog를 결합하여 실수로 삭제된 작업 데이터를 복원합니다.

Mysql은 백업과 binlog를 결합하여 실수로 삭제된 작업 데이터를 복원합니다.

데모:

itpux 라이브러리 삭제 itpux;

복원:

먼저 데이터베이스 만들기:

mysql> 데이터베이스 itpux 기본 문자 집합 utf8을 만듭니다. 원래 데이터베이스에서 show create Database mysql;을 쿼리하는 것이 좋습니다.

mysql -uroot -p -o itpux

-- 복구 후 오늘 아침에 업데이트된 기록을 찾을 수 없습니다. ; 테이블 표시;

Mysql은 백업과 binlog를 결합하여 실수로 삭제된 작업 데이터를 복원합니다.-- binlog 로그를 통한 증분 ​​복구 테이블 삭제 전

[root@mysqldb binlog]# mysqlbinlog -vv --start-position=219 --stop-position=913 --database=itpux itpuxdb-binlog.000001 >sa.sql

-- 복원 테이블을 원래 데이터베이스에 넣습니다

먼저 다른 데이터베이스에서 테이블을 백업하세요

mysqldump -uroot -p itpux itpuxfg1 > 프로덕션 데이터베이스를 직접 복원합니다(원본 데이터베이스의 테이블이 삭제되었습니다)

mysql -uroot -p itpux

mysql> select * from itpuxfg1;

1) 이 테이블을 소스 데이터베이스로 복원하세요

mysqldump -uroot -p itpux itpuxfg1 > ;sa.sql

관련 권장 사항:

백업 없이 삭제된 mysql 데이터베이스를 복원하는 방법

MySQL 복제 + 스냅샷 복구 실수로 삭제된 작업 실험 테스트

위 내용은 Mysql은 백업과 binlog를 결합하여 실수로 삭제된 작업 데이터를 복원합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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