タグ付けされた質問 「replication」

レプリケーションは、信頼性、フォールトトレランス、およびアクセシビリティを向上させるために冗長ハードウェア/ソフトウェアリソース間の整合性を確保するために、あらゆるレベルの情報を共有するプロセスです。

1
MySQLレプリケーションスレーブの再起動
セットアップ後初めて、読み取り専用のMySQLレプリケーションスレーブを再起動する必要があります。 メンテナンスのためにスレーブを停止することに関するこの記事を見つけました(彼はmysqlデーモンの停止について説明しているだけですが)。 MySQLスレーブサーバーを安全に再起動する方法 要約すると、手順は次のとおりです。 ではmysqlクライアント: STOP SLAVE; FLUSH TABLES; OSから: /etc/init.d/mysql stop この時点で再起動し、システムが起動した後: ではmysql、クライアント(mysqlデーモンがブート時に起動するように設定されます): START SLAVE; これは正しく見えますか?他に何かすべきことはありますか?

1
MongoDBで長時間実行されている操作を(安全に)強制終了するにはどうすればよいですか?
MongoDBで操作が制御不能になり、最終的に数百秒間実行され、強制終了または完了するまでパフォーマンスに影響を与える場合があります。 それが発生したとき、私はkillOp()利用できることを知っていますが、(たとえば)レプリケーションに関係する長時間実行オペレーション(危険な場合があります)を強制終了せずに、対象となる長時間実行オペレーションのみを強制終了するにはどうすればよいですか?

6
MS SQL Serverで混乱したレプリケーションを修正する方法
バックアップからデータベースを復元しました。データベースはレプリケーションを使用して別のサーバーに公開します。データベースを復元するとレプリケーションが壊れると想定して、レプリケーションを削除して再作成しようとしました(ゼロから再作成するスクリプトがあります)。私が何をしたか正確にはわかりませんが、今は完全にめちゃくちゃな状態にあり、修正できません。 最初に、(パブリッシャーサーバー上の)サブスクリプションを削除しようとします。 EXEC sp_dropsubscription @publication = 'PublicationName', @article = N'all', @subscriber = 'SubscriberServerName' これは動作するようです。SELECT * FROM syssubscriptions結果は表示されません。サブスクライバーサーバーでSSMS> {SubscriberServer}>レプリケーション>ローカルサブスクリプション-サブスクリプションがありません。 それで、私は出版物を削除しようとします。SSMS> {サーバー}>レプリケーション>ローカルパブリケーション> {PublicationName}>削除。これにより、次のエラーメッセージが表示されます。 Could not delete publication 'PublicationName'. Could not drop article. A subscription exists on it. Changed database context to 'DatabaseName'. (Microsoft SQL Server, Error: 14046) OK、それで私は記事を落とそうとします: EXEC sp_droparticle @publication = …


