問題タブ [binlog]
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 - MySQL-スクリプトを使用せずにbinログの位置をダンプファイルに含める方法はありますか
スクリプトを使用せずに、レプリケーションビンのログ位置をダンプファイルに含める方法はありますか?
スクリプトを作成したり、ダンプファイルに行を追加したりする方法があることは知っています。しかし、mysqldumpの単純な引数で可能であることを一度読んだことを覚えています。それは本当ですか。そうであれば、構文は何ですか。
どうもありがとう
mysql - 1つのスキーマのbinlogを使用し、mysqlbinlogを使用してそれらを別のスキーマに送信することは可能ですか?
毎晩、本番環境からmysqldumpを実行し、それを別のスキーマにダンプして、同じサーバー上のテストサーバーまたは開発サーバーとして使用します。データベースが大きくなるにつれ、完了するまでに多くの時間がかかります。私はこれをスピードアップする方法を考えようとしています。私はbinlogを実行しているので、おそらく週に1回Mysqldumpを実行し、残りの週はbinlogの他のスキーマを更新すると思いました。もちろん、可能であれば、これらすべてをスクリプト化する必要があります。
また、mysqldumpを実行して、あるスキーマから別のスキーマにインポートする方が高速ですか、それとも、あるスキーマから別のスキーマへの更新を使用してすべてのテーブルを更新する方が高速ですか?
mysqlの同じインスタンスにマスター/マスターを持つことは可能ですか?
mysql - mysqlテーブルのIDを収集します
現在、バイナリログパーサーに取り組んでいます。これは、mysqlデータベースによって書き込まれたバイナリログを読み取り、変更をMongoDBに書き込んで変換します。このようにして、Jsonに変換された「マテリアライズドビュー」を作成して、それをさらに処理するために使用したいと思います。バイナリログには、「tableId」を持つテーブルへの参照のみがあります。
http://dev.mysql.com/doc/refman/5.0/en/getting-information.htmlにテーブルに関する追加のメタ情報への参照が見つかりません
では、どのテーブルがどのIDを持っているかを知る方法は?
mysql - mysqlスレーブを再同期するときに「resetmaster」を発行する理由
最近、いくつかのDB再同期を実行する必要があり、DBをマスターにダンプする前に「RESETMASTER」を発行する一般的な方法(どのように見えるか)について質問があります。
このプロセスを取り巻く私が見つけたほぼすべてのドキュメントには、マスターからデータベースをダンプする前に「RESETMASTER」があります。
例:https ://stackoverflow.com/a/3229580/1570785
ただし、実稼働環境では、これは主に「RESETMASTER」コマンドが既存のバイナリログをクリアするため、逆効果のようです。したがって、レプリケーションが中断されているときにマスターに問題が発生すると、マスターの一貫性が失われたり、マスターが破損したり、スレーブが同期しなくなったりします。
このプロセスを最初に実行する必要がある(つまり、mysqlレプリケーションで問題が発生した)ことを考えると、スレーブが再同期しました。
私が本当に求めているのは:何が欠けているのか-マスターからダンプを取得する前に「RESETMASTER」を実行する正当な理由はありますか?
mysqlbinlog - バイナリログに関するアドバイスが必要ですか?
マスター スレーブ構成をセットアップし、30 日間のビン ログを保存しています。サーバー上でより多くのスペースを占有しているため、それを処理するためのより良い方法を見つける必要があります.
7日間のみのログを保存することを考えています。大丈夫ですか。
mysql - バイナリ ログを有効にしてセーフ モードで複数テーブルの削除を実行するにはどうすればよいですか?
次のデータ構造があるとしましょう。
テーブルB
には 3000 を超えるレコードが含まれている可能性があります。約 600 のレコードが、テーブル内の異なる行を参照していますC
。私のサーバーでは 2 つの設定が有効になっています。
質問: table を介して table のレコードに参照されている table から、警告を発行せずにすべてのレコードを効率的に削除するにはどうすればよいですか?A
C
B
私が試したこと:
DBMS サーバーの問題safe_mode
:
エラー コード: 1175。セーフ更新モードを使用していて、KEY 列を使用する WHERE なしでテーブルを更新しようとしました。セーフ モードを無効にするには、[設定] -> [SQL クエリ] でオプションを切り替えてから再接続してください。
B.
エイリアスを削除しました:
ええ、それは成功しましたが、私はこれを持っています:
影響を受ける 2 行、1 つの警告: 1592 BINLOG_FORMAT = STATEMENT であるため、ステートメント形式を使用して安全でないステートメントがバイナリ ログに書き込まれました。別のテーブルから選択した後に自動インクリメント列を含むテーブルに書き込むステートメントは安全ではありません。これは、行が取得される順序によって、どの行が (存在する場合) 書き込まれるかが決まるためです。この順序は予測できず、マスターとスレーブで異なる場合があります。
また、私は PRIMARY KEY の使用を強制しようとしていました:
しかし、それも役に立ちませんでした。サーバーに対して悪いことや悪いことをしていますか? どのアプローチが正しいですか?何か不足していますか?
前もって感謝します。どんな助けでも大歓迎です。
PS: Google と検索バーの使い方を知っています。これが私が見つけたものです:
https://stackoverflow.com/questions/12275864/multiple-delete-not-working-with-inner-join
http://tech-solutions4u.blogspot.ru/2012/09/mysql-multi-delete-issue-in-safe-mode.html
等々。試してみましたが、最終的には、「しばらくの間...」でもサーバー機能(私が設定したものではありません)を無効にするという考えは好きではありません。
編集:
私は、GROUP_CONCAT(ID_B)
一時変数に保存し、その「スカラー」値で削除を実行する回避策があることを知っています:
しかし、それはおおよそ600 * 5 = 3000
の文字になるので、この考えも好まれません。つまり、他に何もできない場合は、それが最後のオプションになります。
mysql - mysql ログから重複せずにデータを抽出する方法は?
を使用してDBの完全バックアップを取った後mysqldump -u user -p database > backup.sql
。この後、私は使用しました
ファイル、位置、do db、ignore db を示しているため、DB でいくつかの変更を行った後、マスター ステータスが次のように変わります。
増分バックアップを取りたい場合、 と をどのように指定すればよいですstart-position
かstop-position
。mysql doc が言うように、「開始位置は、位置が N 以上の最初のイベントでバイナリログの読み取りを開始します」および「停止位置は、位置が N 以上の最初のイベントでバイナリログの読み取りを停止します」 N」より。では、完全バックアップ後に binlog ファイルからデータを取得する位置をどのように指定すればよいでしょうか?
mysql - mysql binlog 出力ファイルがあいまいですか?
私が使う
私のテーブルにはvarbinaryの列があります。したがって、 res.000001 はこのように
binlog は非表示の文字を 16 進数に変換し (eg "\n", "\r"
)、通常の文字は直接出力されることがわかりました (eg "%", "a"
)。何かがおかしい。この列がの場合"\x10"
、binlog は出力します"\x10"
(ケース 1 と呼びます)。この列がこれらの 16 進数の文字でもある"0x10"
場合、binlog は"\x10"
TOO を出力します (ケース 2 と呼びます)。したがって、これらの文字列の違いについて話すことはできません。
"\x10"
ケース1の場合、バイナリログはバックスラッシュをエスケープするように出力する必要があると思います. これは mysql binlog のバグですか?