問題タブ [mysqlbinlog]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - MariaDB の Maxscale(BinLog サーバー) は、異なる mysql クラスターからのバイナリログのコレクターとして使用できますか?
MariaDB のMaxscale( BinLog Server ) を使用して、MySQL Cluster から単一のBinLog Serverに bin ログを中継できることを読みましたが、別の MySQL Cluster からすべての bin ログを収集して永続化できるかどうかを知りたいと思いました。単一のBinLog サーバーであり、mysql スレーブはそこから読み取っていません。可能であれば、異なる MySQL Cluster での同じデータベース名などの競合はどのように処理されますか?
mysql - MySQL - max_binlog_cache_size と binlog_cache_size の比較
MySQL の公式ドキュメントでは、これらの変数の説明にかなりの混乱があります。
それによると、max_binlog_cache_sizeは、
トランザクションがこのバイト数よりも多くのメモリを必要とする場合、サーバーは複数ステートメント トランザクションが 'max_binlog_cache_size' バイト以上のストレージ エラーを必要とすることを生成します。
max_binlog_cache_size は、トランザクション キャッシュのみのサイズを設定します
そしてbinlog_cache_sizeは、
トランザクション中にバイナリ ログへの変更を保持するキャッシュのサイズ。
binlog_cache_size は、トランザクション キャッシュのみのサイズを設定します
ドキュメントを読むと、これら 2 つに違いはないことがわかりました。ドキュメントには、次のような非常に紛らわしいものもあります。
MySQL 5.7 では、max_binlog_cache_size のセッションに対する可視性は binlog_cache_size システム変数の可視性と一致します。つまり、値を変更すると、値が変更された後に開始された新しいセッションにのみ影響します。
サーバー変数を照会すると、両方が表示されます。MySQL 5.6とMySQL 5.7があります。私が知る必要があるのは、どのサーバーに対してどの変数を考慮して構成する必要があるかということだけです。
MySQL 5.6のbinlog_cache_sizeとMySQL 5.7のmax_binlog_cache_size ??
これらに関連して、さらに紛らわしい変数max_binlog_stmt_cache_sizeとbinlog_stmt_cache_sizeがあります。
mysql - バイナリログが時系列順ではないため、MySQL レプリケーションが壊れている
バイナリ ログからの抜粋を見ると、次の 2 つのステートメントが時系列順不同でログに書き込まれていることがわかります。
コード ブロック内を強調表示する方法がわかりませんが、重要な部分は次のとおりです。
first statement - end_log_pos 64812204, SET TIMESTAMP=1467153166
second statement - end_log_pos 64895850, SET TIMESTAMP=1467153156
そのため、マスターが最初のステートメントを最後に実行し、スレーブが 2 番目のステートメントを最後に実行したため、これによりマスターとスレーブの非同期化が発生しました。
誰でもこの理由を理解するのを手伝ってもらえますか? thread_id 157062 を持つすべてのステートメントが最初に実行されましたが、thread_id 157061 を持つステートメントの後にログに書き込まれたことに気付きました。
助けてくれてありがとう。
mysql - MySQL bin log からの並列処理
現在、Mysql から他のデータベースへのビン ログ ストリーミングを行っています。
私たちが直面している問題は、イベントのシーケンスです。並列処理を行うことができません。つまり、bin ログに書き込まれたイベントは時間順に並べられており、下流のデータベースで並列クエリ挿入を簡単に行うことができず、単一の接続での挿入は非常に困難です。下流のデータベースは列指向のデータベースであるため、低速です。
とにかく、セカンダリ データベースの永続性を効果的に並列化できる方法でイベントを読み取ることができますか。
mysql - Kafka と mysql イベントによるレプリケーション
外部データベースのコピーを維持する必要があります (追加の派生データを含む)。同じハードウェア セットを使用して、次のソリューションのどれを使用すると、一貫性が向上し (遅延が少なく)、高可用性が得られますか? 外部データベースへの更新が 1 秒あたり 1000 レコードで発生すると仮定します。
a) mysql 5.7 レプリケーション (バイナリ ログ ファイル メカニズム) を使用して、外部データベースのローカル mysql レプリカを作成します。
また
b) 外部システムからリアルタイムの Kafka イベントを取得し、HTTP GET を実行して更新されたオブジェクトの詳細を取得し、これらの詳細を使用してローカルの mysql レプリカを維持します。
mysql - MySQL - タイムスタンプに基づいて bin ログの位置を見つける
shyikoコネクタを使用して、bin ログの変更を mysql クラスターからダウンストリーム データベース システムにストリーミングしています。
クラスタ = MySQL マスター + プライマリ スレーブ + セカンダリ スレーブ
リッスンしている MySQL システムが何らかの理由でダウンした場合、メカニズムはスレーブをマスターとして昇格させ、通常どおり続行することです。しかし、問題は、bin ログ ファイルと位置が、障害が発生したマシンと新しく昇格したスレーブ mysql とで完全に異なることです。
両方のマシンのコミット ログ間で考えられる唯一の共通点は、タイムスタンプです。mysqlbinlog ユーティリティにも、--start-datetimeオプションを使用してタイムスタンプを設定する機能があります。
特定のタイムスタンプを使用して mysql bin ログの位置を見つける方法はありますか? 上記のライブラリは特定の位置のみを使用でき、タイムスタンプは使用できないためです。そうでない場合、それを達成するためにどのように進むべきですか。
mysql - MySQL スレーブ レプリケーションの失敗: 失敗の原因となっている SQL を特定する方法
AWS RDS で MySQL を実行しています。次のエラーが原因で、スレーブ レプリケーションがスタックしています。スレーブサーバーのテーブルでレコードを見つけることができないと表示されています...どのレコードかを知る方法はありますか? または失敗しているSQL!
リード レプリカ レプリケーション エラー - SQLError: 1032、理由: テーブル customers.visitor で Update_rows_v1 イベントを実行できませんでした。「訪問者」にレコードが見つかりません。Error_code: 1032; ハンドラー エラー HA_ERR_END_OF_FILE; イベントのマスター ログ mysql-bin-changelog.206572、end_log_pos 12627388
mysql - 多くの mysql bin ログ ファイルからデータベースを回復する
MYSQL バイナリ ログ ファイルとバイナリ インデックス ファイル ( https://dev.mysql.com/doc/refman/5.6/en/point-in-time-recovery.html ) があります。
ファイルは次のようになります: log-bin.000001
, log-bin.000002
, log-bin.000003
.
log-bin.index
次のようなファイルもあります。
ドキュメントによると、これらのログ ファイルを使用してデータベースを回復する方法は次のようになります。
これは、少数のファイルを復元する場合にはそれほど問題ではありませんが、多数のファイル (たとえば、1000 個のログ ファイル) から復元する場合には大きな不便です。
すべてのファイルを明示的に指定せずにデータベースを回復するにはどうすればよいですか?
mysql - mysqlbinlog が [replace into] 行イベントを以下のように表示する理由
私たちが知っているように
REPLACE は INSERT とまったく同じように機能しますが、テーブル内の古い行が PRIMARY KEY または UNIQUE インデックスの新しい行と同じ値を持つ場合、新しい行が挿入される前に古い行が削除されます。
削除する権限のないアカウントを使用して置換を実行すると、削除権限が思い出されました。
ただし、mysqlbinlog を使用して binlog の内容を表示すると、混乱してしまいます。
例は次のとおりです。
binlog_format=行
ケース 1:
mysqlbinlog は次のように表示されます。
mysqlbinlog に delete と insert が表示されません。
ケース 2: auto_increment=17
mysqlbinlog は次のように表示されます。
mysqlbinlog に delete と insert が表示されません。
ケース 3:auto_increment=18
mysqlbinlog は次のように表示されます。
mysqlbinlog には、 delete と insert が表示されます。
したがって、主キーの値が同じ場合、binlog は delete+insert を使用するようです。主キーの値が同じでない場合、binlog は update を使用します。
なんで?