Database JUNKY

MySQL,MariaDBを中心としたブログです

MySQL SQLの検索結果をshellの変数に格納する方法

色々な書き方がありますが、私は以下のように書いてます。というほど書いてないので、必要な時にすっかり忘れるのが現実ですが。。 例えばこんなケースで書いてみます。 とあるテーブルの検索結果が0(ゼロ)件以外だったら、後続の処理を実行する

MySQL8 多段的なCTE表でアクセスログを集計するSQL

多段的にする必要は実はそんなにないのですが、apacheおよびnginx等のアクセスログ(テーブル)をカテゴリに分けて集計するSQLを作ってみました。 nginxのログをテーブルに格納する方法については、以前、ここにまとめました。(ちょっと古いか。。) hit.ha…

トイレの水が出ない!!修理の方法など SH381BA編

トイレの修理はお早めに! TOTOのトイレ(SH381BA)の修理します。はい!全然、技術系の話でもデータベースの話でもありません! 結果からいいますと、トイレの水が出なくなりました厳密にいうと、タンク内部で水漏れしている気が・・する・・ 幸いにも、自…

MySQL8 SQL Window関数とCTE表でデータクレンジングと名寄せを実現する

とあるデータのクレンジング、名寄せ作業をSQLだけで完結する上で、よくわからなくなってしまったので、メモします。 例えば、こんな定義とデータがあったとして。 定義 CREATE TABLE `artist_master` ( `Id` bigint(20) unsigned NOT NULL, `CreatedAt` dat…

MySQL LIKE JOIN というアウトローなクエリーを試してみる

こんなの不可能だろと思いつつやってみたら以外と出来たというクエリーについて紹介します。 JOIN のON句にLIKEを使うというだけなのですが、これが以外と使える場面があります。今回、音楽のアーティスト名周りでこの難解なSQLをどのように活用するかを考え…

プログラムは3日で忘れる私が再びpython3メモ pymysql

プログラムはちょっとやらないと忘れる。 数ヶ月前にやったはずなのに、いざ再開すると、同じところでつまづく。今回は MySQL接続で利用するpymysqlでのメモをします。エラートラップとか例外とかは、書いてません。ちゃんとかける方はこのページなんかみな…

python3 ディクショナリ型の要素アクセスで、階層がある要素のkeyerrorを回避する方法

例えば、下記のようなネスト(階層)があるディクショナリ型の一部要素を参照しようとしていたのですが (略) "datePublished": "2018-10-11", "byArtist": { "@type": "MusicGroup", "url": "https://yyyyy.zzzzzz/us/artist/abcdefg-gambino/466842536", "…

route53 ドメイン移管とDNS変更は意味違うよって話(お名前comから、route53にDNS変更をする)

たまにしかやらない DNS変更作業、いざやろうとすると、あれ?どうするんだっけ?ってなりませんか?少なくとも私はそうなりました。 今回、お名前comでドメインを登録したのですが、DNSは、aws route53のほうが管理しやすいので、切り替えようと考えました…

いまさらだけど、ltsvが超便利!

はじめltsvってapacheのモジュールかと思ってましたら・・そうじゃなくって、単純にLogFormatをラベル付きのログを出力する形式ってだけなんです。 でも、また、これが便利、たとえば、access.log等は、標準ではラベルが入っていないため、大量にある場合、…

MySQL HyperDB + Keepalivedを利用した、wordpress の負荷分散

当記事、2012年に書いた記事になりますので、hyperdbがあるかないのかもわかりませんが、当方で活用する案件が発生しましたので、再アップしました。 思っていたより簡単にできた、そして結果からいいますと、思っていたよりパフォーマンスがよく無かった記…

MySQLでいいね!(LIKE)機能のDB設計をしてみた!

いいねってなに? FACEBOOKですと、いいね、 Twitterだと♥のあれです。エンゲージメント率を高めるばかりではなく、記事の拡散にも効果を発揮しますよね。また、サービス運営者視点で話すと、話題が見つけやすくなりますよね。 ってなわけで、今度はいいね。…

mysql 文字列結合のconcat関数は||(パイプ)でスマートに書こう!

MySQLおよび、MariaDBでの文字列結合関数といえばCONCAT(コンキャット)です。 MySQL :: MySQL 5.6 リファレンスマニュアル :: 12.5 文字列関数 文字列結合にいちいちconcatなんていう関数を使うのはめんどくさい、且つわけがわからなくなるので、パイプ(||…

MySQL SQLとbashヒアドキュメントをうまく使いこなそう!!

MySQLとヒアドキュメントをうまく使いこなされば、さくっとSQLをファイルを作ることができます。はじめは戸惑いますが慣れれば簡単です。数百回はやったかも(^^;) ヒアドキュメント(heredocument)自体は、MySQLとはまったく関係のない話、そもそもbash…

ec2 rootから特定のユーザーに成り代わってシェルやコマンドを実行する(runuser)

意外と知らなかったです。 root以外のアカウントから、rootに成り代わって実行はいくつかあるんですが、 rootからroot以外のアカウントに成り代わって実行する方法ってどうするんだろう?って 例えばこんなケースです [root@]# aws ec2 describe-instance-st…

MySQL 結局、索引の最大長っていくつなの?を考える Specified key was too long; max key length is 3072 bytes

MySQL8.0の話ですので、以前のバージョンの話とはちょっと変わってしまうかもしれませんが、テーブルの作成で、ものすごくしょうもないことでハマってしまいました。 ERROR 1071 (42000): Specified key was too long; max key length is 3072 bytes まず、…

aws s3の利用料節約を考える:データ転送量を減らす!

awsにて、動画共有サイト、画像共有サイトでもそうだと思いますが、ec2インスタンスのコストよりかかるのが、ずばり!転送料です。一部のサービスでは、ec2のインスタンスコストよりデータ転送料金のほうがコストがかかっているという話をよく聞きます たと…

MySQL パーティショニングで高速クエリーを実現!!

MySQL(MariaDB)には、レンジパーティションってものがありまして、うーなんでしょ?ある規則にしがったデータをおのおののデータファイルに振り分けてくれるストレージエンジン的なものです。 データ領域が分割されるため、大量のデータを処理することによる…

MySQL 変数を利用したSQLの記述方法

他のDBはよくしらないですが、MySQL系のSQLをSQL文中にユーザー変数を含めることができます。この手法を理解すると、洗練されたSQLを記述することができます。 変数の利用は、SET文を用いる方法と、SELECT ~ INTO を用いる2種類の方法があります 以降、そ…

これはすごい!mariadb10 でマルチソースレプリケーションでデータベース統合!

MariaDBでマルチソースレプリケーション 私的に待ちに待ったあの機能が追加されました。それは、マルチデータソースレプリケーション、mariadb10.0から実装されるという話は知っておりましたが、ようやく触る機会がきたので試してみようと思います。 余談で…

aws ec2インスタンス起動時に、自作shellを自動実行する方法

あ、別にawsでなくてもいいのですが、そしてshellでなくても良いのですがw よくあるかどうかまではわかりませんが、アプリケーションを手動で起動して待機させる系統のものって、インスタンスを再起動さける時に、あら。動いてない。。。なんてことがありま…

aws cliコマンドをマスターしてブラウザいらずになろう!

いまさら感はありますが、AWSコンソールは便利ですが。。数が増えると、にっちもさっちもいかなくなるので、コマンドで実行する方法を備忘録代わりにメモします。 ec2インスタンスを停止する、主な理由って私的には、インスタンスタイプの変更をすることで、…

bashで選択メニューを出す(入力プロンプト)

よく、コンソールで何か実行する時に、(y/n)とかあるじゃないですか?あれがかっこよくてどうやるのか調べてみました 結果から先にいいますと、read というコマンドを使うっぽいです -pのオプションを付けると、プロンプトのメッセージを自由に設定すること…

MySQL8.0 : 新しく追加されたJSON関数サンプル

無事、システムもMySQL 8.0化が成功し、じゃあ今後、どう活用していこうと考えた時に、まずやったのが、WITH句なんですが、 hit.hateblo.jp 他にもいっぱい機能がアップされた部分があって、その中で、今回JSONで追加された関数を主に試してみました。 今回…

ec2 t3インスタンスでコストを大幅に下げましょう!

ec2でこっそりt3インスタンスでリリースされていました汗 全てではないかと思うのですが、tXXの数値が上がるたびに基本的には、なにかしらの機能アップと、コストのダウンが期待できます。昔のインスタンスのままじゃないと動かないから。。。ってシステムは…

iOSでEscが使えるキーボードでPCいらずになりました!って話

IPad + 外付けキーボードで、インフラエンジニアさんがネックのなるのは、ESCキーが無いこと。。もちろんショートカット( CTRL + C )でその代用はできるのですが、普段やらない操作なので、ちょっとイラっときてしまいます(自分だけかも) またまた。。 今…

NagiosのアラートをLINEに即座に通知&スマートウオッチ連動する方法

nagiosのアラートをlineに通知する方法をまとめました。インフラの設計、および運用管理をしていると、かならず発生するのが、システム障害です。その障害は、寝ている時であろうと、ごはんを食べている時であろうと、はたまた休日であっても発生します。イ…

AWS ELB だけでwwwあり・なしを統合!そして全てhttpsに統一する方法を教えます!

nginxでのの方法については、わかったのですが、ELBを挟んだ場合は、どこでどのような設定をする必要があるのか、、頭がごちゃごちゃになりハマったのでここで整理します やりたいことは、以下の通り http://www.test-test-abc/ → https://www.test-test-abc…

iPad+ハードウェアキーボード仕事で使えるか検証!

ipadでインフラ作業(コンソール作業)がしたかったため、とうとう外付けキーボードを購入してしまいました。 まあ、毎年 ①タブレット購入:ノートPCを持ち歩くのではなく、タブレットをもちあるきたい(軽量化) ↓ ②外付けキーボード購入:キーボードがない…

MySQL なければINSERT、あればスキップ(IGNORE〜)のおすすめ

かなり前に、なければINSERT、あればUPDATEというの書きました。 hit.hateblo.jp しかしながら、現状で運用でもっとも活躍できるのは、IGNOREの方だと思います どのようなケースで活用できるついて、サンプルを含め説明します プライマリーキーを更新 以下の…

MySQL8.0 新機能 WITH句、共通テーブル式(CTE)のSQLの書き方教えます!

MySQL8.0にするなら、WITH句で!共通テーブル式を使いましょう! MySQL8.0を使いたい理由は、CTEに対応したからなんです!! そもそも、MySQL 8.0を使いたかった理由って、共通テーブル式が実装されてからなんです! 私自身は、 IBM DB2でかなりお世話になり…