タグ

MySQLに関するt10471のブックマーク (129)

  • MySQLの準同期レプリケーションに関する質問への回答と詳細 | Yakst

    MySQLの準同期・ロスレス準同期レプリケーションの仕組みを解説し、同機能についてのよくある誤解やメリットについて説明します。 最近、メールで「MySQL Lossless Semi-Synchronous Replication」について質問されることがありました。この質問への答えは多くの人にとって有益であると考えたため、回答をこのブログ記事に書きたいと思います。回答を読めば、トランザクションのコミット、準同期レプリケーション、MySQLのクラッシュリカバリ、ストレージエンジン(InnoDB)クラッシュリカバリの内部挙動について理解できるでしょう。同時に、私がこれまで見聞きしてきたいくつかの誤解についても糾したいと思います。まずはそれら誤解の一つから始めましょう。 こうした誤解の一つは以下のようなものです(これは正解ではありません):準同期レプリケーションが有効になっているスレーブは常に

    t10471
    t10471 2019/04/28
  • Dive into MySQL Error - Speaker Deck

    2018/09/21 db tech showcase Tokyo 2018 https://www.db-tech-showcase.com/dbts/tokyo

    Dive into MySQL Error - Speaker Deck
    t10471
    t10471 2018/09/24
  • ヤフー社内でやってるMySQLチューニングセミナー大公開

    速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)NTT DATA Technology & Innovation

    ヤフー社内でやってるMySQLチューニングセミナー大公開
    t10471
    t10471 2016/02/25
  • ペパボ de MySQL

    2016/02/22 GMOペパボでMySQL勉強会 * わりと前にやったやつ成分が多めです。 * Excel方眼紙のページがないのは仕様です。

    ペパボ de MySQL
    t10471
    t10471 2016/02/24
  • ターミナルでMySQLを見ると大抵、文字化けしてるから。治す。けどいまいち分からない。 - Qiita

    下記の設定で文字化けは解消されたのですが、いまいち理解ができませんでした。(;£;) 概要 たいていターミナルからMySQLを覗きますと、文字化けをしています。なので、その辺を勉強したいと思いました。 環境としては、Macで。Vagrantの中のMySQLです。 MySQLの中で調べる。 Vagrant内でMySQLにログインしまして、showなんちゃらと打ちます。 mysql> show variables like '%char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | latin1 | |

    ターミナルでMySQLを見ると大抵、文字化けしてるから。治す。けどいまいち分からない。 - Qiita
    t10471
    t10471 2016/02/15
  • ユーザーに設定できる権限の種類と一覧

    ユーザーが MySQL に接続したあとデータベースやテーブルを作成したり、テーブルからデータを取得するにはその操作に対する権限が設定されている必要があります。ここでは MySQL における権限の種類と権限の一覧について解説します。 グローバルレベル(G) グローバルレベル権限は全てのデータベースに適用される権限です。この権限は mysql.user テーブルに格納されます。 データベースレベル(D) データベースレベル権限は特定のデータベース内の全てのオブジェクトに適用される権限です。この権限は mysql.db テーブル内に格納されます。 テーブルレベル(T) テーブルレベル権限は特定のテーブル内の全てのカラムに適用される権限です。この権限は mysql.tables_priv テーブル内に格納されています。 カラムレベル(C) カラムレベル権限は特定テーブル内の単一カラムに適用される権

    ユーザーに設定できる権限の種類と一覧
    t10471
    t10471 2016/02/12
  • ユーザーに権限を設定する(GRANT文)

    GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] priv_level TO user_or_role [, user_or_role] ... [WITH GRANT OPTION] [AS user [WITH ROLE DEFAULT | NONE | ALL | ALL EXCEPT role [, role ] ... | role [, role ] ... ] ] } GRANT PROXY ON user_or_role TO user_or_role [, user_or_role] ... [WITH GRANT OPTION] GRANT role [, role] ... TO user_or_role [, user_or_role] ... [WI

    ユーザーに権限を設定する(GRANT文)
    t10471
    t10471 2016/02/12
    “ALL”
  • オプティマイザトレースによるちょっとディープな快適チューニング生活

    メリークリスマス!!今日はMySQL Casual Advent Calendar 2015の25日目をお届けするぞ!! 前回のエントリでは、MySQL 5.7におけるオプティマイザの改良点や新機能についてのスライドを紹介した。MySQL 5.7のオプティマイザの良し悪しは、ぜひみなさんの手で確かめて頂きたい。ところで、オプティマイザといえばひとつ前のバージョンである、MySQL 5.6で追加されたオプティマイザトレースという機能がとても便利だ。使いこなせばクエリチューニングの強い味方になるので、ぜひまだ使ったことがないという方は、一度試してみて欲しい。ブログではまだ紹介していなかったので、今日はその使い方と見方を紹介しようと思う。 オプティマイザトレースとは一体何か。ひとことで表せば、オプティマイザがどのような実行計画を検討・比較し、どの実行計画を選択したかということを、詳細に表示して

    オプティマイザトレースによるちょっとディープな快適チューニング生活
    t10471
    t10471 2015/12/25
  • MySQLテーブル設計入門

    行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...Masahiko Sawada

    MySQLテーブル設計入門
    t10471
    t10471 2015/06/06
  • MySQLインデックスの基礎 その2 : 2つのクエリの違いとオプティマイザの判断 | Yakst

    MySQLのインデックスを効果的に使う方法の第2弾。よく似た2つのクエリなのに、実際にはインデックスの使い方がそれぞれ異なることを通じて、オプティマイザがどのようにクエリの実行計画を立案するのか、そしてその結果どうインデックスが使われるのかを解説する。 前の記事では、ひとつのテーブルに対する様々なクエリを対象にして、インデックスのデザイン方法について議論しました。この記事ではより実世界に即した問題解決の例として、よく似ているにも関わらず、ひとつは適したインデックスを使い、もうひとつはフルテーブルスキャンをしてしまうという、2つのクエリを取り上げます。動作の違いはバグなのでしょうか?それとも想定された動きなのでしょうか?続きを読んでみてください! 対象のクエリ2つ # Q1 mysql> explain select col1, col2 from t where ts >= '2015-0

    MySQLインデックスの基礎 その2 : 2つのクエリの違いとオプティマイザの判断 | Yakst
    t10471
    t10471 2015/05/30
  • MySQLインデックスの基礎 : ひとつのテーブルに対するクエリの最適化法 | Yakst

    MySQLのインデックスを効果的に使うにはどうしたらいいのかについての分かりやすい解説。そもそもインデックスの役割はとは何か、そしてどうすればその役割を果たしてくれるのかを説明する。 たとえ1つのテーブルだけに対して実行されるクエリでも、パフォーマンスが悪いというのはよくあることです。その理由は簡単で、インデックスの作り方がまずいため、実行計画がおかしくなってしまうのです。ここでは、1つのテーブルのみに対する色々なクエリを最適化するためのガイドラインを挙げてみたいと思います。 おことわり : あらゆる状況をカバーしようとはせず、一般的なガイドラインを提示するに留めるつもりです。ここで挙げたものがうまく適用できない例を簡単に見つけることができるのは間違いないでしょうが、ほとんどの場合はここに書いたことが十分なのも事実です。また、MySQL 5.6以上にあるIndex Condition Pu

    MySQLインデックスの基礎 : ひとつのテーブルに対するクエリの最適化法 | Yakst
    t10471
    t10471 2015/05/30
  • My sqlで遭遇したトランザクションとロックのお話

    RDBMSのトランザクション、楽観ロック、悲観ロックがわかっている人向けのお話。 並行で処理が走っていて、同時にトランザクションが走った時、データベースから取得できる値がどうなるか?というお話Read less

    My sqlで遭遇したトランザクションとロックのお話
    t10471
    t10471 2015/01/29
  • MySQL/MariaDBとTransactdのInnoDBロック制御詳細 その1 - BizStationブログ

    今回から数回にわたり、TransactdのオペレーションとInnoDBにおけるロックについて解説します。 ロックについてはあまり良くわからなくてもとりあえずそれなりに動くアプリケーションは作れてしまいます。ですが、マルチユーザー環境でミッションクリティカルなアプリケーションを書くには、ロックの理解が不可欠です。ロックをうまく使って、矛盾や間違いのない読み書きをしつつ同時実行性も高いアプリケーションにしましょう。 その1では、Transactdを実装する上でMySQLのソースやドキュメントから得た知見を基に、InnoDBのロックの種類と分離レベルに応じてそれをどのように使うかをまとめてみます。 Index MySQLのトランザクション関連用語 MySQLのREPEATABLE-READ InnoDBのロック 行ロック (row-level locking) GAPロック GAPロック単体 ネ

    MySQL/MariaDBとTransactdのInnoDBロック制御詳細 その1 - BizStationブログ
    t10471
    t10471 2015/01/07
  • MySQLレプリケーションの運用が劇的変化!!GTIDについて仕組みから理解する

    メリークリスマス!!やあ、良い子のみんな!!サンタクロース・・・ではなく、ヒゲモジャギークからのクリスマスプレゼントだよ!! というわけで、MySQL Casual Advent Calendarの25日目である。今朝Advent Calendarを覗いてみると、日分のエントリーが無かったので、急遽書くことにした。Advent Calendar最後の日、クリスマスを飾る記事のテーマはGTIDだ。 前回の投稿では、MySQL 5.6の目玉機能として、レプリケーションがクラッシュセーフになったことを挙げた。レプリケーションまわりで言えば、もうひとつ外せない目玉機能がある。それがGTID(Global Transaction ID)である。 GTIDは良くも悪くもレプリケーションの運用を変化させる。GTIDを使うことによって得られる最大のメリットは、CHANGE MASTER TOでバイナリロ

    MySQLレプリケーションの運用が劇的変化!!GTIDについて仕組みから理解する
    t10471
    t10471 2015/01/03
  • MySQL5.5から5.6にしたらICP(Index Condition Pushdown)で困った - Qiita

    はじめに ついにAdventCalenderも2日ですね。 MySQL Casual Advent Calendar24日目の担当の@gotyooooです。 昨日は@kuwa_twさんのシェルスクリプトだけでMySQLからMongoDBへの移行しちゃうでした。 Mongoのメモリいまくりな仕様が気になってます・・・。RDBさいこーw MySQL界隈ではやっぱりMariaDBはRHEL7とかで標準になったりと、熱いですよね。適当なものでまずは試してみたいです。Galera clusterってそういばどうなったんだろ・・・。 日の内容 標題の通りです。今更ながら5.5から5.6に移行したデータベースでICPにより問題が起こってしまいました。そのことを書こうと思います。 ICP(Index Condition Pushdown)とは? 5.6の新機能 デフォルトON 簡単に機能説明 マルチカ

    MySQL5.5から5.6にしたらICP(Index Condition Pushdown)で困った - Qiita
    t10471
    t10471 2014/12/31
  • MySQLのレプリケーションでありがちな10の問題 | Yakst

    レプリケーションの問題でよくある10パターン。 1) セッションのみで有効なバイナリログ sql_log_bin = 0を設定すると、そのセッション内でバイナリログを無効にできる。つまり、マスタのセッション内で実行したDMLやDDLは、スレーブにはレプリケーションされない。 マスタでバイナリログをオフにする。 mysql> set sql_log_bin = 0 ; Query OK, 0 rows affected (0.00 sec) reptestデータベースにテーブルを作成してみる(マスタ上で実行)。 mysql> create table reptest(ID int) ; Query OK, 0 rows affected (0.01 sec) mysql> show tables ; +-------------------+ | Tables_in_reptest | +-

    MySQLのレプリケーションでありがちな10の問題 | Yakst
    t10471
    t10471 2014/12/22
  • 大規模環境でMySQLのGTIDを適用して得られた教訓 | Yakst

    MySQL 5.6からの機能であるGTIDを、Facebookの環境に適用した際の流れと主な不具合、そしてそれらの修正点について、Facebookのエンジニアによるまとめ。 by Evan Elias and Santosh Praneeth Banda Global Transaction ID (GTID)は、MySQL 5.6の新機能の中でも最も使わずにはいられない機能の一つだ。このおかげで、フェイルオーバやポイントインタイムリカバリ、階層を持ったレプリケーションなどに非常に有益だし、クラッシュセーフなマルチスレッドレプリケーションの必須条件にもなっている。この数ヶ月で、我々はFacebookの全ての番用MySQLインスタンスで、GTIDを有効にした。その中で、この機能の適用方法や操作について、たくさんの知見が得られた。たくさんのサーバサイドの修正事項については、WebScaleS

    大規模環境でMySQLのGTIDを適用して得られた教訓 | Yakst
    t10471
    t10471 2014/09/24
  • MySQLトラブル解析入門

    第5回中国地方DB勉強会で発表したスライドです。MySQLでよく起きる問題について、傾向と対策をまとめています。

    MySQLトラブル解析入門
    t10471
    t10471 2014/09/22
  • 高可用性とデータ・シャーディングを実現できるMySQL Fabricとは?

    MySQL Fabricは、MySQLサーバー群を管理する統合型のフレームワークです。MySQL Fabricを使うことにより、高可用性(HA)とデータ・シャーディングによる拡張性を実現できます。 MySQLのレプリケーション機能を使って高可用性構成を実現している場合、マスターのサーバーに障害が発生した時に、スレーブのサーバーを新しいマスターに昇格させるフェイルオーバー処理が必要になります。このフェイルオーバー処理を自動化するために、MySQL 5.6ではMySQL Utilities(※)にmysqlfailoverという機能が追加されました。 ※MySQL Utilitiesは、Pythonでかかれた便利なスクリプト集です。詳細は以下の記事も参考にして下さい。 [参考]Pythonで作られた便利なコマンドラインツール MySQL Utilities mysqlfailoverを使うこと

    高可用性とデータ・シャーディングを実現できるMySQL Fabricとは?
  • Amazon RDS における MySQL 5.6 のパラメータ設計例 - bekkou68 の日記

    (最終更新日: 2017/9/25) はじめに production 環境で MySQL 5.6 動かすためのパラメータ設計についてまとめました。この記事がカバーする内容は次のとおりです。 パラメータを設定するスクリプト。 各パラメータにおける変更するかどうかの判断基準。 想定されるメモリの消費サイズを算出してパラメータが妥当かどうか確認する方法。 サービスの状況に応じててきぎ読みかえてください。 【結論】パラメータグループ作成・パラメータ設定のスクリプト 結論として、パラメータグループを作成し、パラメータを設定する aws-cli のスクリプトを置きます。Amazon AWS の Web Console から設定することもできます。 #!/bin/sh # == パラメータグループ作成 aws rds create-db-parameter-group --db-parameter-gr

    t10471
    t10471 2014/09/17