by shigemk2

当面は技術的なことしか書かない

INSERT IGNORE

重複キーエラー対策などに使われる。

IGNORE キーワードを使用した場合、INSERT ステートメントの実行中に発生したエラーは無視されます。たとえば、IGNORE を使用しない場合は、テーブル内の既存の UNIQUE インデックスまたは PRIMARY KEY 値を複製する行によって重複キーエラーが発生し、このステートメントは中止されます。IGNORE を指定すると、その行が破棄され、エラーは発生しません。代わりに、無視されたエラーが警告を生成する可能性がありますが、重複キーエラーは生成しません。

その値についてのパーティションが見つからなかったらIGNOREなしだとエラーになるけどIGNOREをつけると無視される。

IGNORE には、特定の値に一致するパーティションが見つからないパーティション化されたテーブルへの挿入でも同様の効果があります。IGNORE を指定しない場合、このような INSERT ステートメントはエラーで中止されます。ただし、INSERT IGNORE が使用されている場合は、一致しない値を含む行に対する挿入操作が暗黙のうちに失敗しますが、一致した行はすべて挿入されます。例については、セクション19.2.2「LIST パーティショニング」を参照してください。

MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.2.5 INSERT 構文

REORGANIZE PARTITION

パーティションを削除すると、そのパーティションに格納されていたすべてのデータも削除されることを覚えておくことは非常に重要です。前の SELECT クエリーを再実行することで、これが本当であることを確認できます。

ってことで、データを削除しないでパーティションを更新するには、REORGANIZE PARTIOTIONを使う。

ALTER TABLE tbl1 REORGANIZE PARTITION p202006 INTO ( PARTITION p202005 VALUES LESS THAN ('2020-06-01') ENGINE = InnoDB, PARTITION p202006 VALUES LESS THAN ('2020-07-01') ENGINE = InnoDB );

なお、パーティションはLESS THANの値によって順番が決まっているので、これを間違えると VALUES LESS THAN value must be strictly » increasing for each partition って出るので注意

MySQL :: MySQL 5.6 リファレンスマニュアル :: 19.3.1 RANGE および LIST パーティションの管理

RDS カスタムエンドポイントメモ

  • カスタムエンドポイントはREADER/WRITER/ANYのいずれかでカスタムエンドポイントの一部になりうるDBインスタンスを選べる
  • READER/WRITER/ANYはマネコンでは選べない awscliで変更する必要がある
  • カスタムエンドポイントWRITERはマルチマスタークラスターでしか選べない。なのでシングルスタークラスター(普通の1writer複数リードレプリカのあの構成)だと、modify-db-cluster-endpointで--endpoint-type WRITERが使えず、Endpoint type not supported by the clusterになって終わる

Amazon Aurora 接続管理 - Amazon Aurora

Aurora マルチマスタークラスターを使用する - Amazon Aurora

one or more of the requested capabilities are not supported

FargateがEFSをサポートしたのは今年に入ってつい最近のようで、Fargateのプラットフォームバージョン(PV)が1.4.0じゃないと動かない。 LATESTは本当にLATESTじゃなくて、今日Fargateのタスク定義を実行したら、どうやらPVの実体は1.3.0のようで、1.3.0だと以下のエラーが出た。

one or more of the requested capabilities are not supported

LATESTがちゃんと1.4.0になるのはたぶんちょっと後くらいで、Fargate EFSをちゃんと使いたいならPVを1.4.0で明示しないといけないっぽい。

The role of AWS Fargate in the container world | Containers

Fargate プラットフォームバージョンの入門 | Amazon Web Services ブログ

タスク定義パラメータ - Amazon Elastic Container Service

cfn-lint

都度アップロードしてそこでテンプレートのYAMLだかJSONだかがvalidate errorになるのは忍びないので、事前にシンタックスチェックを働かせたい人生だった。homebrewでもpipでもどっちでもOK。

使いかた例 regionが違うとどうなるのかは検証してない。

cfn-lint --template simple-vpc.template.yml --region us-east-1 --ignore-checks W

Git pre-commit validation of AWS CloudFormation templates with cfn-lint | AWS Management & Governance Blog

EFS コストカットメモ

EFS コストカットメモ

  • スループットモードの見直し
    • TotalIOBytes(SUM)がKiB(秒)レベルだったらプロビジョンドスループットする必要はない
    • 日のTotalIOBytes(SUM)を、24 時間、60 分、60 秒、1024 バイトで割り、その日にアプリケーションが必要とする平均 KiB/秒を求める
    • PermittedThroughputと↑の平均スループットを見比べて、PermittedThroughputが大きいならスループットモード見直し
  • ライフサイクルポリシー
    • 一度限りでそんなアクセスしないファイルが多いならライフサイクルポリシーを検討
    • 一定期間アクセスしなかったファイルを、EFS低頻度アクセス (EFS IA) ストレージクラスに移動させる(消さない)
    • アクセス時間の定義はしらないけどたぶんatimeじゃないか?

Amazon EFS メトリクスの使用方法 - Amazon Elastic File System

Amazon EFS のパフォーマンス - Amazon Elastic File System

EFS 転送中データの暗号化 メモ

  • mount -o tls マウントオプションtlsでEFSをマウントすると転送中データが暗号化される
    • mount option tlsでググるとほぼこのEFSの話題しかでないのはちょっと笑う
  • タスク定義でこれをやりたいばあいはtransitEncryption ENABLEDにする

転送中のデータの暗号化 - Amazon Elastic File System

Amazon EFS ボリューム - Amazon ECS