問題タブ [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 - Query has been changed in mysql Binlog - Load data query
I had run the below mysql query in master server
but this has been change in binlog as
I have mentioned offline database in my query but it has changed to default database in binlog .
This creates the problem in replication as default database do not have this table.
mysql - MySQL は、既存のデータベースから集約されたデータベースを複製します
InnoDB に基づく MySQL データベースがあります。このデータの分析システムを構築しようとしています。データを非正規化して結合を防ぎ、クエリを高速化するために MyIsam を使用するクローン データベースを作成することを考えています。この 2 番目のデータベースは、データが書き込まれるメイン データベースへの余分な負荷を回避するのにも役立ちます。これとは別に、再計算を避けるために、集計された数値を格納する追加のテーブルもいくつか作成しています。
これらのテーブルを毎日 1 回同期して最新の状態に保つにはどうすればよいでしょうか。バイナリログを使用する MySQL のマスタースレーブ構成に似ています。しかし、私たちの場合、2 番目のデータベースは正確なスレーブではありません。「更新メカニズム」を作成するために使用できるオープンソースの信頼できるツールやその他のアイデアはありますか?
前もって感謝します。
mysql - MySQL レプリケーションが「リレー ログ イベント エントリを解析できませんでした」というエラーで失敗します。
この問題を解決するための決定的な解決策または一連の手順をグーグルで徹底的に検索しましたが、高品質の結果はあまりないようで、スタックオーバーフローに関する質問は見つかりませんでした. 1 つのスレーブを使用して MySQL レプリケーションをセットアップしようとしています。スレーブは正常に複製されているように見えますが、次のエラーが発生します。
リレー ログ イベント エントリを解析できませんでした。考えられる理由は次のとおりです: マスターのバイナリ ログが破損している (これは、バイナリ ログで 'mysqlbinlog' を実行することで確認できます)、スレーブのリレー ログが破損している (これは、リレー ログで 'mysqlbinlog' を実行することで確認できます)、ネットワークの問題、またはマスターまたはスレーブの MySQL コードのバグ。マスターのバイナリ ログやスレーブのリレー ログを確認したい場合は、このスレーブで 'SHOW SLAVE STATUS' を発行することでそれらの名前を知ることができます。
検索で必然的にこの質問に出くわす多くの人々に利益をもたらすために、回答者が何がうまくいかないのか、この問題を解決するためにどのような手順を踏むべきかについての概要を提供してくれると助かりますが、私はそうします.また、誰かが私が解決するのを手伝ってくれることを期待して、私の特定の状況に関連する詳細を以下に提供してください.
開始するためにスレーブにインポートしたダンプは、マスターで次のコマンドを使用して作成されました。
このバックアップを実行するスクリプトは、マスターの現在のバイナリ ログの位置も記録します。次に、スレーブでレプリケーションを開始するために次の手順を実行しました。
レプリケーションが正常に機能してから約 1 日後、午前 3 時 43 分に再び失敗しました。MySQL のエラー ログに最初に表示されたのは、上記のエラーでした。その後、同じタイムスタンプで別の一般的なエラーが表示されました。
詳細なログ情報については、1 時間ごとに「SHOW SLAVE STATUS」と「SHOW FULL PROCESSLIST」を実行するバッチ スクリプトを設定しました。失敗の前後の結果は次のとおりです。
私はエラーからの指示に従ってみました。スレーブのリレー ログで mysqlbinlog を実行し、数千前の start_position ステートメントと、数千個の障害ポイントの後の stop_position ステートメントを使用して、出力をテキスト ファイルにリダイレクトしました。コマンド ラインまたはログ ファイルに破損エラーは見られませんでした。これは、ログ ファイルが障害点付近で述べたことです。
その時点で無効な浮動小数点操作がログに記録されていることは興味深いですが、その位置でレプリケーションがどのように中断される可能性があるかはわかりません。上記の SHOW SLAVE STATUS で見つかったマスターのバイナリ ログで mysqlbinlog を実行しましたが、コマンド ラインにエラーは表示されませんでした (ただし、生成された 100 MB のログ ファイルを開く機会はありませんでした。本番サーバーを停止します)。
だから今、私は他に何を試すべきか途方に暮れています。私は基本的に、何がうまくいかないのか、次に取るべきステップについての提案についての洞察を探しているだけです. ありがとう!
mysql - 自動インクリメント用のmysql binログモード
現在、STATEMENT bin ログ形式が正常に機能するデータベースがあります。
ここで、自動インクリメント値を持つ新しいテーブルを追加しています。
この自動インクリメント列は、ビジネス ロジックの目的ではありません。
これを主キーの一部として追加しました。
ここで offer_expiry_time は主キーの最初の部分です。これは、有効期限の時間範囲に基づく範囲クエリとしてすべてのクエリがあるためです。
テーブルが次のようになっているとします。
今、私たちの懸念は次のとおりです。
STATEMENT レベルの bin ログ形式は、このテーブルで機能しますか? (レプリケーション全体で自動インクリメント列の値が異なっていても問題ありません)。基本的に STATEMENT レベルは機能しますか?
機能する場合、障害のある db マシンを起動する際に発生する可能性がある問題は何ですか?
STATEMENT モードが機能しない場合、このテーブルだけに特定の (MIXED) レプリケーション モードを使用できますか? 同じデータベース内の残りのテーブルを STATEMENT モードにすることはできますか?
mysql がレプリケーションを処理する方法を知らないので、これは非常にばかげた質問かもしれません。クエリの種類に基づいてレプリケーション モードを指定することはできますか? (挿入クエリの場合は ROW レベルのレプリケーションを実行し、DELETE クエリの場合は STATEMENT レベルのレプリケーションを実行します)
質問 4 は、範囲ベースの削除に基づいて削除を実行するため、削除クエリに STATEMENT レプリケーションを使用できる場合、パフォーマンスが向上するためです。
バッチ挿入を行うため、STATEMENT レベルのレプリケーションは非常に役立ちます。
自動インクリメント列を持つテーブルに STATEMENT レベルの bin ログ形式を持たせることは可能ですか?
[編集済み] また、トランザクションの分離レベルに関して別の問題があります。
エラー: 「エラー Binary logging not possible を取得しています。メッセージ: InnoDB のトランザクション レベル 'REA D-UNCOMMITTED' は、binlog モード 'STATEMENT' に対して安全ではありません」
どんな提案も非常に役に立ちますか?
enums - 列挙型フィールドの値を復元する
mysql テーブルの enum フィールドの可能な値を変更しました。この変更により、変更されたフィールドの値の一部が失われたと思います。どうにかしてこれらの値を復元することは可能ですか? DB の変更に関する mysqlbinlog があります。
ありがとう
mysql - MySQLクラスター:バイナリログをデコード/解釈する方法は?
4ノードのMySQLクラスターのバイナリログから有用な情報を取得しようとしていますが、無駄です。テストとして、マスターで午前11時1分に手動でUPDATEステートメントを実行しました(テーブル内の一部のデータは正常に変更されました)。残念ながら、実行されたステートメントをmysqlbinlogに表示させることができません。
--verboseオプション、-hexdumpオプション、および--base64-output =DECODE-ROWS--verboseを試しました。私が何をしても、実際のステートメントはまだエンコードされているようです(または、UPDATEがあるはずのときにINSERT INTOがあります)。
以下は、-base64-output =DECODE-ROWS--verboseオプションが指定された11:01amテストの関連する出力です。UPDATEステートメントがどこにも見つからないのはなぜですか?また、データベースがINSERT INTOに最適化した場合、少なくとも元のステートメントのテーブル名とその他の部分が表示されないのはなぜですか?
ありがとう、ロブ
replication - 行ベースのバイナリ ログのプレーン テキスト形式を表示する方法
行ベースのバイナリログが有効になっているサーバーがあります。最近、問題をデバッグしているときに、特定の位置からバイナリ ログの内容を表示しようとしましたが、読み取り不能な出力が得られました。
必要になる可能性のある詳細を次に示します。
前もって感謝します
mysql - mysqlでビューを作成する場合、日付関数を使用できますか?
ビューを作成します。ステートメントは次のとおりです:</ p>
ビューは正常に作成できますが、binlogが破棄されます。ステートメントは次のとおりです:</ p>
mysqlbinlog mysql-bin.000167
エラー:Log_event :: read_log_event()のエラー:'読み取りエラー'、data_len:66129、event_type:32
FROM_UNIXTIME(update_date
、'%Y%m%d')を削除すると、上記のステートメントは発生しません
私のmysqlのバージョンは5.1.30です
mysql - C++ でコンパイル済みの /.so ソース ライブラリにリンクできない
私はC++が初めてです。MySQL からバイナリログを読み取るために、C++ プログラムで MySQL レプリケーションを使用しようとしています。
.cpp
インターネットからヘッダーファイルとソースファイルを入手しました。これで、ヘッダー ファイルをフォルダーに配置し、それを指すように/usr/include/mysql
パスを設定しました。CPLUS_INCLUDE_PATH
ヘッダーファイルを使用できます。また、.cpp
ファイルを/usr/lib64/mysql
フォルダに配置し、すべてのファイルをコンパイルして同じディレクトリに.cpp
ファイルを作成しました。.o
しかし、g++
( g++ -I/usr/include/mysql -L/usr/lib64/mysql/ -g bin_log.cpp -o bin_log.out
) を使用してプログラムをコンパイルすると、呼び出しようとしているすべてのメソッドに対して Undefined Reference to エラーが発生します。下記参照:
また、コンパイル中に .so ファイルを作成してリンクしようとしましたが、機能しません。(私は使用しg++ -I/usr/include/mysql -L/usr/lib64/mysql/binlogapi.so -g bin_log.cpp -o bin_log.out
ました)。
を使用してライブラリを構築しようとしましcmake
たが、うまくいきませんでした。これで何が問題になるのか、誰でも推測できますか?私は基本的な何かが欠けていると思います。
mysqlbinlog - バイナリログに関するアドバイスが必要ですか?
マスター スレーブ構成をセットアップし、30 日間のビン ログを保存しています。サーバー上でより多くのスペースを占有しているため、それを処理するためのより良い方法を見つける必要があります.
7日間のみのログを保存することを考えています。大丈夫ですか。