3
100以上のクライアントDBからのデータを一元化されたレポートデータベースに統合する方法に関するアドバイスを探す
私は小規模な(従業員数50人まで)SaaS企業のSQL開発者(DBAまたはアーキテクトではありません)です。私は次の方法を理解する必要があります。 100以上のOLTPデータベースから運用レポートをオフロード これらのレポートを複数のクライアントデータベースのデータに対して実行できるようにする 将来的に分析ベースのソリューションを提供するように当社を位置づける トランザクションレプリケーション(特に多対1 /中央サブスクライバーモデル)、SQLサービスブローカー、ログ配布、変更追跡(CT)、および変更データキャプチャ(CDC)などのさまざまなテクノロジに関する記事をいくつか読んだことがあります。これは企業専用です)、どの経路が最適かはわかりません。 統合に関する専門知識をお持ちの方が、私たちと同様の設定に出会い、成功への道筋を示したり、役立つリソースに案内したりできることを願っています。 コストの制約により、このソリューションはSQL Server Standard Edition内で機能する必要があります。また、このソリューションは、小規模な組織内でサポート/維持するために合理的でなければなりません。 基本構成: 現在、100を超える個別のクライアントデータベースがあり、ほとんどがデータセンターのSQLサーバーに展開されていますが、一部はリモートアクセス可能なデータセンター内のクライアントサーバーに展開されています。これらはすべてSQL Server 2008 R2データベースですが、近日中にSQL 2016にアップグレードする予定です。 データベースプロジェクトとdacpacsを使用して、統合されるすべてのクライアントデータベースでスキーマが同じになるようにします。ただし、すべてのクライアントに同時に新しいバージョンへのアップグレードを強制するわけではないため、アップグレード間でスキーマが異なる場合があります。ソリューションは、クライアントAがソフトウェアバージョン1.0にあり、クライアントBがバージョン1.1にある場合に中断しないように十分に柔軟でなければなりません。 運用レポートは現在、各クライアントのOLTPデータベースから直接実行されます。これをオフロードしない場合、アプリケーションのパフォーマンスに与える影響を懸念しています。 高レベルの要件: 私たちのクライアントは、病院の無菌処理部門(SPD)で、これまでに処理したもの、在庫がある場所などに関する最新のレポートが必要です。SPDは、週末と休日を含め、24時間体制で在庫を処理します。この取り組みの主な目的の1つは運用レポートをより適切にサポートすることであるため、クライアントのニーズに対応し続けるために、データをできる限りリアルタイムに近づけることを望んでいます。 現在、実際には同じ病院システムの一部である個別のデータベースにいくつかのSPDがあります。これらのクライアントは、システム内のすべてのSPDに対してレポートを作成する機能を求めています。 戦略的に言えば、社内の分析イニシアチブをサポートするために、すべてのクライアントのデータを簡単に集約できる機能が必要です。収集した運用データをデータマート/倉庫のソースとして使用できることが期待されます。 これまでの考え: トランザクションレプリケーションは、最も「リアルタイム」なソリューションを提供するようです。この応答が特に役立つことがわかりましたが、スキーマの違いが生じる可能性があるため、SQL Serverの多対1レプリケーションが機能しないことを懸念しています。 クエリがアクティブな間はログを復元できないので、ログ配布は理想的に聞こえません。ログを復元できるようにするには、全員を追い出す必要があります。そうしないと、データが古くなります。この方法が複数のデータベースからのデータを一元化するために使用できるかどうかは不明です。出荷される各ログは、それが由来する個々のデータベースに関するもののみであるためです。 SQLサービスブローカーを使用する場合、キューが処理するメッセージの数に対応できなかった場合、レイテンシは予測できない場合があります。 CTは、各テーブル行のバージョンのみを識別します。レイテンシは、データを取得して中央リポジトリに挿入するために、各データベースに対してSSISパッケージのようなものをどれだけ速く処理できるかに依存します。 各データベースを個別にレプリケートすることを検討する必要があり、その後、ある種のデータ仮想化手法を使用して、さまざまなレプリケートされたソースからのデータを組み合わせる必要があるでしょうか。 あなたが提供したいアドバイスや指示があれば、大歓迎です。

3
非IT担当者向けのデータベースステージング環境
現在、データベースステージング環境をIT部門に提案しています。アイデアは、私のような非IT担当者(公共事業データアナリスト)がソリューションをテストする場所を持ち、自分で実際の環境に実装するか、必要に応じてITに実装を依頼するというものです。この環境が有益である理由/シナリオはいくつかあります。 私は(私たちのライブデータベース環境でいくつかの基本的なデータベース権限を持っているcreate table、create viewなど)。スキーマの変更は約1週間に1回行いますが、これらの変更を実際の環境でテストして実装するのは、私には異常です。データベースには無数の依存関係があるため、問題が発生した場合は悲惨なことになる可能性があります。むしろ、別の環境で事前にテストしておいたほうがいいです。 私のような、より高度な権限の一部はありませんcreate triggerか、create functionライブデータベース内を。これは問題ありませんが、トリガーや関数によって解決できる問題がいくつかあります。いくつかのアイデアを開発およびテストできるように、ステージング環境でこれらの権限を付与することを提案し、それらが機能する場合は、ITがそれらをライブ環境に実装することを提案します。 一般に、私のIT部門には、ソリューションを開発するための時間やリソースがありません。とても簡単です。ですから、私が自分でレッグワークを行うことができれば、私の問題ははるかに解決されるでしょう。 「非IT担当者向けのステージング環境」は、私にとっては十分に健全なアプローチのように思えますが、正直に言って、考えをまとめただけです。IT /データベースの世界でこれがどのように一般的に行われるのか私にはわかりません。 このシナリオに当てはまる確立されたIT /データベースプラクティスはありますか?(非IT担当者向けのデータベースステージング環境を提案するときに、私は正しい軌道に乗っていますか?)

