Database JUNKY

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

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

いまさら感はありますが、AWSコンソールは便利ですが。。数が増えると、にっちもさっちもいかなくなるので、コマンドで実行する方法を備忘録代わりにメモします。 ec2インスタンスを停止する、主な理由って私的には、インスタンスタイプの変更をすることで、コストダウンを計るとか、仕事してねー、サーバを洗い出し凍結するとか、そんな時に利用するのですが、 これらを初めはGUIでやっていて、数が増えてくると、後からだんだん面倒になってくるということで、コマンドメモを書いていきます。

ってことで、以前もどこかに書いたような書いていないようなですが・・

続きを読む

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

よく、コンソールで何か実行する時に、(y/n)とかあるじゃないですか?あれがかっこよくてどうやるのか調べてみました

結果から先にいいますと、read というコマンドを使うっぽいです -pのオプションを付けると、プロンプトのメッセージを自由に設定することが可能です

f:id:hit10231023:20180308234003p:plain

続きを読む

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

無事、システムもMySQL 8.0化が成功し、じゃあ今後、どう活用していこうと考えた時に、まずやったのが、WITH句なんですが、

hit.hateblo.jp

他にもいっぱい機能がアップされた部分があって、その中で、今回JSONで追加された関数を主に試してみました。

今回は、以下の関数を試してみたいと思います

続きを読む

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

f:id:hit10231023:20180911022902p:plain

ec2でこっそりt3インスタンスでリリースされていました汗 全てではないかと思うのですが、tXXの数値が上がるたびに基本的には、なにかしらの機能アップと、コストのダウンが期待できます。昔のインスタンスのままじゃないと動かないから。。。ってシステムは、今ほとんど。。ない。。とは思うので、この機会に、t2インスタンスを使っている方は、t3インスタンスに切り替えてみてはいかがでしょうか?

規模により、数十万のコスト削減も視野にはいってきます!

Amazon Web Services実践入門 (WEB+DB PRESS plus)

Amazon Web Services実践入門 (WEB+DB PRESS plus)

クラウドエンジニア養成読本[クラウドを武器にするための知識&実例満載! ] (Software Design plusシリーズ)

クラウドエンジニア養成読本[クラウドを武器にするための知識&実例満載! ] (Software Design plusシリーズ)

f:id:hit10231023:20180827115357j:plain

続きを読む

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

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

しかしながら、外出時、もしくは寝ている時も、気づかない場合があります。まーその、、、人間だからしょうがない。。スマホでslack連携しているし、通知もするようにしているから大丈夫だよ!!というケースもあります、でもでも、スマホでも気づかないことって結構あります。まず、歩きスマホしながら外出しないので、きずいた時には、slackに大量のアラートがわらわらと。。。

このようなケースを可能なかぎり避けたい、障害に早く気づきたい!

そんな時に思いついたのが、nagios通知とスマートウォッチ連動です。これなら外出時、寝ている時にスマホを手に持っていなくてもスマートウォッチが通知してくれるので気づきやすいですよね!

というわけで、

の連携の話をちょっと書こうかな?って思います

Nagios統合監視[実践]リファレンス (Software Design plus)

Nagios統合監視[実践]リファレンス (Software Design plus)

この設定をしてから、世界が変わりました!良い意味でも悪い意味でもw

続きを読む

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

nginxでのの方法については、わかったのですが、ELBを挟んだ場合は、どこでどのような設定をする必要があるのか、、頭がごちゃごちゃになりハマったのでここで整理します

やりたいことは、以下の通り

f:id:hit10231023:20180814180809j:plain

ここまでやれば、ドメインを統一することにより、SEO的に良さそうな感じなのですが、これを、ELB内部だけで完結するのが、以前はかなり困難だったのです。。(だったはず。。。) これ、いつの間にか、このようなケースの設定もELBでできるようになっておりました!!!

以前のELBの問題とは?

サーバーのHTTPトラフィックをロードバランサのHTTPSにリダイレクトするにはどうすればよいですか? になんか、難しく書いてありますが、まとめると、httpからhttpsにリダイレクトする場合は、リダイレクトループされる可能性があるよってことを書いているのだと思います。 よって。昔は、WEBサーバ側で、リダイレクトの設定をしていたんですよね。。

でも、これ、もう機能として、ELBでサポートされているかもよ!というのが今回のお話になります

続きを読む

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

ipadでインフラ作業(コンソール作業)がしたかったため、とうとう外付けキーボードを購入してしまいました。 まあ、毎年

タブレット購入:ノートPCを持ち歩くのではなく、タブレットをもちあるきたい(軽量化)

②外付けキーボード購入:キーボードがないとつらいから(重量化)

③外付けキーボードさよなら:タブレットなのにキーボードを持つとか意味不明

<<以降①へ戻る>>

の無限ループになっているのですが、実際コンソールの作業は、外付けキーボードがないとつらいんですよね(汗)

で、今回これを購入してみました。

Bluetooth キーボード ワイヤレスキーボードiPad iPhone Andriod スマホフォン タブレットなどに対応 Niwawa 折り畳み式 シリコンキーボード 防水 静音 滑止め USB接続携帯便利 商品名なげーw

セール中なのか、安い!2000円!!

続きを読む

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

かなり前に、なければINSERT、あればUPDATEというの書きました。

hit.hateblo.jp

