mysql binlog설정위치
server-id={서버아이디} 마스터와 슬레이브의 서버는 달라야함
log-bin={빈로그 쌓이는 곳}
binlog_format = ROW {유형} //STATEMENT, ROW, MIXED
max_binlog_size = 1G {롤링할 크기}
expire_logs_days = 2 {보관 기간}
relay_log={슬레이브의 로그가 쌓이는 곳}
binlog_format
이 옵션을 사용해서 디폴트 포맷을 지정하면, 모든 리플리케이션 슬레이브는 이벤트를 지정 포맷으로 읽게 된다.
ROW — 열 기반 리플리케이션을 디폴트로 설정한다.
STATEMENT — 명령문 기반 리플리케이션을 디폴트로 설정한다.
MIXED — 혼합 기반 리플리케이션을 디폴트로 설정한다.
binlog 읽기 위한 권한
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON . TO {ID}@'{IP}' IDENTIFIED BY '{PWD}';
GRANT REPLICATION SLAVE : Enable the user to ask where master or slave servers are
REPLICATION CLIENT : Enable replication slaves to read binary log events from the master
binlog 파일 읽기
mysqlbinlog /{경로}/mysql-bin.000004 > binlog.sql
binlog 특정 날짜 원문으로 보기
mysqlbinlog --verbose --database=DB이름 --start-datetime="{시작시간}" --stop-datetime="{종료시간}" "{binlog경로}" > binlog.sql
ex)./mysqlbinlog --verbose --database=iofficemetadb --start-datetime="2020-08-20 18:00:00" --stop-datetime="2020-08-20 20:00:00" "/mysqldata/3406/log/blog/mysql-bin.002185" >/home/ioffice/temp/binlog.sql
/home/ioffice/temp
특정 포지션을 원문으로 보기
mysqlbinlog --verbose --database=testdb --start-position=1 --stop-position=100000 {binlog경로} > binlog.sql
로컬에 mysql설치 후 빈로그 파일
#window local test
mysqlbinlog.exe -v --base64-output=DECODE-ROWS --stop-never --read-from-remote-server --user=root --password=root binlog.000003
mysqlbinlog: Error writing file '' (Errcode: 2 - No such file or directory)
#보니깐 해당 로그를 파일로 써야되나보다 그냥 나는 cmd창에서 계속 보고싶던건데...
mysqlbinlog.exe -v --base64-output=DECODE-ROWS --stop-never --read-from-remote-server --user=root --password=root binlog.000005 > ./binlog000005.txt
/*!50718 SET TRANSACTION ISOLATION LEVEL READ COMMITTED*//*!*/;
SET @@SESSION.GTID_NEXT= '273990e1-e37e-11ea-9449-988389a1841d:13'/*!*/;
# at 1718
#200826 17:52:36 server id 1 end_log_pos 1803 CRC32 0x55fae6e5 Query thread_id=3 exec_time=0 error_code=0
SET TIMESTAMP=1598431956/*!*/;
BEGIN
/*!*/;
# at 5308
#200827 13:02:44 server id 1 end_log_pos 5545 CRC32 0x8ab098af Table_map: `{db명}`.`{테이블명}` mapped to number 113
# at 5545
#200827 13:02:44 server id 1 end_log_pos 6614 CRC32 0x1b7d9757 Update_rows: table id 113 flags: STMT_END_F
### UPDATE `iofficeefss0001`.`tb_file_f`
### WHERE
### @1=133900000002300000
### @2='181128_1339-배치테스트용_변경금지 - 01-(물리없음)-133900000002300000'
### @3='TXT'
### @4='대용량 테스트용 파일'
### @5='111'
### @6='001'
### @7=1540660923
### @8=147999346801600097
### @9=NULL
### @10=NULL
### @11=1545941252
### @12=NULL
### @13=1111
### @14=10
### @15=147999346801600097
### @16=1535390523
### @17=1
### @18=133900000002300110
### @19=NULL
### @20=NULL
### @21='181128_1339-배치테스트용_변경금지 - 01-(물리없음)-133900000002300000'
### @22=133900000000100000
### @23=154337031460200427
### @24='015'
### @25=147927667597500027
### @26='1132000000'
### @27='Y'
### @28='050'
### @29=1556385723
### @30='N'
### @31='N'
### @32='TAG,INFO,VAL'
### @33=NULL
### @34='EDTDEL'
### @35=NULL
### @36=NULL
### @37=154337033663200430
### @38='015'
### @39=133900000000100000
### @40=154597309410300287
### @41=123456789012345670
### @42=147927667597500027
### @43=NULL
### @44=NULL
### @45=NULL
### @46=NULL
### @47='1132000000'
### @48='050'
### @49=1556385723
### @50=NULL
### @51=NULL
### @52='W0'
### @53='9'
### @54='Y'
### @55='0123456789'
### @56='N'
### @57='DOCT_NO'
### @58='N'
### @59='REG_DSTCT'
### @60='TAG,INFO,VAL'
### @61=NULL
### @62=NULL
### @63=NULL
### @64='EDTDEL'
### @65='PRSRV_RSN_CONTENT'
### @66='IF_TGT_SYS'
### @67=NULL
### @68=NULL
### @69='EFDSC10'
### @70='Y'
### @71=1543339323
### @72=147999346801600097
### @73=1545941252
### @74=147999356147300023
### SET
### @1=133900000002300000
### @2='ioffice'
### @3='TXT'
### @4='대용량 테스트용 파일'
### @5='111'
### @6='001'
### @7=1540660923
### @8=147999346801600097
### @9=NULL
### @10=NULL
### @11=1598500964
### @12=NULL
### @13=1111
### @14=10
### @15=147999346801600097
### @16=1535390523
### @17=1
### @18=133900000002300110
### @19=NULL
### @20=NULL
### @21='181128_1339-배치테스트용_변경금지 - 01-(물리없음)-133900000002300000'
### @22=133900000000100000
### @23=154337031460200427
### @24='015'
### @25=147927667597500027
### @26='1132000000'
### @27='Y'
### @28='050'
### @29=1556385723
### @30='N'
### @31='N'
### @32='TAG,INFO,VAL'
### @33=NULL
### @34='EDTDEL'
### @35=NULL
### @36=NULL
### @37=154337033663200430
### @38='015'
### @39=133900000000100000
### @40=154597309410300287
### @41=123456789012345670
### @42=147927667597500027
### @43=NULL
### @44=NULL
### @45=NULL
### @46=NULL
### @47='1132000000'
### @48='050'
### @49=1556385723
### @50=NULL
### @51=NULL
### @52='W0'
### @53='9'
### @54='Y'
### @55='0123456789'
### @56='N'
### @57='DOCT_NO'
### @58='N'
### @59='REG_DSTCT'
### @60='TAG,INFO,VAL'
### @61=NULL
### @62=NULL
### @63=NULL
### @64='EDTDEL'
### @65='PRSRV_RSN_CONTENT'
### @66='IF_TGT_SYS'
### @67=NULL
### @68=NULL
### @69='EFDSC10'
### @70='Y'
### @71=1543339323
### @72=147999346801600097
### @73=1598500964
### @74=147999356147300023
# at 6614
#200827 13:02:44 server id 1 end_log_pos 6645 CRC32 0x4b5d9a7a Xid = 833
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= '273990e1-e37e-11ea-9449-988389a1841d:13'/*!*/;
gtid_mode의 설정이 'ON'일때만 위 GTID가 찍힘
아래 여러 옵션들이 있다.
MASTER의 빈로그 파일과 최종 Position
SHOW MASTER STATUS;
{
"File": "binlog.000009",
"Position": 5800,
"Binlog_Do_DB": "",
"Binlog_Ignore_DB": "",
"Executed_Gtid_Set": "273990e1-e37e-11ea-9449-988389a1841d:1-43"
}
이벤트 쿼리로 보기
SHOW BINLOG EVENTS
IN 'binlog.000009'
FROM 4873 LIMIT 10;
FROM값이 정확히 BINLOG EVENTS의 Pos와 맞지 않으면 조회되지 않는다.
아래와같이 SHOW MASTER STATUS에서 조회한 Position의 값이 최종 End_log_pos인 것을 알 수 있다.
{
"Log_name": "binlog.000009", #빈로그 파일명
"Pos": 4873, # 시작 위치
"Event_type": "Anonymous_Gtid",#이벤트 타입
"Server_id": 1,
"End_log_pos": 4938, # 끝나는 위치
"Info": "SET @@SESSION.GTID_NEXT= 'ANONYMOUS'" # 빈로그에 at {Pos} 다음에 오는 end위치 다음 정보 한단어
},
# at 4873
#200831 18:30:30 server id 1 end_log_pos 4938 CRC32 0xc0d6daa3 Anonymous_GTID last_committed=5 sequence_number=6 rbr_only=yes
{
"table": "LIMIT",
"rows":
[
{
"Log_name": "binlog.000009",
"Pos": 4873,
"Event_type": "Anonymous_Gtid",
"Server_id": 1,
"End_log_pos": 4938,
"Info": "SET @@SESSION.GTID_NEXT= 'ANONYMOUS'"
},
{
"Log_name": "binlog.000009",
"Pos": 4938,
"Event_type": "Query",
"Server_id": 1,
"End_log_pos": 5023,
"Info": "BEGIN"
},
{
"Log_name": "binlog.000009",
"Pos": 5023,
"Event_type": "Table_map",
"Server_id": 1,
"End_log_pos": 5260,
"Info": "table_id: 108 (iofficeefss0002.tb_file_f)"
},
{
"Log_name": "binlog.000009",
"Pos": 5260,
"Event_type": "Update_rows",
"Server_id": 1,
"End_log_pos": 5769,
"Info": "table_id: 108 flags: STMT_END_F"
},
{
"Log_name": "binlog.000009",
"Pos": 5769,
"Event_type": "Xid",
"Server_id": 1,
"End_log_pos": 5800,
"Info": "COMMIT /* xid=302 */"
}
]
}