1
バックアップからのトランザクションレプリケーションの初期化
レプリケーションのパブリケーションを設定するときに、バックアップからの初期化を許可するオプションがあります。私たちは数年前から複製データベースを作成しており、常にバックアップから初期化してきましたが、このフラグを設定したことはありません(数日前に初めて気づきました)。複製は常に問題なく機能してきました。 これを使用する必要があることを説明するヒットがたくさん見つかりましたが、理由を説明するものはありません。 これが実際に何をしているのか誰かが理解していますか?私の観点から、それは必要ではないようですが、私は何かを逃している必要があると考えています。

4
MySQLの以前のスレーブをマスターに変更し、スレーブステータス情報を削除する方法は?
マスターが失敗したマスター->スレーブ構成があります。私は古いスレーブをマスターに、古いマスターをスレーブにリセットすることができました。いいね。 私ができないように見えるのは、現在新しいマスターになっている古いスレーブのマスター情報を削除することです。そうですか: mysql> show slave status \G *************************** 1. row *************************** Slave_IO_State: Master_Host: 10.1.2.101 Master_User: replicationSlave Master_Port: 3306 ... Slave_IO_Running: No Slave_SQL_Running: No 多くのMySQLドキュメントを読みましたが、スレーブ情報をnew-masterからクリアする方法がまだ見つかりません。私はもう試した: RESET SLAVEこれらの設定はクリアされないようです。[実際には、master.infoファイルは削除されますが、メモリ設定は削除されません。下記参照。]] CHANGE MASTER TO MASTER_HOST='' これは最近廃止されたため、エラーが発生しただけです。 my.cnfそれらがプログラムで追加されたため、マスター情報がないものをチェックしています。 RESET MASTER一部のmysqlドキュメントで推奨されているため。これは、binログのみをリセットします。 内部のMySQLテーブルを調べて、クリアするフィールドが見つかるかどうかを確認します。 MySQL〜5.5.9でこれを行う適切な方法は何ですか?助けてくれてありがとう。 編集: したがって、@ RolandoMySQLDBAが暗示するようにファイルをRESET SLAVE削除することがmaster.infoわかりました。ただし、スレーブ情報を削除する前に、サーバーを再起動する必要があります。 mysqldを再起動せずにこのスレーブ情報を削除する方法はありますか?

1
使用中のマスター/スレーブ複製システムで単一のmysqlデータベースを回復する
忙しいレプリケートされたシステムで単一のデータベースを特定の時点にリカバリするための戦略またはツールを探しています。 マスタースレーブ複製構成の2つのMySQL 5.0.77サーバーで実行されている12のデータベースがあります。読み取り専用スレーブのフルダンプが毎日取得され、これらのバックアップがオフサイトにある増分SQLダンプが利用可能であり、レプリケーションステータスが監視されます。 編集:テーブルはInnoDBとmyISAMの混合であるため、エンジン固有のソリューションは利用できません。 したがって、マスターサーバーに完全な障害が発生した場合、レプリケーションを中断してスレーブサーバーを昇格させることができます。また、新しいサーバーを再構築してオフサイドのフルバックアップから構成し、スレーブから1時間ごとに取得した差分を適用することもできます。 ただし、部分的な障害、または単一のデータベースの障害に対処する方法を心配しています。かなりありそうな2つのシナリオを考えることができます。 データベース7(たとえば)が破損し、壊れていることに誰かが気付くまで、またはログファイルからアラートが出されるまで、いくつかの要求を処理し続けます... 「データベースの削除」、「テーブルの削除」、「更新場所...」タイプのクエリなどのクエリは、単一のデータベース、またはその一部のサブセットを作成します。 現時点では、FULL- $ DATE-all-databases.sql.gzファイルとしての一連のフルダンプと、DIFF- $ DATE-all-databases.sql.gzとしてフルダンプに適用できる差分があります。 データベース7を特定の時点に復元するには、FULLおよびDIFFファイルを介したgrepと、そのSQLの手動による適用が必要です。 マスターデータベースへの以前のDIFFダンプの1つに回復できるようにするには、どうすればよいですか? 個々のデータベースファイルにバックアップする必要がありますか? mysqldump --databases "database1" | gzip > database1.sql.gz mysqldump --databases "database2" | gzip > database2.sql.gz mysqldump --databases "database3" | gzip > database3.sql.gz のではなく.. mysqldump --master-data --lock--all-databases --all-databases | gzip > all-databases.sql.gz 個別のmysqldumpファイルを使用する場合、マスターデータのバイナリログはどうなりますか?マスターサーバーのリカバリダンプに--master-dataを設定する必要がありますか?



