マクスウェルについてMaxwell は、MySQL のバイナリログをリアルタイムで読み取り、JSON 形式で行の更新を Kafka、RabbitMq、Redis などに書き込むことができる Java で書かれたデーモンです。MySQL の増分データ ストリームを使用すると、データのキャッシュへのリアルタイム同期、データの ElasticSearch への同期、データ移行など、さまざまな使用シナリオがあります。 マクスウェル公式サイト: http://maxwells-daemon.io Maxwellの設定と使用Maxwell は Java SDK に依存しているため、最初に JDK 環境を構成する必要があります。 1. Maxwellインストールパッケージをダウンロードするroot@xxx マクスウェル]# pwd /usr/local/マックスウェル [root@xxx maxwell]# wget https://github.com/zendesk/maxwell/releases/download/v1.19.5/maxwell-1.19.5.tar.gz [root@xxx maxwell]# tar zxvf maxwell-1.19.5.tar.gz [root@xxx maxwell]# cd maxwell-1.19.5 2. MySQLを設定し、MySQL binlogログを開く[root@xxx mysql]# vi /usr/local/mysql/my.cnf [mysqld] log-bin=mysql-bin #この行を追加 binlog-format=ROW #行モードを選択 server_id=1 #クラスター内の他のマシンの名前と同じにならない文字列をランダムに指定します。マシンが1台しかない場合は、自由に指定できます mysqlサービスを再起動し、mysqlにログインして、binlogログモードを表示します。 mysql> '%log_bin%' のような変数を表示します +---------------------------------+---------------------------------+ | 変数名 | 値 | +---------------------------------+---------------------------------+ | log_bin | オン | | log_bin_basename | /data/mysqldb/mysql-bin | | log_bin_index | /data/mysqldb/mysql-bin.index | | log_bin_trust_function_creators | オフ | | log_bin_use_v1_row_events | オフ | | sql_log_bin | オン | +---------------------------------+---------------------------------+ セット6行(0.11秒) Maxwell には、schema_database オプションで指定されたデータベース (デフォルトのデータベース名は maxwell) に状態を保存する権限が必要なので、事前に権限を付与する必要があります。 #同期されたデータを持つユーザーyhreplを作成する mysql> 'scgaopan' によって識別されるユーザー 'yhrepl'@'*' を作成します。 クエリは正常、影響を受けた行は 0 行 (0.10 秒) #このユーザー yhrepl には、同期する必要があるデータベース テーブルを操作する権限が必要です。mysql> 'scgaopan' によって識別される 'yhrepl'@'%' に test.* のすべての権限を付与します。 クエリは正常、影響を受けた行は 0 行 (0.13 秒) # yhrepl にデータを同期する権限を与えますmysql> grant select,replication client,replication slave on *.* to 'yhrepl'@'%' identified by 'scgaopan'; クエリは正常、影響を受けた行は 0 行 (0.10 秒) # Maxwell には、schema_database オプションで指定されたデータベースに状態を保存する権限が必要です (デフォルトのデータベース名は maxwell です) mysql> 'scgaopan' で識別される 'yhrepl'@'%' に maxwell.* のすべての権限を付与します。 クエリは正常、影響を受けた行は 0 行 (0.09 秒) 3. Maxwell を起動し、主に rabbitmq にデータを書き込む実際の戦闘を紹介します。[root@xxx maxwell-1.19.5]# vi /usr/local/maxwell/maxwell-1.19.5/config.properties #ログレベル log_level=DEBUG プロデューサー=rabbitmq デーモン=true #監視対象データベース、mysql ユーザーに binlog の読み取りと新しいデータベース テーブルの作成権限が必要です host=47.105.110.xxx ユーザー=yhrepl パスワード=scgaopan 出力NULL=true jdbc_options=自動再接続=true #データベース内のどのテーブルが監視されますか? filter=exclude: *.*,include: test.AA #replica_server_id および client_id の一意の識別子。クラスターの展開に使用されます。replica_server_id=64 client_id=テストID #メトリックス_type=http #メトリックス_slf4j_間隔=60 #http_port=8111 #http_diagnostic=true # デフォルトは false #うさぎ rabbitmq_host=47.105.110.xxx ラビットmq_port=5672 rabbitmq_user=ゲスト rabbitmq_pass=ゲスト rabbitmq_virtual_host=/ rabbitmq_exchange=マックスウェル rabbitmq_exchange_type=トピック rabbitmq_exchange_durable=false rabbitmq_exchange_autodelete=false rabbitmq_routing_key_template=%db%.%テーブル% rabbitmq_message_persistent=偽 rabbitmq_declare_exchange=true マクスウェルを起動します: [root@xxx maxwell-1.19.5]# ./bin/maxwell #バックグラウンドで起動できます [root@xxx maxwell-1.19.5]# nohub ./bin/maxwell & 起動が成功すると、maxwell ライブラリが自動的に生成されます。ライブラリには、maxwell 同期の状態、最後の同期の ID などの情報が記録されます。メインライブラリが失敗した後、または同期が異常になった後、maxwell ライブラリが存在する限り、次の同期は最後の同期の ID に基づいて行われます。 maxwell ライブラリが生成されないか、エラーが報告される場合は、config.properties で設定された mysql ユーザー権限が不十分である可能性があります。 RabbitMQ の操作RabbitMQ操作では、Maxwellを起動すると、Maxwell交換が生成される。 ただし、対応するキュー、エクスチェンジ、キューのバインディングはユーザーが実装する必要があります。 maxwell-test キューを作成します。 キューをエクスチェンジにバインドします。 ここでのルーティング キーでは大文字と小文字が区別されることに注意してください。 データベース内のレコードを変更すると、maxwell-test キューにレコードがあることがわかります。 完全な同期maxwell-bootstrapコマンドを使用する ./bin/maxwell-bootstrap --database xhd --table xhd-sso --host 127.0.0.1 --user xiehd --password xiehd2018 --client_id maxwell_dev xhd.xhd-sso テーブル内のすべてのデータを同期し、同期を実行するために client_id maxwell_dev で maxwell を指定します。 前のコマンドを最初に開き、次にclient_id=maxwell_devでmaxwellを起動します。 ./bin/maxwell --client_id maxwell_dev 実行が完了するまで待ちます 上記は、Maxwell を使用して MySQL データをリアルタイムで同期する方法の詳細です。Maxwell を使用して MySQL データを同期する方法の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: Vue でユーザー権限に基づいてルートを動的に追加する方法
背景色と透明度の設定上記のように、最初の画像の場合は、灰色の背景と左上隅に白い「カバー」という文字を...
現象Dockerコンテナを起動する docker run –name [コンテナ名] [コンテナID...
IE10 では、<input> と <input type="passw...
1. 背景サーバーの開発プロセスでは、新しいコードや構成をロードするためにサービスを再起動することが...
目次シンプルなSpringbootプロジェクトを作成する1. pom.xmlでSpring Boot...
コードをコピーコードは次のとおりです。 <html xmlns="">...
序文Ubuntu 18.04 LTS で IP アドレスを設定する方法は、これまで使用されていた設定...
1. Dockerサーバーへのリモートアクセスを有効にするdocker が配置されているリモート サ...
目次序文使い方要約する序文Vue にはコードの再利用に使われる mixins という設定項目がありま...
Web 開発では、チェックボックスは小さく、ユーザーにとって操作があまり便利ではないため、ユーザーが...
ページ: ベース: <テンプレート> <div class="タブコンテ...
目次まず結論から質問解決Promiseを使用してコールバック関数をカプセル化する要約するまず結論から...
{ {}} 値を取得すると、タグの元のコンテンツはクリアされませんv-textは値を取得し、タグの元...
背景webpackのバージョンを確認したいのですが、webpack -vを実行するとエラーが報告され...
序文まずは最終的な効果を見てみましょう。私が自分で作った小さなデモです。まずEChartsの公式サイ...