Database JUNKY

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

MySQL

最速! mysql5.7 インストール手順

MySQL5.7のインストール しばらくMariaDBに使っていたので、MySQL 5.7のインストール方法について、すっかり忘れてしまったので、備忘録代わりに書きます。その過程でエラーおよびワーニングが発生ししたものに関しては、1つずつ、my.cnfを修正して、結果エ…

知ってた!?MySQL5.6以上から日本語全文検索ができるようになったってこと・・

MySQL5.6~ で日本語全文検索ができるぞ!!! 最近MariaDBばかりやっていて、MySQLの存在を忘れていたのですが、今まで英語しか利用できなかったのに、いつの間にか標準で日本語全文検索ができるようになっていたので、久しぶりに触って見ようと思います。…

MySQL,MariaDBでタグ機能(TAG)を実現する(TOXI法)④SQL応用

もう、設計としては完了しているので、作成されたデータを元に応用SQLを考えてみます。 もう特に考える部分はないので、あとは好きな角度からSQLを発行するだけでいいと思います。 TANITA 【SDカード搭載】 & 【乗った人をピタリと当てる「乗るピタ機能」搭…

MySQL,MariaDBでタグ機能(TAG)を実現する(TOXI法)③タグマップデータ投入

前回 hit.hateblo.jp にて、タグデータを投入する説明はしましたが、肝心のDIARYの中での紐付けについては書いていませんでした。 前回の記事を含め、タグのマッピングの登録方法についても記載していきます。もちろんストアドプロシージャベースでの話です …

MySQL,MariaDBでタグ機能(TAG)を実現する(TOXI法)②タグデータ挿入

前回の、TOXI法による、MySQLのタグのしくみを説明しました。 hit.hateblo.jp 正規化として、これ以上ないくらいの完璧さなのですが、実際このタグ、複数のユーザーが任意に設定できるという、いわゆるソーシャルタグの場合はどうでしょう? 正規化とはうら…

MySQL,MariaDBでタグ機能(TAG)を実現する(TOXI法)①タグ関連のスキーマ設計

MySQLでタグのしくみを作る? MySQLでタグの仕組みを作る場合は、どのような設計をすればいいのでしょうか? タグの設計にはいくつかの種類があり Licious:コンテンツ系のデーブル1つの中にタグフィールドを持たせる方法 Scuttle: コンテンツ系とタグ系のテ…

オートナンバーをランダムユニークな値に変換する

MySQL(MariaDB)のオートナンバー型ってもちろん便利なのですが、数年システムを運用していくと、こんな課題が出てきてしまいます。 とあるWEBシステムで、規則性のあるデータを見つけてしまう。ちなみに、これ、セキュリティの話ではなく、あくまでも、外…

なければINSERT、あればUPDATE(ON DUPLICATE KEY UPDATE)

レコードがなければINSERT、あればUPDATEなどどいう超便利なSQL構文があります ON DUPLICATE KEY UPDATE オプションがそれなのですが、 結構便利です、今回 MariaDBで試しておりますが、MySQLでもおそらく同様にいけると思います。 これが出来る前提条件は、…

乱射注意!!!MySQL TRIGGER(トリガー)は結構使える!!

使いみちによっては、すごく便利なトリガーについて説明します。使いみちと書いたのは、なんでもかんでもトリガーにもりもりしちゃうと対象テーブルのパフォーマンスに影響出ちゃうよという乱射状態になってしまいますので注意って感じです トリガーとは Tri…

MySQLでジョブキューを管理する(Q4M)

いまいちキューの概念がわかっていないのだが、ようはあれかな?非同期で、データをやりとりするもの?え?違う???たとえば、受注処理の場合とか、受注が完了するまでアプリケーションが待つのではなく、キューという形で一連の受注プロセスからデーモン…

SQLで変数を使う

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

MySQL,MariaDB ストアドプロシージャ・ストアドファンクションテンプレート

