바이너리 로그 로그 맥스웰에 의해 읽기, 레디 스에 MySQL의 데이터를 변경

맥스웰 소개

맥스웰은 실시간 MySQL의 바이너리 로그 바이너리 로그를 읽을 수 있으며, 카프카, 운동성, RabbitMQ, 레디 스에 보낸 메시지의 JSON 형식으로 생성 Google 클라우드 팝 / 서브, 문서 또는 생산자와 같은 다른 응용 프로그램 플랫폼. 그것은 일반적인 시나리오가이 ETL의 검색 엔진에 증분 유지 관리 캐시, 수집 DML 테이블 수준 지표, 데이터 파티션 마이그레이션, Ceku 바이너리 로그 롤백 프로그램. 맥스웰은 전체 이벤트 소스 플랫폼을 재 구축 할 필요없이 몇 가지 이점을 제공합니다. 다음과 같은 방법으로 할 수 있습니다 공식 웹 사이트 의 해당 버전을 다운로드하기 위해 사용되었다.
맥스웰은 주로 다음과 같은 기능을 제공합니다 :

  • 지원 SELECT * 테이블 방식의 데이터 초기화의 전체 양
  • 지원은 기본 데이터베이스 장애 복구, 자동 복구 바이너리 로그 위치 (GTID) 후에 발생합니다.
  • 데이터 스큐 데이터는 문제를 해결하기 카프카 지원 데이터베이스, 테이블, 데이터 파티션의 열 등급 레벨로 송신 된 데이터를 분할 할 수있다.
  • 일은 같은 다양한 이벤트 DDL, XID, 행을 수용 할 수있다, 스키마 정보에 따라 조립 후 바이너리 로그 이벤트를 수신, 노예로 위장하고있다.

맥스웰 설치

맥스웰 설치는이 주 맥스웰 수정 설정 파일이며, 상대적으로 간단하다.
1. 맥스웰은 지정된 디렉토리 및 추출물에 업로드
리눅스 도구 연결 서버의 maxwell.1.24.1.tar.gz / 소프트 디렉토리에 업로드를 사용.
[루트 @ localhost를 빈] # 타르 -xvf maxwell.1.24.1.tar.gz -C / 옵션 / 맥스웰

설치 후 맥스웰 완료 한 후 사용자 구성과 맥스웰 MySQL 데이터베이스를 도서관.

MySQL의 서비스 구성 (my.conf)

/etc/my.conf에 다음을 추가, 당신은 MySQL을 설치하는 경우, 그것은 my.cnf 파일에서 해당 내용에 추가되었습니다.

[mysqld]
server_id=23
log-bin=bin-log
binlog_format=row  

설명 :
MySQL이 열려 있어야합니다 바이너리 로그, 즉 로그-bin 디렉토리 지정
binlog_format은 행이되어야합니다
지정 server_id MySQL은 전 세계적으로 고유 ID

MySQL의 conf의를 수정 한 후, 필요 MySQL의 서비스를 다시 시작합니다

[root@localhost ~]#systemctl stop mysql
[root@localhost ~]#systemctl start mysql

또는
[root@localhost ~]#service mysqld restart

맥스웰 구성 사용자 권한

맥스웰은 기본 맥스웰이다 지정할 schema_database 선택 매개 변수를 시작, 자신의 상태 데이터의 일부를 저장해야합니다.
MySQL의 사용자 및 권한 설정 (SQL)는
맥스웰 사용자와 암호 설정입니다 '123456'을 만들 수 있습니다.
mysql> CREATE USER 'maxwell'@'%' IDENTIFIED BY '123456';

맥스웰, 맥스웰 도구가 어떤 상태 데이터를 저장 데이터베이스를 작성하십시오.
mysql> CREATE DATABASE IF NOT EXISTS maxwell default charset utf8 COLLATE utf8_general_ci;

맥스웰은 사용자에게 권한을 부여합니다.

mysql> GRANT ALL on *.* to 'maxwell'@'%' identified by 'XXXXXX';
mysql> GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE on *.* to 'maxwell'@'%'; 

맥스웰의 프로필

  1. / 옵션 / 맥스웰 디렉토리에 지정된 구성에 config.properties 파일, 쓰기 생성 :
    [루트 @ localhost를 맥스웰] #vim config.properties
#[mysql]
user=maxwell    #连接mysql用户名
password=123456  #连接mysql的密码
host=192.168.1.22   # mysql的主机名(IP地址)
port=3306   #mysql端口
#[producer]
producer=redis
redis_host=127.0.0.1  
#redis服务器ip地址
redis_port=6379         
#redis的端口,默认是6379
redis_database =0       
#redis中数据库,默认为0
rredis_key=maxwell
redis_stream_json_key=message 
redis_type=pubsub

