41から始めました

文字通り41歳から始めたブログです。DB(MySQL)を使ってお仕事してるので、DB周りの話を中心に最近始めたこととかをTwitterのノリで書いています。なお、本サイトにおいて示されている見解は私個人の見解であり、所属団体や組織を代表するものではありません。

MHSレプリカでトランザクションをスキップする方法

はじめに MHSで非GTIDレプリにてトランザクションをスキップするには スキップ作業の流れ MHSで使えない方法 その1 SET GLOBALが使えない その2 CHANGE REPLICATION SOURCE TO SOURCE_AUTO_POSITION=1;も使えない MHSでGTIDレプリにてトランザクションをス…

文字コードとデフォルトの照合順序とPAD、それとutf8mb4のそれ

自分用のメモです 文字コードとデフォルトの照合順序とPAD utf8mb4の照合順序とPADの一覧 ドキュメント 自分用のメモです 最近、照合順序の話を良くしている気がするので、これが見たくなる時があるので自分向けに。 文字コードとデフォルトの照合順序とPAD …

アップグレードしたいとき見るべきドキュメントは?

この記事はMySQL Advent Calendar 2023 25日目の記事です。 はじめに 1.どのバージョンにアップグレードするのか決める アップグレードパス ※アップグレード先のバージョンとOSのコンパチを確認する 2.新機能・追加・非推奨・削除された機能を確認する。…

cluster.status()で特定の情報だけ抜き出したい人へ

この記事はMySQL Advent Calendar 2023 8日目の記事です。 今回もMySQL Shellの小ネタです。 cluster.status()でレプリカの遅延情報だけ取得して検知させたい MySQL Shellのcluster.status()、JSON形式だから特定の情報「だけ」を抜き出せないかなー?という…

MySQL Shell 8.0.29からはBACKUP_ADMINが不要になりました

この記事はMySQL Advent Calendar 2023 1日目の記事です。 初日なので軽めのネタです。 MySQL Shell8.0.29以降 MySQL Shell でMySQL Server インスタンス(consistentオプション付き)の一貫性ダンプを実行するのにBACKUP_ADMIN権限が必要なくなりました。 …

MySQL Server8.0.29では何が起きたのか?(リリースノートを眺める)

これは MySQL Advent Calendar 2022 8 日目の記事です。 はじめに MySQL Server 8.0.29はGAであるにもかかわらず、今はダウンロードすることができません。 (なんかそれ自体闇歴史の最後を飾っても良い話な気がしてきた。きっと誰かが書くだろうw) それは8.…

Workbench 8.0.23でPerformance ReportsとPerformance Schema Setupが見えなくなった

いきなり結論 MySQL Workbench 8.0.23以降では以下の画面が表示できません。 Performance Reports Performance Schema Setup まだ直ってなくて、使いたい場合は8.0.22以下にする必要があります。 そもそもPerformance Reportsって? 以下のドキュメントに詳…

8.0.29では空間インデックスが壊れます

はじめに このエントリは、RDBMS-GIS(MySQL,PostgreSQLなど) Advent Calendar 2022 の4日目です。 MySQLのGIS関連のお話です。 簡単なネタですが書かせてもらいました。 MySQL Server 8.0.29は色々と問題のあるバージョンで、今はダウンロードすることは出来…

MDSでダンプ・インポートするときの小ネタ

