Database JUNKY

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

MySQL

amazon linux でgalera clusterを運用する時の注意点

あー。。別にamazon linuxに絞り込む必要はないのですが。もう、ec2以外ではそんなにやる気ないなーって思うので、備忘録がわりに残しておきます。 XIHAMA Xiaomi Mi Band 2 バンド ベルト 交換用 シリコン製 カラフル 交換用 ベルト (Army Green)出版社/メ…

Galara Cluster for MySQLでクラスタ環境を構築する

Galara Cluster for MySQL 5.7 でクラスタ環境を構築する 前回のMariaDBでのGalera Clusterの構築は手違いで消してしまった(−_−;)今回は、MySQL5.7でGalera Clusterを構築、運用することをやっていきたいと思います。以外と簡単ではあるのですが、今回EL…

Mariadb10.2 Galera Clusterで即席クラスタ環境を構築する!!

Mariadb10.2 Include Galera Cluster 日々のデータベース運用の中で、一番大変なのが、パフォーマンスチューニング。 チューニングの大半は、索引チューニングを行うか、SLAVE サーバをスケールアウトして、負荷分散するかの2つを行いうのが(私的には)一…

mysql_health_check でlong_queryをnagiosで監視する

月に一度はかならずはまるnagios サービスが長期化すると、この観点でも監視を入れないとだめだっていうのがどんどん増えてきて対応はするのですが、また数日後、どう設定したんだっけ?というのを忘れてしまうのが難点なので、あくまでも自己流ですが、メモ…

最速! 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日稼働しているサービスでカラム追加なんてなんてしようものなら、もうとんでもなくめんどくさいことになる。。 というわけで、カラム拡張が容易なテーブル構成…