Database JUNKY

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

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

MySQLとヒアドキュメントをうまく使いこなされば、さくっとSQLをファイルを作ることができます。はじめは戸惑いますが慣れれば簡単です。数百回はやったかも(^^;) ヒアドキュメント(heredocument)自体は、MySQLとはまったく関係のない話、そもそもbashではありますが、MySQLbashヒアドキュメントの相性は大変良いので、この機会に覚えておいたほうが良いかもしれません。 また、ヒアドキュメントを有効に活用できるようになれば、プログラムを作らなくても、シェルスクリプトだけで、バッチ処理を作ることも可能になり、なんにせよ、高速です!(プログラムが遅いっていっているわけではありませんのでそのは誤解しないでください)

続きを読む

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

f:id:hit10231023:20180912204416p:plain

意外と知らなかったです。 root以外のアカウントから、rootに成り代わって実行はいくつかあるんですが、 rootからroot以外のアカウントに成り代わって実行する方法ってどうするんだろう?って

例えばこんなケースです

[root@]# aws ec2 describe-instance-status
You must specify a region. You can also configure your region by running "aws configure".

まあ、当然そうなりますよね。aws configureは、ec2-userで設定しているわけなんで笑

このような場合、いままでsudoコマンド特定のユーザーに成り代わって実行していたのですが、amazon linuxおよびcentos等の起動コマンド・起動シェル内では設定しても動いてくれない(汗)

  • コンソールから直接叩くと動くんだけどな。。
[root@]# sudo -H -u  ec2-user aws ec2 describe-instance-status

調べた限りでは、

RedHat系のデフォルト設定では起動時のsudoは許されていないってのが理由らしく、じゃーどうすればいいの?って調べたところ runuserで実行できることがわかりました。

続きを読む

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

f:id:hit10231023:20180911165611p:plain

MySQL8.0の話ですので、以前のバージョンの話とはちょっと変わってしまうかもしれませんが、テーブルの作成で、ものすごくしょうもないことでハマってしまいました。

ERROR 1071 (42000): Specified key was too long; max key length is 3072 bytes

まず、前提として、索引(インデックス)の最大長は、3072バイトです。ってところから始めます(笑)

これがいけると思っていたところからが地獄の始まり(笑)都合よく、私は、varchar(1024)を1024バイトだと思ってました(汗)

CREATE TABLE `table1` (
  `Id` bigint(20) NOT NULL AUTO_INCREMENT,
  `Url` varchar(1024) NOT NULL,
  PRIMARY KEY (`Id`),
  UNIQUE KEY `ix01` (`Url`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 
;
----------------------------------------
ERROR 1071 (42000): Specified key was too long; max key length is 3072 bytes
続きを読む

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

f:id:hit10231023:20180911021856j:plain

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

たとえば利用料金。。

f:id:hit10231023:20180910203235j:plain

サービス事業から見ると、大した額ではないかもしれません、しかし、私から見れば、一日でお給料がすっ飛びそうなお値段だと思ってます。

これを、ここまで下げることができました!!

f:id:hit10231023:20180910203258j:plain

今回、どのように、awsの転送料金を下げたかについて説明していきたいと思います

続きを読む

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

f:id:hit10231023:20180911180143p:plain

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

  • データ領域が分割されるため、大量のデータを処理することによる性能上のボトルネックの発生を抑えられる
  • MyISAMなど、テーブルサイズに上限がある場合でもそれ以上のデータを格納することが可能になる

といった点です。

MySQLでもMariaDBでも、古いバージョンからある機能ではありますが、数百万規模のデータですとSQLの条件によって、読み込む分母のレコード数が少なくなるため、パフォーマンスは向上するわけですね。

続きを読む

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

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

以降、それぞれのケースに合わせた変数の使い方を説明します

続きを読む

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

MariaDBでマルチソースレプリケーション

私的に待ちに待ったあの機能が追加されました。それは、マルチデータソースレプリケーション、mariadb10.0から実装されるという話は知っておりましたが、ようやく触る機会がきたので試してみようと思います。 余談ではありますが、弊社では、30スキーマはあろうデータベースをこれで一台に集約しておりますので、ちゃんと実績はありますのでご安心を

f:id:hit10231023:20161121171801j:plain

f:id:hit10231023:20180309125620p:plain

続きを読む

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

あ、別にawsでなくてもいいのですが、そしてshellでなくても良いのですがw よくあるかどうかまではわかりませんが、アプリケーションを手動で起動して待機させる系統のものって、インスタンスを再起動さける時に、あら。動いてない。。。なんてことがありますよね?まぁ、インスタンスが起動してから、手動で実行すればいいのですが、それも面倒なので、この際、インスタンスが起動したら、自動的にアプリケーションが起動するという設定をしてみようじゃないかと思いメモがてら書いてきます。

今回の例は、pythonは、 api_app.py と app.pyをshellで起動する例(というかメモ)で、説明します。

続きを読む

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円!!

続きを読む