しかしながら、現状で運用でもっとも活躍できるのは、IGNOREの方だと思います

どのようなケースで活用できるついて、サンプルを含め説明します

プライマリーキーを更新

以下のテーブルをサンプルにプライマリーキーを更新するSQLの挙動がどうなるか考えてみましょう

users

CREATE TABLE `users` (
  `userid` bigint(20) NOT NULL,
  `username` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
  • プライマリーキーは、userid

データ

userテーブルの内容は以下の通り

> SELECT * FROM users ;
+--------+----------+
| userid | username |
+--------+----------+
|      1 | panda    |
|      2 | dog      |
|      3 | cat      |
+--------+----------+
続きを読む

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

MySQL8.0にするなら、WITH句で!共通テーブル式を使いましょう!

MySQL8.0を使いたい理由は、CTEに対応したからなんです!!

そもそも、MySQL 8.0を使いたかった理由って、共通テーブル式が実装されてからなんです! 私自身は、 IBM DB2でかなりお世話になりました。やがて年は過ぎ、MySQLしか触らなくなったのですが、WITH句ってどんなRDBMSにも付いているものだとばかり思っていたのですが、無い。。MySQLは無かったんですよね(汗) おかげさまで、サブクエリーのサブクエリをごりごり書く生活に慣れてしまいました。

今回は、このCTEを利用して、どれだけ、SQLが綺麗になるのかを見せたいと思います!

テーブル

今回、CTEとして利用するテーブル定義です

CREATE TABLE `loglog` (
  `id` bigint(20) unsigned NOT NULL DEFAULT '0',
  `created_at` datetime NOT NULL,
  `user_id` bigint(20) NOT NULL,
  `action` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

続きを読む

MySQL8 インビジブルインデックス(INVISIBLE INDEX)の勧め

その索引使われていますか?

MySQLで長年運用しているうちに、パフォーマンスチューニングが必要になって、ほとんどが、チューニング効果の高い、索引チューニング(インデックスチューニング)をしていきますよね。そんでインデックスをぺたぺた張っているうちに、インデクスだらけになり、気付いた時には、テーブルの全カラムに対して索引が設定されてたなんてことないですか?(自分だけかも)

その索引、本当に使われてますか? 使われていない索引が大量に存在すると、データの更新パフォーマンスが低下します。的確な答えではないのでですが、インデックスはある意味、インデックスのデータを含めたテーブルが一個できるといった認識をもってくれれば、使った数だけ、テーブルが増えていくって感覚をもってくれればイメージがつきやすいかな?って思います。

ということで、MySQL8.0で実装された、インビジブルインデックス(INVISIBLE INDEX)の活用方法について書いていきたいと思います。

続きを読む

MySQLでの文字列の日付から日付形式に変換する方法(STR_TO_DATE)

毎回忘れる、MYSQLの文字列->日付変換についてメモしました。例えば、rssのフィード内によくある、publishedとかとか。。これを日付/時刻型に変換するにはどうすればいいか?なんていうのを例につらずらと書いていきます。

<pubDate>Sun, 29 Jul 2018 21:00:00 +0900</pubDate>
続きを読む

python3関連インストールもろもろメモ

あくまでも自分だけのメモですが、これだけは、いや、あくまでも私的な話ですが必須だろうと思うものしか書いてません。 今後他にも色々出てきそうですが、その時はその時で随時追記していくつもりです。

OSは、CENTOS 6x をベースに記載しましたが、まあ、UNIX系だとみんなおんなじなんじゃないかな?って思います。

続きを読む

MySQLの変数をSQLのLIKEで活用する!

どうでも良い話ですが、設定した変数をLIKE検索で使う場合、%%ってどうすればいいの?というのがわからなかったのでメモしました。

少なくともこの書き方ではない模様

SET @ARTIST='Michael' ;
SELECT artist_name FROM artist_master
WHERE
  artist_name LIKE @ARTIST
;

さてさて正解は。。

続きを読む

超便利!! MySQL 8 window関数でグループ連番をふる

MySQL 8で(やっと)実装された、window関数が超便利です!! postgreSQLとほぼ同じことができます。

window関数とは

結果レコードを部分的に切り出した領域に集約関数をかけることができる、ものすごい便利な関数です。MySQL8.0で(ようやく)実装されました。 単純なところでは、例えばWindow関数がないMySQLのバージョンでとある規則に乗っ取った連番を振りたいなんていう要求があった場合どうします?

その答えが、以前こちらに掲載したものになるのですが、これがwindow関数で行うとすっごく簡単にかけちゃいます。

hit.hateblo.jp

あ、これは、MySQL 8.0以前のバージョンでの連番手法ですね。

MySQL 8 での連番の振り方

では、MySQL8 + window関数で、どのようにグループ連番をつけるのか、やってみたいと思います 今回試すテーブルは前回と同様です。

続きを読む

MySQL mysqdumpで、Error 1412: Table definition has changed

mysqldumpする際にこんなエラーを食らったことはありませんか?

現在、 MySQL5.7のデータベースをMySQL 8.0に絶賛リストア中なのですが、mysqldumpが終わりそうなところでこのエラーがコンソールに出てきて疲弊してきました(汗)

mysqldump: Error 1412: Table definition has changed, please retry transaction when dumping table table1 at row: 0

続きを読む