うちの会社でも、IO-Drive2やSSDを使用したサーバが増えてきた。 ディスク性能が良いサーバがあっても、MySQL側がボトルネックになっていたら宝の持ち腐れになってしまう。そこで、MySQLで制限されている一つにinnodb_io_capacityというものがあるのでこの設定について考えてみたいと思う。 そもそもMySQLがディスクI/Oを必要とする処理はどのようなものがあるか考えてみよう。 ・キャッシュされていないDBデータへのアクセスが発生した時。 ・更新されたダーティページがディスクへフラッシュする時。 ・エラーログが出力される時。 ・バイナリログが出力される時。 ・スロークエリログが出力される時。 ・トランザクションログが出力される時。 ・表やDBの定義や作成等でテーブルスペースの更新が発生した時。 他にもあると思うが、I/O処理にはフォアグランド、バックグラウンドの2種類が
先週、MySQL Conference & Expo 2010が開催され、盛況のうちに終了した。カンファレンスに合わせる形で、MySQL 5.5.3および5.5.4がリリースされたのだが、これが目を見張るような進化を遂げている。特に性能面での進化には目を見張るものがある!Jeremy ZawodnyやMark Calleghanといったコミュニティの重鎮たちも「非常にエキサイティングなリリースだ!」などと表して歓迎の意を表している。 というわけで、本日はMySQL 5.5.3/5.5.4の新機能および変更点についてレビューしてみよう! おさらい。 〜 MySQL 5.5の既存の機能 〜MySQL 5.5が登場したとき、その新機能については以前にもエントリで紹介したが、ここで改めておさらいしてみよう。MySQL 5.5は、正確にいうと現在最新バージョンであるMySQL 5.1の「次の次」のバ
アクセスランキングを作ってみよう! 今、Rails4 を使ってアクセスログからランキング作ってみたいなぁーと思ってたんですが、みんなどうやってんだろうって聞いてみたところ、 Fluentd ってのを組み込むだけで簡単に集計とかできるよーって話だったので、使ってみました。 Fluentd とは まず読み方は、 「ふるーえんとでぃー」であって、「ふるーえんど」とかじゃないっぽいです。d はたぶんデーモンの d 。 色々説明面倒なんで省略しますが、ログ収集元とか出力先が簡単に設定できて、自分の欲しい形でログ保持できますよーって感じっぽい。なので、 「シェルスクリプトで処理した tail の処理結果をファイルに」「nginx から出力されたアクセスログを mongoDB に」とかそういう処理を自前で書く必要なく、簡単な設定だけでいけちゃう。 詳しくは → 柔軟なログ収集を可能にする「fluentd
MySQL で slave を複数台立てて参照分散するには、HAProxy を利用してロードバランスと切り離しを行うと手軽に使えて便利です。 option mysql-check という設定で、HAProxy 自身が mysqld に接続してヘルスチェックが可能です。 listen mysql-slave bind 127.0.0.1:3307 mode tcp option mysql-check user haproxy balance roundrobin server slave1 192.168.1.11 check server slave2 192.168.1.12 check server slave3 192.168.1.13 checkなのですが、この設定だと以下のように少々不便なことがあります。 mysqldに接続できるかどうかのみを死活の判断にしているので、レプリケ
要件 MySQL でグローバル IP をまたぐレプリケーションをやってみたい その場合、通信は SSL で暗号化したい 手始めに同一ホスト内から SSL を使って接続を試してみる 環境 Amazon Linux 手順 MySQL のインストール yum install -y mysql-serverChef のレシピ的には以下で... package "mysql-server" do action :install end service "mysql_service" do case node["platform"] when "CentOS","RedHat","Fedora","amazon" service_name "mysqld" else service_name "mysql" end supports :status => true, :restart => true,
MySQL Utilitiesならではの注意点 MySQL Utilitiesは従来のコマンドラインツール群とは違い、以下のような記述で接続先を指定します。 これは、従来のコマンドラインツール群が主に1つのMySQLサーバーを対象として動作するものなのに対して、MySQL Utilitiesは2つ以上のMySQLサーバーを対象として動作するものが多いため、このような記法になっています。 [MySQL Utilitiesの記法] --server=ユーザ名:パスワード@ホスト名:ポート番号 [MySQL コマンドラインツール群の記法] --user=ユーザ名 --password=パスワード --host=ホスト名 --port=ポート番号 なおWindows環境ではローカルホストとしてlocalhostと127.0.0.1のどちらを指定しても同じですが、LinuxやUNIXではホスト名に対
■ このような場合に参考にして下さい MySQLのクライアントソフト(mysql,PHP,Perl他)からMySQLサーバーに接続しようとすると 「Can't connect to local MySQL server through socket '/tmp/mysql.sock'」 のようなエラーが出て接続に失敗する。 ■ 対処方法の前に まずはじめに、エラーメッセージは次の意味を持ちます。 「ソケット'/tmp/mysql.sock'を通じてローカルのMySQLサーバーに接続することが出来ません」 ソケットとはプロセスやネットワーク間の通信機構のことで、MySQLではこのソケットを通じて サーバーとクライアントとが接続されます。ソケットというとポート番号を指定して利用する方法が 思い浮かびますが、ここでは/tmp/mysql.sockというファイルが出てきています。 これはUNIXド
前回、HAProxyによるフェイルオーバーを行ったので、 続けて今回は自動でmaster,slaveの切り替えを行いたいところですが、 その前に手動での切り替えを行いたいと思います(`・ω・´)シャキーン 今回の構成ははmaster1台(server-idは10)、 slave2台構成(slave1はserver-idが20,slave2はserver-idが30)のレプリケーションを行っている環境で、 slaveをmasterに変更し、masterをslaveに変更してみたいと思います( ´∀`)bグッ! その前に注意点として、次の点があるそうです。 MySQLドキュメントから一部抜粋 http://dev.mysql.com/doc/refman/5.1/ja/replication-solutions-switch.html スレーブを --log-bin はあるけれども --lo
悩んだり調べたりした過程も書いているので、記事が長くなってしまった。まとめるのが下手だ。早くスレーブサーバでもバイナリログを有効にする方法が知りたい人は読み飛ばしてください。 MySQLでレプリケーションを組みました。レプリケーションサーバでは、こちらの都合でサーバを停止することができるので、停止して安全にmysqldumpによるバックアップをしています。 その時点でのフルバックアップはmysqldumpでとれるのですが、差分バックアップに使うにはバイナリログも同時にバックアップする必要があります。バイナリログがスレーブサーバでも有効になっていれば、バイナリログファイルが作成されるので、特にそれ以上のバックアップは必要ないと思っていました。 マスターサーバとスレーブサーバの設定ファイルは、基本的に同じ設定だと思います。スレーブサーバで参照を分散させている場合は、メモリ割り当てなどは違う部分
任意のSQLクエリで取得した結果の差分から、insert/update/deleteイベントを検知するプラグインをリリースしました。イベント検知だけでなく、レコードの内容と共にElasticsearch/Solrへ同期を行う、Outputプラグインも同封しています。 これはあえてバイナリログ(MySQLBinlogAPI)は使わずに、SQLクエリの実行結果の差分を見てinsert/update/deleteイベントを検知します。 そのため、純粋なテーブル同期だけでなく、任意のJOINやVIEWテーブルを元とした差分同期処理が実現できるのが特徴です。 y-ken/fluent-plugin-mysql-replicator https://github.com/y-ken/fluent-plugin-mysql-replicator http://rubygems.org/gems/flue
MySQLのバイナリログについて、うっすらまとめてみようかと。 RDBMSで更新ログまたはトランザクションログと呼ばれているログの機能は、 MySQLでは「バイナリログ」が担っている。 これらの内容は、「CREATE TABLE文やINSERT文といったデータベースの中身を 変更する操作を行った際の操作履歴を追跡できる形で記録した情報」であり、 コミットされたトランザクションの情報が保存される。 トランザクションログの中身はRDBMSによって異なり、「論理ロギング」と 「物理ロギング」がある。「論理ロギング」はSQL文レベルで変更履歴を管理し、 「物理ロギング」は変更があったデータブロックをバイナリイメージとして管理する。 MySQLのバイナリログは論理ロギングだが、OracleのREDOログやInnoDBログは 物理ロギングである。 バイナリログはデフォルトでは作成されないので、my.c
MySQL Performance Blogの翻訳。Perconaのサポートエンジニアである筆者が、InnoDBのパフォーマンスチューニングの基礎について、ハードウェアやOSの選定からパラメータの推奨値まで解説する。 最近、2007年にPeter Zaitevが書いた「InnoDBパフォーマンス最適化の基礎」という記事を見つけた。これは素晴らしい記事で、読んでいると、MySQLとPercona Serversそして今日利用可能な全ての基盤技術に関して、6年近くの間に何が変わってきたのかを見直してみたいと思わせるものだ。 本当にたくさんのことが変わったものだ!この記事では、InnoDBの使用に効果的なパラメータの多くに、特にパフォーマンスの観点から焦点を当てる。私はサポートエンジニアで、Percona SupportではInnoDBパラメータの適切なサイズに関する質問がたくさん寄せられている
2013年03月21日18:11 MySQL 今さらだけどMySQLのパーティショニング機能を試してみた 最近は花粉が飛んでて辛い季節ですがみなさまいかがお過ごしでしょうか。でももうちょっと我慢すればサクラの季節ですよ〜。花見良いですよね、飲みたいだけですが。 ・・さて、今回はちょっと必要になったので、MySQLのパーティショニング機能なるものを試してみました。存在は知ってたけど、実際に試してみたことは無かった…。 パーティショニングとは? これはどういうものかと言うと、MySQL5.1から使えるようになった機能で、ひとつのテーブルのデータを条件によって複数の領域(パーティション)に振り分けて管理することができる、というものです。例えば日別にデータを別々のパーティションに振り分けたり。 パーティショニングするとデータの削除が高速だったり(通常は削除ってものすっごい遅いけど、特定のパーティシ
MySQLスローログの手動ローテート 2012-11-13 MySQLのスローログは、通常それほど大量に出るものではないからか、自動でローテートされるような設定は特にない。しかし、負荷が上がったりしてスローログが大量に出てしまい、ローテートしたい場合はよくあるだろう。手動でローテートする場合は以下のように行う。 この例は、MySQLのデータディレクトリ(datadir)が /var/lib/mysql で、スローログファイル名(slow_query_log_file)がmysql-slow.logの場合。 $ cd /var/lib/mysql $ mv mysql-slow.log mysql-slow.log.old $ mysqladmin flush-logs または mysql> flush logs; mysqladmin flush-logs あるいは flush logs
mac miniのsnow leopardでMySQLを動かしていて、Windowsマシンから黒猫 SQL Studio Nextでデータを表示させようとしている場合のお話です。 まず、Windowsマシンで黒猫 SQL Studio Next(以下黒猫)を使って、snow leopardのDBに接続するには、ODBCによる接続が必要。ODBCで接続するには、MySQLへの接続ユーザー/パスワードが必要。 というわけで、目的のDBに接続できるMySQLユーザーを作成し、権限を与えてやった。 (まずrootでMySQLにログインした) mysql> grant select , insert, update , delete , drop , create on dbname.* to user1@'%' identified by 'password'; これで黒猫からselect, in
MySQL¥20,000~ Navicat for MySQL Navicat for MySQLは、MySQL/MariaDB管理および開発に携わる方に理想的なツールとなっています。一つのアプリケーションで、同時にMySQLおよびMariaDBのデー… MySQL¥29,000~ Navicat Monitor Navicat Monitorとは、MySQLをはじめとしたデータベースサーバの監視ツールです。通常監視の他にも、レポートの出力やアラート機能、クエリアナライザなど様… MariaDB¥17,000~ Navicat for MariaDB Navicat for MariaDBは、ネイティブな環境をMariaDBデータベース管理及び開発に提供するものです。ローカル/リモートのMariaDBサーバーに接続した場合、Amazo… MongoDB¥20,000~ Navicat fo
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く