大した話では無いんですが、ドキュメントやヘルプ見てもよくわからないと思うので共有です。 エクスポート時にバケット内のフォルダ配下にエクスポートしたい場合 例えばdumpSchemas()ならこんな風に書きます。 JS > util.dumpSchemas(["test"], "home/test"…

8.0のテーブルを5.7のFEDERATEDテーブルから参照するとエラー

タイトルの件 MySQL8.0に作られたテーブルをMySQL5.7のFEDERATEDテーブルから参照すると以下のようなエラーが出る場合があります。 ERROR 1429 (HY000): Unable to connect to foreign data source: SSL connection error: socket layer receive error ERROR…

レプリケーションのセットアップ(非GTID)

レプリケーションのセットアップ(非GTID) 以下の手順で行う ソース(マスター)側の設定 server_idの設定 log_bin(バイナリログ)の有効化 レプリカ(スレーブ)接続用ユーザ作成 レプリカ(スレーブ)へデータコピー ソースでダンプ取得 ソースからレプリカ…

オプティマイザトレースの使い方

オプティマイザトレースの使い方 オプティマイザトレースの使い方は以下の通り オプティマイザトレースを有効にする 解析したいクエリの実行 トレースの表示 1. オプティマイザトレースを有効にする mysql> SET optimizer_trace='enabled=on'; ちなみにSET G…

MySQL5.6でsysスキーマを使う方法

MySQL5.6でもsysスキーマ使いたいなと思う人へ もう新しいバージョンも出ないMySQL5.6 でも、愛着があって(?)まだまだ使いたいという人へささやかなプレゼントです。 sysスキーマはMySQL内部の実行内容を把握するのに便利なビューやストアドなどが入って…

【小学校受験】あなたのお子さんは小学校受験をするべきか?

小学校受験をやるべきか? あくまで個人的な意見ですが、多くのお子さん、ご家族はやる必要は無いと思ってます。 いきなりですが、僕はそう思ってます。 お前、やっとるやんけ!って言われると思いますが、うちも妻がしつこく言ってこなければやらないつもり…

起動しない、エラーログ出ない、困ったー!と言う時はmy.cnf(my.ini)を見よう

小学校受験の話をガッツリ書く前に、今日はちょっとしたMySQLの小話。 なんで起動しないのか確認できないよぉ… MySQL Serverを起動しようとしたら起動しない。 でも、エラーログが出てない。 実行しているコンソール上にも何も出ない。 なんで起動しないのか…

【小学校受験】小学校受験を終えて

振り返り はじめに 先日、娘の小学校受験が終わりました。 多くの人に助けられ、第2志望のところが受かったんで、来年はそこに通うことになります。 (第1志望の学校には行けませんでしたが、それもまた縁かな、と) 色々な人から話を聞くとその学校も調べた…

MySQL8.0を再起動するとアプリからつながらなくなる理由

この記事は MySQL Advent Calendar 2021 の18日目の記事です。 それ、多分 caching_sha2_password が原因です この話、実は既にyoku0825さんが語っている話なので、別に目新しさは無いですw でも、アプリケーションからというように、少しDBへの接続の仕方…

リモートからBLOB型に画像やPDFファイルを登録する方法

この記事は MySQL Advent Calendar 2021 の5日目の記事です。 久々のブログです。 今年は私事が忙しくてサボりまくってましたが、年明けから頑張ろうかと思いそのためのリハビリです。 今回のネタは備忘録的に自分のために残したかったものです。 BLOB型への…

innodb_strict_mode のセッション値を変更するのに必要な権限(from 8.0.26)

サクッと書けるネタだったので、久々に書きました。 リリースノートを読んでて気になった MySQL8.0.26のリリースノートのServer Administrationの箇所にこうあった。 Setting the session value of the innodb_strict_mode system variable is now a restric…

【MySQL】テーブルの断片化を確認しよう

はじめに 自分用にテーブルが断片化してるか否かを確認する方法を書いてみました。 もし他にこんなのあるよー、って話あれば教えてください。 SHOW TABLE STATUS Data_freeを見ると良い innodb_file_per_tableオプションが有効であるべき mysql> SHOW TABLE …

SELECT ... FOR UPDATEとUPDATEでデッドロックが出る人へ

はじめに 最近は主に花粉症に悩まされており、目が痒くてたまりません。 また、娘の生活がガラッと変わったせいで、毎日貧乏ヒマ無しです。 そんな中、たまたま早起きできたので奮起して久々に書いてみました。 問題が起きる環境 MySQL8.0.17以前 transactio…

適応ハッシュインデックスについて

はじめに こないだのAdvent Calendar用の記事で適応ハッシュインデックス(AHI)について少し書いたんだけど、今日はそもそもそれってどうやって使ったり見たりするの?って話です。 適応ハッシュインデックスとは?(おさらい) InnoDBのインデックスはクラ…

MyISAMってなんだろう?

はじめに 最近、MyISAMのこと調べる機会が多かったので、今までの人生でMyISAMテーブルを触ることなんてほぼ0だったし、MySQL的には今更な感じもするけどとりあえず書き出してみる。 (殴り書きに近い。あとで調べるときにとっかかりになればと思ってる) なの…

TRUNCATE TABLEがバッファプールを読んでいる

本エントリはMySQL Advent Calendar 2020 の13日目です。 今日はちょっとだけMySQL8.0にアップグレードしとくと良いよ、というネタです。 TRUNCATEよりもDROPとCREATEのほうが性能が良いか? はい、MySQL5.7以前まではDROPと&CREATE のほうがTRUNCATE TABLE…

MySQL ShellのダンプとMDSへのインポート

はじめに 今回はずっと触りたかったMySQL Shellのダンプをやりつつ、 最後は前回作ったMDS相手にインポートしてみようかと思います。 MDSにインポートするためにはociクライアントの設定や、オブジェクトストレージが必要なので、それらを途中で設定していき…

MySQL Database Serviceを触るまでのお話

はじめに MDS(MySQL Database Service)が東京リージョンにも来ました! (^O^) <祝! というわけで、朝4時に起こされたこともあり、時間もできたんで久々にOCIを触ってみたんですが、作りたいものが簡単に作れて楽しかったです。 ただ、公式チュートリアル…

シンキノウ×デ×シルキノウ (CREATE TABLE ... SELECT)

Myリノベ 8.0.21に参加 先日「MySQL Release note でわいわい言う勉強会 8.0.21」に参加してまいりました。 今回も最新のMySQL8.0.21のリリースノートをみんなで見ながら、思いつくままに語る会で、その中で僕は相変わらずROM専ですが参加しておりました。 …

クエリーキャッシュを有効にしたけりゃサーバー再起動

え?何当たり前のこと言ってるの? そう思われた貴方、クエリキャッシュをちゃんと使うか使わないか最初に考えている偉い人ですね。 query_cache_typeをON(1)にするとクエリーキャッシュが有効になるんですが、これ、ドキュメントを読むと少なくともMySQL5…

MySQL5.xではデッドロックだけど8.0では死なないよ

はじめに タイトル通り、MySQL5.x系だとデッドロックになるんだけど、 MySQL8.0だとロック機構が変わってデッドロックにならないよ という組み合わせのお話。 僕はこの話をどっかで見た記憶が無かった(忘れた?)ので 教えてもらったとき結構驚いたんだけど…

パーティションほとんどわからんので触ってみた

パーティショニングしたテーブルの確認方法 MySQL触ってて、実は仕事上では一度も触ったことがなかったパーティショニング。 (だって、色んな人が使えないって言ってたんだもん) だけど、意外と世の中使ってる人は多いので今後のためにもパーティショニン…