주요 파라미터 설명 :
맥스웰 사용자의 주요 MySQL의 접속 설정 정보를 아래 파라미터 번호 [MySQL은, 상기 생성 채우기.
# 파라미터 제작자 정보의 [생산자]
제조자 : 사용은 레디 스 레디 스 등 제조자 타입이지만 카프카
redis_XX는 : 레디 스에 배치하기 때문에, 127.0.0.1 redis_host 본원 채워진 구성 정보, 레디 스 config.properties의 실제 IP 주소를 채우기, 맥스웰에 액세스 할 수 없게됩니다 경우 파일은, 바인딩, 127.0.0.1에 대해 구성.
redis_type : 선택 레디 스 데이터 생성 모델, 현재 지원 [pubsub | XADD | lpush | rpush , 기본 값 pubsub은.

맥스웰은 다음 명령에 의해 시작
[root@localhost ~]#/opt/maxwell/bin/maxwell --config config.properties --filter=exclude:*.*,include:lipp.* --daemon

매개 변수 :
설정 : 여러 매개 변수가 일반적으로 지정 구성 파일은 구성 프로파일을 작성해야합니다.
필터 : 필터 설정을 포함하고 제외 키워드를 제외하고 어떤 데이터 것은 제공 할 수 있습니다.
데몬 : 배경 지정

테스트 모델을 공개 / 등록

MySQL 데이터베이스 변경, 내용의 변화가 전송 된 모든 구독이 채널에 가입 할 때, 게시 할 수 맥스웰 맥스웰 채널을 레디 스 될 때 스텝 구성, redis_type 세트 = pubsub으로이 모드는, 포스트 주제의 생성을 나타냅니다 모든 사람은 메시지에 상응하는 변화를 받게됩니다.

위의 단계 후, MySQL은, 레디 스를 시작하고 맥스웰은 간단한 테스트 시작
맥스웰을 redis_cli 레디 스를 통해 CLIENT1에 로그온 및 가입

[root@client1 ~]# redis-cli 
127.0.0.1:6379> SUBSCRIBE maxwell
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "maxwell"
3) (integer) 1

데이터 CLIENT2에서 MySQL 데이터베이스 테이블 LIPP 증가에 로그인합니다.

[root@client2 ~]# mysql -uroot -p111111
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 300
Server version: 5.7.23-log MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use lipp;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> insert into t1 values(1,'test101');

3. CLIENT1 맥스웰 채널의 출력을 볼 수

1) "message"
2) "maxwell"
3) "{\"database\":\"lipp\",\"table\":\"t1\",\"type\":\"insert\",\"ts\":1584279262,\"xid\":7726,\"commit\":true,\"data\":{\"id\":1,\"name\":\"test101\"}}"

테스트 목록 모드

1. 수정 디렉토리 redis_type에 맥스웰 파일을 conf.preporties = lpush, 맥스웰은 서비스를 다시 시작합니다.

maxwell                          RUNNING   pid 11366, uptime 0:00:08

redis_cli 레디 스 로그인 2. CLIENT1과 키의 수가 현재 라이브러리를 볼 수

[root@client1 ~]# redis-cli 
127.0.0.1:6379> DBSIZE
(integer) 0

0 현재 사용하지 않는 라이브러리 키입니다.

3. CLIENT2 지정된 테이블에 로그인 MySQL의 데이터베이스와 삽입 데이터입니다.

mysql> insert into t1 values(1,'wangwu');
Query OK, 1 row affected (0.00 sec)

CLIENT1 다시 dbsize하여 데이터베이스의 크기를 확인하십시오

127.0.0.1:6379> DBSIZE
(integer) 1

키에 의해, 그리고 유형 키 유형을 보면 키 이름을 볼 수 있습니다.

127.0.0.1:6379> keys *
1) "maxwell"
127.0.0.1:6379> type maxwell
list

형식 목록에서 키를 물었을 때, 당신은 키 조작에 관련된 목록 명령을 사용할 수 있습니다.
llen하여 키 길이를보기

127.0.0.1:6379> llen maxwell
(integer) 1

lrange에 의해 키 명령의 내용을보기

127.0.0.1:6379> LRANGE maxwell 0 10
1)"{\"database\":\"lipp\",\"table\":\"t1\",\"type\":\"insert\",\"ts\":1584286244,\"xid\":15381,\"commit\":true,\"data\":{\"id\":1,\"name\":\"wangwu\"}}"

lpop Rpop 또는 키에 값을 나타

127.0.0.1:6379> LPOP maxwell
"{\"database\":\"lipp\",\"table\":\"t1\",\"type\":\"insert\",\"ts\":1584286244,\"xid\":15381,\"commit\":true,\"data\":{\"id\":1,\"name\":\"wangwu\"}}"

pubsub 및 lpush의 파라미터를 수정하여 Redis_type, 모니터 MySQL 데이터베이스 변경 구독 모델, 데이터 동기화의 발행을 통해 달성 될 수있다. 당신은 데이터 양의 변화와 방식으로 목록의 최신 데이터의 변화하는 요구를 얻을 수 있습니다.

이 문서는, 레디 스에 맥스웰의 바이너리 로그를 읽는 방법을 보여줍니다 사실, 맥스웰 프로듀서는 카프카, pubsub, 레디 스, 사용자 정의 등의 등의 다양한 방법을 얻을 수 있습니다. 특히 통해 공식 웹 사이트 당신은 또한 갈 수 이해 GitHub의 이해합니다.

추천

출처blog.51cto.com/jxplpp/2480229