MySQL 에서 Binary Log 바 이 너 리 로그 파일 의 기본 동작 명령 소결
8288 단어 MySQL바 이 너 리 로그
*데이터 복구
*마스터 데이터베이스.슬 레이 브 단 에서 삭제 수정 을 실행 하고 master 와 동기 화 를 유지 합 니 다.
1.바 이 너 리 로그 기능 오픈
my sql 설정 파일 을 수정 해 야 합 니 다.이 시험 환경 은 win 7 입 니 다.설정 파일 은 my sql 설치 디 렉 터 리\MySQL Server 5.1 의 my.ini 입 니 다.log 를 추가 합 니 다.bin = mysql_즉시
eg:
[mysqld]
......
log_bin = mysql_bin
......
log_bin bin-log , 6 , 000001 , , :
mysql_bin.000001
mysql_bin.000002
......
저장 후 my sql 을 다시 시작 할 서버 를 설정 합 니 다.show variables like 를 사용 합 니 다. '%bin%'bin-log 가 열 렸 는 지 확인 합 니 다.그림:
2.생 성 된 binary log 보기
bin-log 는 바 이 너 리 파일 이기 때문에 메모 장 등 편집 기 를 통 해 직접 열 수 없습니다.my sql 은 두 가지 방식 으로 보기 방식 을 제공 합 니 다.소개 하기 전에 데이터 베 이 스 를 추가 삭제 하고 수정 하 는 작업 을 합 니 다.그렇지 않 으 면 log 안의 데이터 가 좀 비어 있 습 니 다.
create table bin( id int(10) primary key auto_increment,name varchar(255));
(테스트 전에 나 는 이미 표를 만 들 었 다)
insert into bin(name) values ('orange');
1.클 라 이언 트 에서 사용 show binlog events in 'mysql_bin.000001' 문 구 를 살 펴 보면 정렬 이 아름 답 기 때문에 끝 에\G 를 추가 하여 결 과 를 가로 세로 로 바 꿀 수 있 습 니 다.이때 끝 은 추가 할 필요 가 없습니다.문장 끝 부호.eg:
mysql> show binlog events in 'mysql_bin.000001'\G
............... ...............
*************************** 3. row ***************************
Log_name: mysql_bin.000001
Pos: 174
Event_type: Intvar
Server_id: 1
End_log_pos: 202
Info: INSERT_ID=2
*************************** 4. row ***************************
Log_name: mysql_bin.000001
Pos: 202
Event_type: Query
Server_id: 1
End_log_pos: 304
Info: use `test`; insert into bin(name) values ('orange')
*************************** 5. row ***************************
............... ...............
C:\ProgramData\MySQL\MySQL Server 5.1\data>mysqlbinlog mysql_bin.000001
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#121015 16:35:56 server id 1 end_log_pos 106 Start: binlog v 4, server v 5.1.51-community-log created 121015 16:35:56 at startup
ROLLBACK/*!*/;
BINLOG '
7Mp7UA8BAAAAZgAAAGoAAAAAAAQANS4xLjUxLWNvbW11bml0eS1sb2cAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADsyntQEzgNAAgAEgAEBAQEEgAAUwAEGggAAAAICAgC
'/*!*/;
# at 106
#121015 16:36:51 server id 1 end_log_pos 174 Query thread_id=2 exec_time=0 error_code=0
SET TIMESTAMP=1350290211/*!*/;
SET @@session.pseudo_thread_id=2/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1344274432/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
# at 174
#121015 16:36:51 server id 1 end_log_pos 202 Intvar
SET INSERT_ID=3/*!*/;
# at 202
#121015 16:36:51 server id 1 end_log_pos 309 Query thread_id=2 exec_time=0 error_code=0
use test/*!*/;
SET TIMESTAMP=1350290211/*!*/;
insert into bin(name) values('xishizhaohua')
/*!*/;
# at 309
#121015 16:36:51 server id 1 end_log_pos 336 Xid = 28
COMMIT/*!*/;
# at 336
#121015 16:37:25 server id 1 end_log_pos 379 Rotate to mysql_bin.000002 pos: 4
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
조판 이 좀 어 지 럽 지만 그림 에서 우 리 는 시간 스탬프,자체 적 으로 증가 하 는 오프셋,자동 으로 사 무 를 제출 하 는 지 등 더 많은 정 보 를 얻 을 수 있다.아래 그림 에서 추출 한 일부분 입 니 다.3.bin 이용로그 복구 데이터
(1).가장 오래 사용 하 는 것 은 지정 한 데이터 엔 드 의 데 이 터 를 답장 하 는 것 입 니 다.데이터 베 이 스 를 직접 복원 할 수 있 습 니 다.
mysqlbinlog --start-date="2012-10-15 16:30:00" --stop-date="2012-10-15 17:00:00" mysql_bin.000001 |mysql -uroot -p123456
sql 파일 로 내 보 낼 수도 있 고 데이터베이스 에 가 져 올 수도 있 습 니 다.
mysqlbinlog --start-date="2012-10-15 16:30:00" --stop-date="2012-10-15 17:00:00" mysql_bin.000001 >d:\1.sql
source d:\1.sql
(2).시작\끝 위 치 를 지정 합 니 다.위 에서 보 는 바 이 너 리 로 그 는 어떤 로그 의 시작 부터 끝 까지 의 위 치 를 알 수 있 습 니 다.복구 과정 에서 A 위치 에서 B 위치 까지 의 로 그 를 지정 할 수 있 습 니 다.아래 두 개의 인자 로 지정 해 야 합 니 다.
--start-positon="50" // 50
--stop-postion="100"// 100
마지막 으로 빈 몇 개 소개 해 드릴 게 요.log 동작:(1).마지막 빈 로그 파일 을 보 세 요.현재 위치 입 니 다.
(2).새 로그 파일 을 사용 합 니 다.일반적으로 데이터 베 이 스 를 백업 한 후 실행 합 니 다.
(3).기 존의 bin-log 를 삭제 합 니 다.
4.binary log 관련 변수 와 매개 변수
명령 행 인자
--log-bin [=file_name]
이 매개 변 수 를 설정 하면 binlog 기능 을 사용 하고 경로 이름 을 만 듭 니 다.
--log-bin-index[=file]
이 매개 변 수 를 설정 하 는 것 은 바 이 너 리 색인 파일 의 경로 와 이름 을 지정 합 니 다.
--max_binlog_size
Binlog 의 최대 값,최대 와 기본 값 은 1GB 입 니 다.이 설정 은 Binlog 의 크기 를 엄 격 히 제어 할 수 없습니다.특히 Binlog 가 최대 값 에 가 깝 고 큰 사 무 를 만 났 을 때,
트 랜 잭 션 의 완전 성 을 확보 하기 위해 로 그 를 전환 하 는 동작 을 할 수 없습니다.이 트 랜 잭 션 의 모든 SQL 을 현재 로그 에 기록 할 수 있 습 니 다.트 랜 잭 션 이 끝 날 때 까지.
--binlog-do-db=db_name
이 매개 변 수 는 지정 한 데이터베이스 의 바 이 너 리 로그 만 기록 합 니 다.
--binlog-ignore-db=db_name
이 매개 변 수 는 지정 한 데이터 베 이 스 를 기록 하지 않 는 바 이 너 리 로 그 를 표시 합 니 다.
시스템 변수
log_bin
binlog_cache_size
이 매개 변 수 는 binlog 가 사용 하 는 메모리 크기 를 표시 합 니 다.상태 변 수 를 통 해 binlogcache_use 와 binlogcache_disk_use 는 테스트 를 돕는다.
max_binlog_cache_size
이 매개 변 수 는 binlog 가 사용 하 는 메모리 의 최대 크기 를 표시 합 니 다.
binlog_cache_use
바 이 너 리 로그 캐 시 를 사용 하 는 트 랜 잭 션 수
binlog_cache_disk_use
바 이 너 리 로그 캐 시 를 사용 하지만 binlog 를 초과 합 니 다.cache_size 값 과 임시 파일 을 사용 하여 트 랜 잭 션 의 문 구 를 저장 합 니 다.
binlog_do_db
binlog_ignore_db
sync_binlog
이 매개 변 수 는 my sql 의 성능 과 완전 성에 직접적인 영향 을 줍 니 다.
sync_binlog=0:
트 랜 잭 션 을 제출 하면 Mysql 은 binlog 에 불과 합 니 다.cache 의 데 이 터 는 binlog 파일 에 기록 되 지만 fsync 와 같은 디스크 는 실행 되 지 않 습 니 다.동기 화 명령 은 파일 시스템 에 캐 시 를 디스크 에 새로 고치 고 Filesystem 이 언제 동기 화 할 지 스스로 결정 하도록 합 니 다.이것 은 성능 이 가장 좋 습 니 다.
sync_binlog=0,n 차 트 랜 잭 션 을 제출 한 후 Mysql 은 fsync 와 같은 디스크 동기 화 명령 을 실행 하여 파일 시스템 에 Binlog 파일 캐 시 를 디스크 로 새로 고침 하 라 고 알 립 니 다.
Mysql 의 기본 설정 은 sync 입 니 다.binlog=0,즉 강제 적 인 디스크 리 셋 명령 을 하지 않 습 니 다.이때 성능 이 가장 좋 지만 위험 도 가장 큽 니 다.시스템 Crash 가 되면 파일 시스템 캐 시 에 있 는 모든 Binlog 정 보 를 잃 어 버 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redash를 사용할 때 몰랐던 SQL을 쓰는 법을 배웠습니다.최근 redash에서 sql을 쓸 기회가 많고, 이런 쓰는 방법이 있었는지와 sql에 대해 공부를 다시하고 있기 때문에 배운 것을 여기에 씁니다. Redash란? 월별로 데이터를 표시하고 싶습니다 주별로 데이터를 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.