MySQLおよびMariaDBにおいて、ストアドプロシージャを作成するときにいちいち、探しまわる時間がもったいないので、テンプレート的なものを用意しました、基本的、コンソールにコピペで行けるようにしておりますのでご自身の環境で作成する際のサンプルにご…

mysqlのconcatを||(パイプ)で対応できるようにしよう

文字列結合にいちいちconcatなんていう関数を使うのはめんどくさい、且つわけがわからなくなるので、パイプ(||)でconcatと同様の操作がおこなえるように変更するtipsです Jimu Robot 入門レベル出版社/メーカー: UBTECHメディア: おもちゃ&ホビーこの商品を…

mysqlアカウントで、コンソールにログインする方法

MySQL5.5からMaria10.0に変更したら、いつの間にか、linuxコンソールにてrootから、su - mysql ができなくなってしまいました。そちらを、su - できるようにした対処方法をメモします こんなエラーになってしまいました。 "This account is currently not av…

MySQLのrootアカウントが消えてしまった!!そんなときの復旧手順

何が起きたのかさっぱりわからないのですが、MySQL(MariaDBのパスワードがrootから何から消えてしまった。。 なぜ消えたのかは置いておいて、とりあえず、現状復帰しないことには、だーれも接続できない状態が続いてしまう・・これはまずい。 そんな場合のro…

DBが遅い!そんな時・・MySQL スロークエリーからの索引チューニング〜 mysqldumpslow

MySQL/MariaDBでのパフォーマンス低下一番の理由がスロークエリーです。MySQLでサービスを展開しているデータベースやさんって、例外なくここをきにするのではないかな?と思います。そしてスロークエリーが発生した場合の一番の対策は、適切な索引(INDEX)…

ソーシャルサービス系のデータベースを構築する

私、データベースエンジニアです データベースエンジニアとは 仕事を進める上で、多数の別部門との協力が必須となるデータベースエンジニアには、高いコミュニケーション能力が求められます。また、物事を論理的に考えることが好きな方もデータベースエンジ…

ソーシャルサービス系のデータベースを構築する~データベースの作成

データベースを作成する まず、ソーシャルサービス系のデータベースといってもデータベースという大きな鉢がないとどうしようもならないため、データベースの作成をする必要があります。 データベースの作成といっても簡単で、ほんと、数秒で作成が終わっち…

フォロー/フォロワーの構築 ~ソーシャル系のDBを構築する

フォロー/フォロワーのテーブル設計 ソーシャルネットワーク系のデータベースでフォロー/フォロワーってどんなしくみで設計しているの?なんていうのを中心にまとめてみました NURO光キャンペーン ネットのみでも必ず3万円が貰える!

MySQL スキーマ内に存在する全ての索引を一括で抽出するSQL

mysql でテーブルの索引がどう設定されているのか知りたいときがあると思うのですが。その場合、 mysql> show index from TABLE_NAME; で確認できます でわ、スキーマ内の全てのテーブルの索引を抜き出したい場合はどうするか? というわけでinformation_sch…

GROUP_CONCATを利用して、列名を列挙したSQLを生成する

MYSQLには、GROUP_CONCATというすばらしい関数があるのですが、ような複数のレコードのとある値を、一行にまとめるということができる関数で、そりゃーもう便利です!!今回はこのGROUP_CONCATを利用して、SQLからSQLを生成するなんていうサンプルを作ってみ…

MySQL:レプリケーションエラーをスキップする

日々の運用の中で、レプリケーションエラーが発生した場合、原因が分かっているものは、とっととスキップさせて先に進めたいですよね? そんなときには、SQL_SLAVE_SKIP_COUNTERを設定することでレプリケーションのエラーをスキップすることができます Fire …

SQLだけで、メールアドレスの@以前の文字を置き換える

SQLって奥が深いです。SQLだけで、ほぼデータの加工が行えます。 今回はメールアドレスをマスキングかけるというのを試してみたいと思います Lenovo タブレット 2in1 パソコン Miix 3 80HV0055JP/Microsoft Office Home & Business 2013搭載/2GB/64GB/Window…

mysqldump あれこれ

いままで使ったことのあるmysqldump でもバックアップの方法をメモ dumpするたびに、毎回毎回オプションを調べている時間がもったいないので、ほぼ自分用にメモしていきます。今後、追記してく予定なので、流れ次第で、内容が重複しちゃうかもです ほぼ、こ…

KeepAlivedとMySQLのタイムアウト設定は必ず確認して!!

MySQLをKeepAlivedでロードバランサーを実現というのは結構ある話ですが、それぞれのセッションタイムアウト値が違うため、いざサービスを運用する!!なんて時に思わぬ落とし穴があったります。そのための注意書きです iPhone 5s 16GB au [ゴールド]出版社/…

MySQLをKVSのように使う

RDBは、使いやすい!速い!なのですが、カラムの拡張には、どの製品であろうと弱い。。24時間365日稼働しているサービスでカラム追加なんてなんてしようものなら、もうとんでもなくめんどくさいことになる。。 というわけで、カラム拡張が容易なテーブル構成…

MySQL 登録されている索引の一覧を出力する

MySQLにて、登録されている索引を確認する方法としては mysql > show index from TABLE_NAME; で確認できます。しかしこれですと全てのスキーマ内に存在する全ての索引を確認することができません では、索引が設定されているかいないかわからないテーブルの…

MariaDB レコードの更新日を自動的にセットする

いやーーー全然・・知らなかったですが・・ALTER TABLEっていうかCREATE TABLEの時も同じですが、ON UPDATE オプションを付けると、データ更新時に指定された値を自動でセットすることができるらしい。。 DEFAULTとは違うんです・・詳細は以降から・・・ min…

MySQL ストアドファンクションを使ってみましょう!

MySQLって、ストアドプロシージャとストアドファンクションの2つが利用できます。ストアドプロシージャは、CALL XXX って呼ぶもの、一方でストアドファンクションはSQLの中で呼べたりできるものです。 ストアドファンクションは戻り値が1つしか返せないと…

MySQL 256バイト以上あるカラムに索引を貼る

mariadb のテーブルで、256バイト以上あるカラムに対して索引を生成する場合の手順です。MySQL5.5以上もこれでいけるとは思うのですが、試していないので、ここでは割愛します。ここでは、MariaDBを再起動しないで実現する方法を記載します。また、いつか再…

SQLで文字の一部分を置き換えて表示する方法

あくまでも例ですが・・ よくテストデータを作成する時に、 ドメインは残しておきたい でも@より前のアカウントはマスキングしたい なんていうリクエスト結構ないですかね?昔、ガラケーなのではあったのですが、今そんなにそんなリクエストないのかな? な…

nginxのログをtd-agentを利用して、MySQLに突っ込んでみた 〜アクセスログのデータベース化

nginxのログを収集したいので、td-agentを入れることにした。そのあとどうするかは考えます ここでは、nginxのログの設定から、Fluentdの設定を行い、最終的にMySQLのテーブルにログを吐くところまでを記載したいと思います かなりの長編ですが、皆様の環境…

MariaDBにアカウントを設定しよう

mariaDBにアカウント設定しよう 前回こちらでMariaDBはインストールできたかと思います。この時点ではmariadbはデータベースもなければ、ユーザーIDもありません。内部的にrootというアカウントを持っておりますが、パスワードなしの状態で運用するのは危険…

サービス無停止でMySQLのレプリケーション環境を構築する方法

サービス無停止でMySQLのレプリケーション環境を構築する方法 稼働中のサービスを停止できないけど、スレーブを増やしたい(増殖したい)なんて場合に使える技になります。 実際これでとあるサービスの運用をやっております。 おうちで学べるデータベースの…

MySQLでデータ更新時に自動的に更新日時をセットする方法

MariaDB 10.0 以降のカラム定義にてdatetime型にON UPDATE オプションを付けると、データ更新時に日付時刻を自動でレコードにセットすることができるらしい。 早速ですが試してみたいと思います!!