4
エラー1236-「バイナリログインデックスファイルで最初のログファイル名が見つかりませんでした」
私たちのセットアップ: マスター:MariaDB 10.0.21 スレーブ:MariaDB 10.0.17 レプリケーションは最近まで正常に機能しており、その時点でスレーブのDBをダンプから復元する必要がありました。必要なすべての手順を実行しました。マスターのDBをダンプし、ダンプをスレーブに転送し、古いDBをドロップし、ダンプを実行してDBを復元し、適切なCHANGE MASTERコマンドを実行し、最後にを実行しましたSTART SLAVE。 エラーが表示されます: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file' スレーブがマスターから必要とする最初のログファイルはmysql-bin.000289です。これがマスター上にあることがわかります: マスターのバイナリログインデックスに、このログファイルのエントリがあるように見えることもわかります。 それでもレプリケーションは機能していません-同じエラーが発生し続けます。アイデアが足りません-次に何を確認すればよいですか? 更新:SHOW SLAVE STATUS\G要求通りの出力: MariaDB [(none)]> SHOW SLAVE STATUS\G -------------- SHOW SLAVE STATUS -------------- *************************** …

2
いくつかのテーブルを1つのpostgresデータベースから別のデータベースに複製する
次のような状況です。3台のマシンでpostgresqlデータベースを実行しています。1つのマシンはクライアントアカウント情報を保持し(このマシンをCと呼びます)、他の2つのマシンはクライアントロギング情報を保持します(これらのL1とL2を呼び出します)。分割の理由は、複数のマシンにまたがるロードを分離するためです(そのため、一部のクライアントはログ情報をL1に送信し、一部はL2に送信します...おそらくL3、L4などの時間を送信します)。 ロギング情報を取得するときは、原則として、LnのロギングテーブルとCのクライアントアカウントテーブルの間で結合できるようにしたいと思います。実際には、このような結合はできません(可能な場合でも、 Cの読み込みを回避するため)。 私の考えは、Cのテーブルを各L1、L2、...に複製して、結合を実行できるようにすることです。Cのテーブルに関する限り、Cはマスターで、L1、L2、...はスレーブです。しかし、L1、L2などの他のテーブルでは、これらのマシンはマスターです。これは正確にはマスターマスターレプリケーションではなく、正確にはマスタースレーブではありません。 postgres(私は9.1を実行しています)のレプリケーションでこれを実行するように説得できますか。最後の手段として、テーブルを定期的に同期するコードを書くことができます(多少の遅延は許容できます)が、それはできません。 前もって感謝します。

2
MySQLレプリケーション:「PRIMARYキーの重複したエントリ」
完全に再同期した後、スレーブサーバーで「PRIMARYキーの重複したエントリ」が表示される理由を教えてください。 基本的に、「mysqldump」はほぼ一晩実行されていたため、復元プロセスには数時間かかったので、スレーブを起動したとき、マスターから約63874秒遅れていました。 スレーブサーバーは読み取り専用(read_only)であり、再同期プロセス中に書き込みがなかったため、重複したキーがある理由がわかりません。 マスターでバイナリログ形式がMIXEDに設定されています。 DBのバックアップに使用されるコマンド: mysqldump --opt --single-transaction -Q --master-data=2 db | bzip2 -cz > db.sql.bz2 スレーブは、次のオプションを使用して、マスター(db-> db_backup)から1つのデータベースのみを複製します。 replicate-wild-do-table = db_backup.% replicate-rewrite-db = db->db_backup


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.