問題タブ [binary-log]
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レプリケーション
異なるジョブ(異なるデータベースを保持している)を持つ2つのmysqlサーバーがあり、一方が失敗したときに一方を使用してスリップできるようにしたい場合、両方のデータを同等に保つ方法を提案しますか?リアルタイムに」?
明らかに、x分ごとに完全なデータベースダンプを作成することはできません。
バイナリログについて読んだことがありますが、それは私が進む必要のある方法ですか?フォールバックサーバーの速度が大幅に低下することはありませんか?バイナリログに一部のテーブルを含めない方法はありますか?データが変更されても問題ありませんか?
mysql - 究極の MySQL レガシー データベースの悪夢
表 1: キッチン シンクを含むすべて。間違った形式の日付 (最後の年なのでその列でソートできない)、VARCHAR として格納された数値、「番地」列に完全な住所、名列に名と姓、名字列に市区町村、不完全な住所、何年にもわたって変更された一連のルール、重複レコード、不完全なレコード、ガベージレコードに基づいて、あるフィールドから別のフィールドにデータを移動することにより、前の行を更新します...名前を付けます...ああ、もちろん、TIMESTAMPまたはPRIMARYではありませんKEY 列が見えます。
表 2: この赤ん坊をクラックして開いた時点で、正常化の望みはすべて消え去りました。各エントリに行があり、テーブル 1 の行を更新します。したがって、明日はありません (800MB 相当) のような重複と、Phone1 Phone2 Phone3 Phone4 ... Phone15 のような列 (これらは phone とは呼ばれません。説明のためにこれを使用します) 外部キーは..よく推測してください。table1 の行にどのようなデータがあったかによって、3 つの候補があります。
表 3: 悪化することはありますか? そうそう。「外部キーは、ダッシュ、ドット、数字、および文字の VARCHAR 列の組み合わせです! それが一致しない場合 (多くの場合一致しません)、同様の製品コードの 2 番目の列が必要です。それらの中のデータとの相関関係はなく、必須の Phone1 Phone2 Phone3 Phone4... Phone15. Table1 から複製された列があり、TIMESTAMP または PRIMARY KEY 列が見えません。
表 4: 進行中の作業として説明されており、いつでも変更される可能性があります。それは本質的に他のものと似ています。
100 万行近くになると、これは大混乱です。幸いなことに、それは私の大きな混乱ではありません。残念ながら、「顧客」ごとに複合レコードを引き出す必要があります。
最初に、Table1 に PRIMARY KEY を追加し、すべての日付をソート可能な形式に変換する 4 つのステップの変換を考案しました。次に、Table1 を使用して他のテーブルからプルしてコンポジットを形成できるようになるまで、フィルタリングされたデータを返すクエリのステップをさらに 2 つ実行します。数週間の作業の後、いくつかのトリックを使用してこれを 1 つのステップにまとめました。これで、アプリを混乱に向けて、複合データのきれいなテーブルを引き出すことができます。幸いなことに、目的に必要な電話番号は 1 つだけなので、テーブルの正規化は問題になりません。
毎日何百人もの従業員が想像もつかない方法でこのデータベースを追加/更新/削除し、毎晩新しい行を取得する必要があるためです。
どのテーブルの既存の行も変更可能であり、TIMESTAMP ON UPDATE 列がないため、何が起こったのかを知るためにログに頼る必要があります。もちろん、これはバイナリログがあることを前提としていますが、ありません!
鉛風船のように下がったコンセプトをご紹介。私は彼らの子供たちが実験的な手術を受けなければならないだろうと彼らに言ったかもしれません. 彼らは正確にはハイテクではありません...あなたが集めていなかった場合に備えて...
私の会社がひどく欲しがっている貴重な情報を彼らが持っているので、状況は少しデリケートです. 私は、大企業の上級管理職 (彼らがどのようであるかを知っています) から「それを実現する」ように派遣されました。
bin ログ ファイルをさらに別のアプリケーションで解析し、日中にそのデータベースに対して何を行ったかを把握し、それに応じてテーブルを合成する以外に、夜間の更新を処理する方法は考えられません。私のテーブルに何をすべきかを理解するために、私は本当に彼らの table1 を見る必要があるだけです。他のテーブルは、レコードをフラッシュするためのフィールドを提供するだけです。(混乱の重複があるため、MASTER SLAVE を使用しても役に立ちません。)
別の方法は、table1 のすべての行に対して一意のハッシュを作成し、ハッシュ テーブルを作成することです。次に、毎晩データベース全体を調べて、ハッシュが一致するかどうかを確認します。そうでない場合は、そのレコードを読み取ってデータベースに存在するかどうかを確認し、存在する場合はデータベースで更新し、存在しない場合は新しいレコードとして INSERT します。これは醜く、高速ではありませんが、バイナリ ログ ファイルの解析もきれいではありません。
問題を明確にするためにこれを書きました。多くの場合、他の人にそれを話すと、問題が明確になり、解決策がより明白になります。この場合、私はより大きな頭痛を抱えています!
あなたの考えは大歓迎です。
mysql - MySQL クエリ ベースのレプリケーション
InnoDB MySQL インスタンスで実行されるすべてのクエリを渡すことで、MySQL Cluster インスタンスをロードテストしたいと考えています。現時点では、クラスターのデータの整合性についてはあまり心配していません。この調査は、クラスターの安定性と速度に焦点を当てています。
ステートメント ベースのバイナリ ログ レプリケーションは使用したくありません。純粋に SELECT であるクエリはクラスターに渡されず、パフォーマンスが不完全になるためです。
MySQL インスタンス間で一般的なクエリ ログ ベースのレプリケーションを実装するための最良の方法は何ですか?
どうもありがとう、
mysql - バイナリログに書き込まずに MYSQL でクエリを実行するにはどうすればよいですか?
大きなファイルの MySQL へのインポートを実行したいと考えています。ただし、インポートに時間がかかり、スレーブが大幅に遅れる原因となるため、バイナリ ログに書き込みたくありません。システム上ではるかに簡単になるため、実際にはスレーブで個別に実行したいと思います。問題のテーブルは新しいテーブルなので、マスターとすべてのスレーブが同じファイルをインポートするため、マスターとすべてのスレーブが最終的に同じデータを持つため、同期が取れなくなることを実際に心配する必要はありません。最終的。また、問題のサーバーの再起動が必要になるため、replicate-ignore-* または binlog_ignore-* オプションも変更したくありません。バイナリログに書き込まずに単一のクエリを実行する方法はありますか?
私はすでに答えを知っていますが、ネット上で簡単に見つけることができなかったので、誰かに答えを投稿させて、いくつかの担当者ポイントを獲得しています。少し白く答えがない場合は、見つけた答えを投稿します。
mysql - ローテーションされたMySQLバイナリログを削除しても安全ですか?
バイナリロギングがアクティブなMySQLサーバーがあります。1日に1回、ログファイルが「ローテーション」されます。つまり、MySQLはそのファイルへの書き込みを停止し、新しいログファイルを作成するようです。たとえば、私は現在/ var / lib/mysqlにこれらのファイルを持っています
そしてmybinlog.000006は成長しています。
mybinlog.000004とmybinlog.000005を取得し、それらを圧縮して別のサーバーに転送することはできますか、それとも前に何か他のことをする必要がありますか?
mybinlog.indexにはどのような情報が保存されていますか?最新のバイナリログに関する情報のみですか?
更新: mybinlog.indexファイルを更新するPURGEBINARYLOGSを使用してログを削除できることを理解しています。ただし、ログを削除する前に、ログを別のコンピューターに転送する必要があります(バックアップが別のマシンで有効かどうかをテストします)。転送サイズを減らすために、ファイルをbzip2で圧縮したいと思います。ログファイルが「存在しない」場合、PURGE BINARY LOGSは何をしますか?
mysql - 一部のテーブルをmysqlでバイナリログから除外する方法は?
ネットワーク帯域幅とキャッシング テーブルの複製にかかる時間を無駄にしないように、一部のファイルをバイナリ ログに記録しないようにする必要があります。
私はあることを知っています
特定のテーブル (キャッシュテーブル) に対してどのように行うことができますか??
のようなものはありますか
** 編集 **
私は drupal を使用していますが、drupal のブースト キャッシングには機能的な欠陥があります。binlog ファイルは指数関数的に大きくなります。(時には約 100MB/分!!) そして、そのようなケースを回避する唯一の方法は、これらのテーブルのログ記録を停止することです。ありがとう!!
mysql - mysqlbinlogを使用したMysqlデータの回復
スキーマをバックアップせずに誤って削除してしまいました。
そして今、 mysqlbinlogユーティリティを使用してリカバリを実行したいと思います。(mysqlbinlogは優れたツールのようです)。また、リカバリを実行するには、これらのバイナリログファイルが必要です。
今、私は次の混乱を抱えています:
- それらのバイナリログファイルが見つかりません。それで、彼らはどこにいますか?
- 操作がログに記録されていないか、バイナリログが有効になっていない場合、それを有効にする方法。mysqlのドキュメントを読みましたが、デフォルトで有効になっているとのことです。しかし、私はそれらのファイルを見つけることができませんが...
- /var/log/mysqld.logファイルを介してデータとスキーマを回復することは可能ですか?
mysql - MySQL バイナリ ログは Uid のロギングをサポートしていますか?
MySQL Binary Log を使用して、DB に変更を加えたユーザーの Uid (ユーザー名) を記録できるかどうかを知りたいです。
これは、監査目的で必要です。
それは可能ですか?
mysql - MySQLバイナリログのタイムスタンプが非シーケンシャルですか?
ここにMySQL5.5.20(行ベース)からのバイナリログダンプがあります。UPDATEイベントがINSERTイベントの前にあるため、スレーブが停止しました。
ご覧のとおり、2番目のタイムスタンプは後でバイナリログ(1327402566 <-> 1327402568)にあります。@1が主キーです。どちらの場合も350049です。しかし、最初に、UPDATEよりもINSERTステートメントを期待します。
どうしてこれが可能でしょうか?そして、どうすればこれを修正できますか?
ありがとう
mysql - MySQL-デフォルトでバイナリログをテーブルに保存
MySQL CommunityServer5.1を使用しています。しばらく前に、バイナリログ情報をMySQLテーブルに保存するようにMySQLデータベースを構成できると聞いたのを覚えています。簡単な検索をしましたが、今回探していたものが返ってきませんでした。バイナリログのすべての情報をデータベーステーブルに表示したいと思います。誰かがこれについて何か知っていますか?