カテゴリー: SQL

MySQL, AWS

AWS RDS PITR+ロールフォワードによるリカバリ 【誤ったクエリ発行からの復旧】

  RDSのクエリ単位での復旧手順 ソシャゲとかECで、バグでアイテムを9999999999999個大量配布しちゃった時に、スーパーメンテナンスタイムからの問題あるクエリを回避しつつの真のリストアで通常運営できる状態に復旧します。 前提条件 AWS RDS PITR+ロールフォワードによるリカバリ 【下準備編】   関連 AWS RDS PITR+ロールフォワードによるリカバリ …

MySQL, AWS

AWS RDS PITR+ロールフォワードによるリカバリ 【汎用 RDSのディスク障害からの復旧】

      前提条件 AWS RDS PITR+ロールフォワードによるリカバリ 【下準備編】   関連 AWS RDS PITR+ロールフォワードによるリカバリ 【下準備編】 AWS RDS PITR+ロールフォワードによるリカバリ 【汎用 RDSのディスク障害からの復旧】 AWS RDS PITR+ロールフォワードによるリカバリ 【誤ったクエリ発行からの復 …

MySQL, AWS

AWS RDS PITR+ロールフォワードによるリカバリ 【下準備編】

  関連 AWS RDS PITR+ロールフォワードによるリカバリ 【下準備編】 AWS RDS PITR+ロールフォワードによるリカバリ 【汎用 RDSのディスク障害からの復旧】 AWS RDS PITR+ロールフォワードによるリカバリ 【誤ったクエリ発行からの復旧】   RDS側作業     binlog保存期限設定   24時間の保持に設定 …

SQL

JOIN, EXISTS, IN使い分け

  言語化しておく🐱   主表と従属表でどちらのカラムも必要な場合 JOIN   LEFT JOIN 従属表のカラムの列にnullが必要な場合 条件によってnullで表示させたい場合はON句を使う ON A.id = B.a_id AND B.delete_flag = 0   INNER JOIN 主表と従属表の共通行を出したい場合   &nbs …

SQL, PHP

Laravel クエリビルダー 複数JOINとWHERE条件 query builder

  クエリビルダはあまり使わないのだけど、レコードの有無を取得する場合や集計処理なんかでは使うことがある🐱     生クエリがこうだとする   select * from `employee_emails` left join `employee_skills` on `employee_skills`.`employee_email_id` = `employee_ …

SQL, SEノウハウ

すべらないSQLによる本番マイグレーション

    仕様変更によってremarksにあるデータをlogin_infoに移す本番マイグレーションがありました。 事業部に伝わる秘技 ポイント 作業前バックアップ →ヤバくなったら戻せる 立会いによるレビュー トランザクションとカウントを駆使したマイグレーション マイグレーションを本番サーバ内のトランザクションを利用することで、 更新対象を常に確認しながら実行することで精度を確 …

MySQL, AWS, Linux

Resolved [mysqlbinlog] ERROR: Got error reading packet from server: Could not find first log file name in binary log index file

        mysqlbinlog: unknown option –raw ??   解決 MySQL ClientがMariadbになっていた。 RDSはMySQL5.7なので これで実行できた     Amazonおすすめ iPad 9世代 2021年最新作 iPad 9世代出たから買い替え。安いぞ!🐱 初めてならi …

SQL, システム設計

親子カテゴリのDB設計

この記事の紹介する方法だと、仕様で階層が深くなるようになったとしても対応できます。 こういうデータがあったとする categories   id, parent_id, name 1, 3, カテゴリ1 2, null, カテゴリ2 3, 2, カテゴリ3 4, null, カテゴリ4 5, 3, カテゴリ5   階層を表すとこう 3-1-5 2-3-5 4   SQL &nb …

MySQL, トラブルシューティング

MySQLデッドロック ロックしているスレッドを殺す

(none)> SELECT * FROM sys.innodb_lock_waits\G ***************************[ 1. row ]*************************** wait_started | 2020-05-25 06:26:01 wait_age | 0:00:13 wait_age_secs | 13 locked_table …

RDB, SQL

EXISTSとINの使い分け【SQL】

  EXISTSとINは場合によって使い分ける。 間違うと遅くなる…🐱 結論として 従属表の選択性が高い場合 → 従属表から先に絞り込むIN 従属表の選択性が低い場合 → 主表から先に絞り込むEXISTS 両方の選択性が低い場合 → EXISTS 本の検索による例   世界の本のデータベース bookを主表、book_categoryを従属表とする 主表 bookテ …

MySQL, SQL

SQL グループの中で最新の日付のデータを取得する MySQL

●tb_user_section user_id section_id created 1 1 2020-05-11 20:00:00 1 2 2020-05-12 20:00:00 1 3 2020-05-13 20:00:00 2 1 2020-05-15 20:00:00 3 2 2020-05-18 20:00:00 3 4 2020-05-19 20:00:00 user_idのグループ …