こんにちは。コーポレート本部 サイバーセキュリティ推進部の耿です。 大好きだった Aurora Serverless v1 が 2024/12/31 をもってサポート終了ということで、泣く泣く Aurora Serverless v2 へ移行しました。公式ではクラスタのアップグレードを使用した手順が紹介されていますが、今回はそれではなく Aurora Serverless v2 クラスタを新規に作成し、mysqldump によるデータ移行という方法を取りました。その概要を書き残します。 Aurora Serverless v1 の好きなところ なぜ mysqldump を使ったのか 作業概要 1. 事前準備:CDKで Serverless v2 クラスタを作成 2. 事前準備:旧DBのテーブル定義の確認 3. データ移行 4. データ移行後作業 さいごに Aurora Serverless
MySQL の Online DDL について検証しつつ備忘録としてまとめておきます。 (本記事の検証は、MySQL 5.7.40 で実施しています。) mysql> select version(); +-----------+ | version() | +-----------+ | 5.7.40 | +-----------+ 1 row in set (0.02 sec) Online DDLとは MySQL 5.7 Reference Manual - 14.13 InnoDB and Online DDL Online DDL の機能によって、インデックスの作成などの DDL を実行している最中に INSERT , UPDATEなどの DML が実行できるようになっています。 MySQL 5.5 以前での ALTER TABLE は下記のような制限があったようです。 ALTE
こんにちは。ソフトウェアエンジニアの坂井 (@manabusakai) です。 カミナシではマルチプロダクト化に向けて、認証・認可の切り出しを進めています。その対応を進める中で、既存テーブルへのカラム追加が必要になりました。 先日、そのリリースのために本番データベースにマイグレーションの ALTER 文を実行したところ、クエリが詰まって危うく障害になるところでした(幸いすぐにキャンセルして事なきを得ました)。 原因を調べたところ、オンライン DDL は複数の条件が関係することがわかりました。オンライン DDL に対する知識不足と事前検証の甘さゆえのミスでしたが、結果的には良い学びが得られました。 カミナシのバリューのひとつである「全開オープン」の気持ちで、事の顛末やそこから得た学びを公開します。 なお、今回の話は MySQL 5.7 互換の Amazon Aurora MySQL 2 で確
AWS Database Blog Understanding Amazon Aurora MySQL storage space utilization Amazon Aurora is a fully managed relational database service designed to provide the performance, scalability, and availability of high-end commercial databases while offering the simplicity and cost-effectiveness of open-source databases. Amazon Aurora MySQL-Compatible Edition is wire-compatible with MySQL making it an
はじめに collationとは二つの文字の間の順序を定義するものです。こう言われるととても単純に聞こえるのですが、MySQLのcollationの詳細な動作は実は結構複雑です。 この記事はcollationの挙動に関する体系的な解説と様々な具体例を元にcollationに対する理解を深め、collationの問題のトラブルシューティングの筋道を立てる事を目的としています。なお、この記事は大まかなcollationの動作の説明を目的としており、全てを網羅しているわけではありません。詳細な動作はMySQLの公式ドキュメントの方が丁寧ですので実際のトラブルシューティングではドキュメントもご活用ください。 なお、この記事での検証はMySQL8.0.31を利用しています。 collationの基礎 collationは冒頭で説明したように二つの文字の順序関係や同値関係を決めるものです。collat
TL;DR TiDBにおけるパフォーマンス検証をどうやって行ったか パフォーマンス検証を行ったときにつまづいた問題とその対応策 TiDBの仕様やアーキテクチャなどの話はありません 前提 対象のDBはAmazon Auroraで稼働中 DBエンジンはMySQL TiDBに移行できないかPoCを実施 DB周りにいろんな課題があり、TiDBで解決できないか検証 TiDB Cloudで検証 本番運用を想定してTiDB Dedicatedを利用 先にお伝えしたいこと TiDB導入したいとか言う前に、今使っているRDBで発生しているスロークエリとかIndex設計を見直した方が良いです笑 理由はこの記事を見てもらえるとわかると思いますw パフォーマンス検証の進め方 1. パフォーマンス検証に利用するクエリを洗い出す 観点としては以下の2つ 実行される頻度が高いSQL 実行速度が遅いSQL(スロークエリ)
MySQLサーバーの運用・管理に役立つ視点を、実践経験豊富なエンジニアが解説する『MySQL運用・管理[実践]入門〜安全かつ高速にデータを扱う内部構造・動作原理を学ぶ』が2024年5月22日に発売されました。著者は、yoku0825さん、北川健太郎さん、tom__boさん、坂井恵さんと、MySQLの運用においてベテランと言える経歴の持ち主が揃い踏み。発売から1か月が経過したばかりですが、早くも多くの反響を呼んでいます。 初学者に優しくありつつ、上級者も唸らせるようなディープな内容も盛り込む、というバランスのとれた内容。書籍の制作工程やデータベースを学ぶ意義について、著者の一人であるyokuさんにお伺いしました。 4人の専門性を活かし、さまざまなレベルの読者が楽しめる本に 実践で使える運用ノウハウからソースコードレベルのコアな情報まで 本書を片手に、MySQLの「沼」の深いところに潜ってほし
目次 目次 とある日 環境 USINGとONの違いについて 1. 同一列名 2.結合後列数減少 列数減少による問題 Using On 気づかなかった理由 Onの多用 結合列の参照をしない 〆 とある日 とある内容について検証しているときに気づいたSQLのUSINGとONの違いについて調べるとあまり解説されていなかったので各句の違いとなぜ気づかなかったかについての記録を残そうと思います。 環境 項目 詳細 DataBase MySQL 8.0.23 OS CentOS8 さらなる詳細は下記のテスト環境の記事を参照してください。 updraft.hatenadiary.com USINGとONの違いについて 一般的に一番知られているであろう違いと自分が知らなかった違いの2つを解説しようと思います。 1. 同一列名 一番知られている違いとしては、USINGは結合するテーブルに同一名の列が存在する
AWS Database Blog Binary logging optimizations in Amazon Aurora MySQL version 3 The binary log (binlog) in MySQL is used to capture database modifications on a MySQL server in a logical format known as “events”. These database modifications can include DCL statements (such as CREATE USER or GRANT), DDL statements (CREATE TABLE, ALTER TABLE) and DML statements (INSERT, UPDATE, DELETE). When such a
はじめに MySQL8.0がリリースされたことにより、Window関数の利用が可能になりました。 Oracle,PosgreSQL、SQL Server等でも利用できる関数ですが、「難しそう」、「どういう場合に使えば良いかわからない」というイメージを持たれている方もいると思いますので、この記事ではシンプルにどのようなことが出来るのかを紹介します。 第一弾は、「集計関数×Window関数」のコラボです。 集計関数とは、MAXやSUMやAVG等のデータを集計する関数ですが、実はほどんどの集計関数がWindow関数として利用できます。集計関数の種類やWindow関数として利用可能かという点に関しては、以下のリファレンスに記載されておりますので、参照頂ければと思います。 ・MySQL 8.0 リファレンス マニュアル 14.19.1 集計関数の説明 データ準備 検証用に1つのテーブルを作成し、テス
はじめにこんにちは、SHIFT の開発部門に所属しているKatayamaです。今期から転属になり、開発を担当していくことになりました。 現在、基本的な事から学ぶ研修中です。開発部門では新しく学ぶことがたくさんあり、それらを自身の振り返りアウトプットとして発信していけたらと思います。記事が溜まったら、noteのマガジンにもまとめる予定です。 ■前提条件・virtualbox で CentOS のディスクイメージで Linux 環境を構築済み # cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) ■docker で MySQL Server を起動する・docker のインストールまずは CentOS を最新化する。 # yum update # yum upgrade OS requirementsに The cento
フルNext.jsアプリケーション作成の一環で、DBマイグレーションツールにprismaを使ってみたので、書き方のメモです。 いきなりですが、prismaは細かくDDL文を制御できず、思ったテーブルを作れなかったので、細かくテーブル定義を設定したい場合はTypeORMの方がいいかもしれません。 準備 プロジェクトにprismaをインストールし、初期ファイル(prisma/schema.prisma)を作成します。 $ yarn add -D prisma $ yarn run prisma init schema.prismaの書き方 公式ドキュメントの書き方を参考に、スキーマをschema.prismaに記載していきます。 記載する際の注意点・考慮点は以下です。 providerをmysqlに変更する @db.Timestampではなく@db.Timestamp(0)のように書かないとマ
はじめに インフラエンジニアの天野です。 DeNA Advent Calendar 2021 の1日目として、ここでは DeNA TechCon 2021 Autumn で登壇させていただいた、「数百 shard のデータベース運用を最適化する手法」についてお話していきます。 録画は冒頭に挙げた YouTube に上がっていますので、よろしければそちらもご覧ください。スライドは以下にございます。 DeNA では様々なインフラの運用を自動化してきましたが、データベースの運用にはまだ一定の工数がかかっています。 ここでは、大規模ゲームを例に、DeNA が今まで取り組んできたデータベースの運用最適化の手法について紹介していきます。 大規模ゲームにおけるデータベースの特徴 MySQL 互換 リリース直後の膨大なリクエストを捌くために数百 shard の水平分割 台数が増えると故障台数も増えて運用負
はじめに MySQLで日時情報を格納する際には、DATETIME型とTIMESTAMP型の2つが使用されるケースがほとんどかと思います。 また、MySQL5.7までとMySQL8.0以降では、デフォルト設定で制約とDEFAULT値を指定しなかった場合のTIMESTAMP型の挙動の違いがあり、MySQL5.7までのTIMESTAMP型では、特殊な動作をします。 今回は、DATETIME型とTIMESTAMP型の違いにも触れながら、TIMESTAMP型を使用する際には、知っておいた方がよいことを記載したいと思います。 データサイズ MySQL 5.6.4 以降は、DATETIME型、TIMESTAMP型ともにマイクロ秒まで格納できるようになりましたので、それ以降のバージョンでデータサイズは見直しされています。 データ型 MySQL 5.6.3 までのバージョン MySQL 5.6.4 以降のバ
はじめに MySQLでは、たびたびスロークエリがパフォーマンス上の問題になることがあります。 Percona Monitoring and Management(以下PMM)では様々なメトリクスが収集されており、スロークエリの問題を対処するためのグラフが用意されています。 例えば、MySQL Instance SummaryダッシュボードのMySQL Slow Queriesパネルではスロークエリの発生回数を確認できます。 また、Query Analyticsダッシュボードでは、様々な観点からスロークエリの分析が可能です。 一方で、MySQL Slow Queriesはスロークエリの発生回数のグラフであり、各スロークエリがどのくらいの実行時間であったかは示しません。 また、Query Analyticsは長期間のスロークエリを総合的に分析するのにはとても強力なツールですが、リアルタイムでク
CX事業本部@大阪の岩田です。 MySQL5.7から利用可能になったsys.sessionは現在実行中のユーザーセッションに関する情報が確認できるviewです。このviewを通して実行中のSQLをはじめロックに関する情報やトランザクションに関する情報など、様々な情報が確認できます。このように有事の調査に大活躍するsys.sessionですが、このviewにはprogram_nameというカラムがあり、このカラムを有効活用することで接続元のクライアントを識別するのが容易になります。program_nameはクライアントがMySQLサーバーに接続する際に自分で指定する項目で、いわばクライアントがMySQLサーバーに対して「自分のプログラム名はxxです」と「名乗っている」と捉えて良いかもしれません。MySQLのクライアントプログラムを扱う場合は適切なprogram_nameを指定することで、有事
「日本国内でもトップレベルのスキルを持ったMySQLエキスパートは誰か?」 そう問われたときに、多くのエンジニアが名前を挙げる人物がいます。LINE株式会社のITサービスセンター データベース室 MySQL1チームでDBA(Database Administrator)として働くyoku0825さん*(@yoku0825)です。 日本人として3人目のMySQL分野のOracle ACEであり、2015年には「default_password_lifetime」の功績でMySQL 5.7 Community Contributor Awardに選出されたyoku0825さん。彼はひたむきに自己研鑽を続けるだけではなく、ブログ「日々の覚書」や技術イベントへの登壇などを通してMySQL関連の情報発信を行ってきました。 今回はそんなyoku0825さんに「これまでどのようなトレーニングをして、DB
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く