MySQLの運用について

このQ&Aのポイント
  • MySQLの複数起動の使いどころや現実性について質問します。
  • ユーザー管理のパフォーマンスを考慮する場合、mysqld単位での管理が便利かもしれません。
  • 複数起動運用のメリット・デメリットやメモリ消費について教えてください。
回答を見る
  • ベストアンサー

MySQLの運用について

分からない感満載で質問しますが、何卒ご容赦を。 mysqldは複数起動ができますが、この複数起動の使いどころが疑問です。 テスト的な使い方や、レプリケーションでの利用は想像できるのですが、不特定多数のユーザー数分起動するといった使い方は果たして現実的でしょうか? たとえば、不特定多数のユーザーに向けてゲームなどのサービスを提供する場合、ユーザー管理をテーブル単位、データベース単位、mysqld単位でできそうですが、パフォーマンスを考えずに利用するならmysqld単位で管理するほうが幅があって便利そうに思えます。 ご存知であれば、mysqld複数起動運用のメリット・デメリットを伺えたらと思います。 個人的な予想としては、メモリを大量に消費するのではないかと思っているのですが。どうなんでしょう。

  • MySQL
  • 回答数2
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>仮にDBが壊れたり DBが2つあればDBが壊れる確率は2倍になるので厳密にはリスクヘッジにならない。 これをするならこまめにバックアップして、壊れたらレストアする そもそもDBを二つたちあげてもレプリケーションの設定やらなにやらあって、 故障対応時にすぐにリプレースできるようなものをつくるのはかなり大変。 >盗難にあった場合 盗難を前提とするなら同じマシンでリプリケーションする意味は皆無。 別マシンでスレーブサーバーを立てるのが妥当 >mysqld単位でユーザーを管理できる いわゆるDB単位やテーブル単位でユーザー管理は可能。 いずれにしろ同じマシン内で複数のデータベースデーモンを立てる要件 としては動機づけが薄いですね。 同じマシン内でやるなら前回も書いたとおり仮想マシン環境をつくり 完全にセパレートする方がよいし、リスクマネジメントであれば マシンを分けて管理した方がよい

tracer
質問者

お礼

なるほど大変参考になりました。 私の中では、サーバーのスケールアップやスケールアウト、またバックアップなどの管理をどういったレベルで行えばよいのかが不透明でした。 その意味で、1サーバーにmysqld1つが固定だと考えると、すこし運用が明るくなったような気がします。お付き合いいただきありがとうございました。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

バージョンに依存するアプリやライブラリなどを利用する場合は やむなく使用することもあるとは思います。 あとはご指摘の通り本番と並行して設計するテスト環境は必要ですね。 複数立ち上げるのはリソースの無駄なのでお勧めしませんが、 完全にセパレートする必要があるなら、FreeBSDでいうjailのように 仮想環境まで視野に入れた方がよいでしょう。 だいたいにおいて「最初から不要」と思っているのであれば あえてそれ以上掘り下げる意味がない命題だと思いますが・・・

tracer
質問者

補足

回答ありがとうございます。 リソースを余分に消費する懸念はあるものの、たとえば、仮にDBが壊れたり、盗難にあった場合、mysqld単位でユーザーを管理できるのであれば、その被害を最小限にくい止められるのかな、と思いました。ですが、実際のリソース消費量がサーバーにどれだけ負荷を与えるのか皆目見当がつかず、いわゆるそのトレードオフが成立するかどうかの一般的な見解を伺いたく思いました。

関連するQ&A

  • MySQL の安全な再起動とコネクションに関して

    MySQL の再起動方法で悩んでいます。 基本的には起動させたら再起動はしないのですが、最近になって処理が増えてきましたところ、メモリリークが発生するようになりました。 そこで、定期的に再起動を行いたいのですが、mysqladmin reload は安全なのでしょうか? Apache の apachectl graceful のように、子プロセスを終了させてから安全に再起動をさせたいのです。 また、mysqld の max_connections 設定は、一つのデータベースと複数のデータベースに対してと、どちらに対しての設定なのでしょうか? 結構調べたのですが、文献が発見できません。 大変恐縮ですが、アドバイスをいただけますと幸いです。 何卒よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • MYSQLの起動オプション

    FreeBSDでMySQLを運用しております。 何かのミスで起動オプションが下記のように変更になってました。 /bin/sh /usr/local/bin/mysqld_safe --user=root --skip-grant-tables セキュリティ的に問題がありますのでデフォルトに戻したいのですが、どのようにして戻せばよいでしょうか?ネットで検索したのですが、見当たらなかったので質問させてもらいました。 基本的な知識かと思いますが、宜しくお願いします。

    • ベストアンサー
    • MySQL
  • MySQLのデータファイルの位置について

    MySQLでテーブル、データベースを作成したのですが、 OS上から作成したテーブル・データベースが保存されているファイル(データファイル?) が見つけられません。 テーブルにデータをインサートしてコミットして、 セレクトを行ってデータは反映されていることは確認しています。 OSはWindows 7 MySQLのバージョンは5.5です。 user_dbというデータベースを作成し、 show databasesを行った結果、 information_schema mysql performance_schema test user_db が表示されることから、データベースuser_dbは正常に作られていると思います、 user_dbに対して、インサートは可能で、一度データベースを停止して、 再起動後、インサートしたデータがみれています。 しかし、インストールフォルダのMy.iniのdatadirで指定されているフォルダには mysql performance_schema のフォルダしかない状態です。(ここにuser_dbフォルダが作成されると思うのですが) どこにデータが保存されているのでしょうか?

    • ベストアンサー
    • MySQL
  • 運用管理のお仕事

    データベースやUNIXサーバーの運用管理のお仕事について教えて下さい。 作業内容としては ・障害対応 ・未然防止策設計 ・パフォーマンス対応 などが思い浮かびますが、他にこういったことも・・というお話は ありますでしょうか?。 また平日業務として特に障害などなければゆとりはあるのでしょうか?。 自分は業務系開発しか経験がないため 上記以外でもこれは、というお話を頂ければありがたいです。

  • SQLite vs MySQL

    お世話になります。 データベースにアクセスするperl CGIを造ろうとしています。 1データベース・1テーブルのみの単純なつくりで 1レコードはだいたい、intergerが10項目、char[12]程度のtextが10項目、dateが5項目、 全部で10,000レコード程度の小規模なものです。 ユーザ数は特定の約30人程度です。各人、一日に2~3レコードにしか書き込み操作はしないはずです(時刻は重なるかもしれません)。 速度がクリティカルに要求されるわけではありません。 SQLiteとMySQLの比較は、ネット上でも多数見つかり、多数ユーザならMySQL、single userならSQLiteという感想が多いですが、30人というのが「多数」なのか、どうなのかわかりかねましたので、使用実感をお聞かせください。 SQLiteで少し組んでみたのですが、きわめて容易に作れるし、バックアップも簡単なので、30人程度ならSQLiteでも問題なしということであればSQLiteにしたいところです。

    • ベストアンサー
    • MySQL
  • MySQLが起動しない

    このテーマの質問はいくつもあるのですが、解決に結びつくものがなく困っています。 もともと正常に動いていたのですが、再インストールしたところ起動しなくなりました。 再インストールは「yum -y install mysql-server」で行いました。 いろいろと試してはいるのですがうまくいきません。 どなたかお分かりの方がいらっしゃいましたら、ご教授いただけますでしょうか。 よろしくお願いします。 --------------------------  エラーログ -------------------------- 110709 16:46:38 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 110709 16:46:38 [Note] Plugin 'InnoDB' is disabled. 110709 16:46:38 [Note] Plugin 'FEDERATED' is disabled. 110709 16:46:38 [ERROR] Unknown/unsupported storage engine: InnoDB 110709 16:46:38 [ERROR] Aborting 110709 16:46:38 [Note] /usr/libexec/mysqld: Shutdown complete 110709 16:46:38 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended --------------------------  my.cnf -------------------------- [mysqld] skip-innodb max_connections=30 datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock bind-address=127.0.0.1 # Default to using old password format for compatibility with mysql 3.x # clients (those using the mysqlclient10 compatibility package). old_passwords=1 [mysql.server] user=mysql sort_buffer=512 net_buffer_length=8 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid --------------------------  php.ini (一部抜粋) -------------------------- mysql.default_socket = mysql.default_host = mysql.default_user = mysqli.default_port = 3306 --------------------------  サーバー環境 -------------------------- OS: Red Hat Enterprise Linux ES release 4 MySQL: MySQL: 5.5.9-2 [ファイル構成] /var/run/mysqld/mysqld.pid /var/lib/mysql/mysql.sock ※上記のファイルは所定のディレクトリだけでなく、サーバー上に存在しません。 /var/lib/mysql  -mysql/  -performance_schema/  -test/

  • SQLiteによる運用について

    SQLite3によるプロジェクト管理システム(Tracとか)の運用を考えております。 下記件について知りたく投稿させていただきました。 1.SQLiteは、データが肥大化するほどパフォーマンスが低下しますか? 2.SQLiteは、データの損失が発生しやすいでしょうか? の以上です。 比較対象としてはMySQLを考えています。本用途については、下記に述べますので、本用途での運用での問題及び、MySQLを使った場合の利点についてお答いただければ幸いです。 2.に関しては、どちらも大差ないと思いますが、当方ではVMWareにより、ゲストPCを仮想ファイル上で運用しておりまして、DBファイルも仮想ファイル上の中に入ります。その運用上で注意しなければならないことがございましたらご連絡いただきたいです。 開発者はせいぜい10~15人程度ですので、複数のセッションからのアクセスについては、あまり考慮しなくてよいと考えております。

  • 高度なmySqlの機能の使い方を教えてください。

    sqliteやmySqlを使い掲示板を何個か作りました。 基本コマンドからテーブルロックくらいまでで掲示板は作れたので、 MySQLの他の機能に意識しませんでしたが、下に書いた制約からレプリケーションまで機能が どのよな場面で使うのか知りたくなりました。 どのようなところで使うのか知りたいと思っています。 どなたかご存知でしたらどのような場面で使うのか簡単でいいので教えてもらえませんか? よろしくお願いします。 制約 整合性制約定義 ~ レプリケーション 質問項目) 必須なもの 頻繁に使うもの どういう場面で使うのか? プロジェクトの規模 大~小規模 何万行のデーター量か? データーベースの数テーブルの数 項目を参考にしたサイト ttp://kozy.heteml.jp/pukiwiki/index.php?FrontPage#o2834729 基本コマンド コマンドラインツール データ型 テーブル作成 select insert update/delete トランザクション テーブル 表結合(join)、単純結合、等価結合 テーブルロック 制約 整合性制約定義 テーブル 再帰結合 インデックス ストアドプロシージャ ストアドファンクション トリガ 外部キー ユーザ変数 フォルダ構造 設定ファイル ログファイル ユーザー管理 バックアップ レプリケーション

  • 教育現場のデータベース運用

    公立学校で,1000人近い生徒の情報管理の一部を任されています. 一部というのは,主に成績出欠管理です.これはaccdbファイルをデータベースとして,ExcelからADOを使って数十人の教員で共有しています. 管理職から,学籍(住所など)の管理はできないかと打診されました. 教育関係のDB構築をしたことのあるエンジニアの方ならばご存じだと思いますが,学校には指導要録という紙のカード形式データベースがあります.これをリレーショナルデータベース化することは難しくありません.しかし,これに定期考査成績処理を組み込むとなると複雑になってきます.何回も行われるテストの成績や欠課時数を記録管理するテーブルを追加し,これから評定・修得単位数を算出する機能を組み込まなくてはなりません.これがかなり大変です. 私は,学籍管理を含む指導要録データベースと何回もの成績・出欠を記録する成績データベースの設計・運用実績があります.最終的な成績処理後,成績データベースから評定・単位数データを指導要録データベースへデータを移行すれば,指導要録データベースから調査書入力・発行ができます.これが私のできる範囲です.しかし,情報管理関係の役割分担としては全学年複数年度の成績データベース管理だけをやっています(他の仕事も山ほどありますから).管理職の要望に答えるとなると,私が個人的に持っている指導要録データベースを全学年の学籍データベースとして使うということになりますが,こうなると負担が大きいです. 現実としては,学年別に担当者を設けて,Excelなど簡単なデータベース(一つのテーブル)で住所録ファイルを作成するのがよさそうです.他の学校ではよくやられているようです.ただ,こうなると,まず,入力するのが大変という事情があります.最近は生徒連絡網も作らないので,住所一覧表が最初に必要になるのは最終学年で調査書を発行する場合です.だから,入学時の忙しいときに入力する動機がありません.仮に入力問題をクリアしても,後から統合しようというとき,学籍番号が振られていなかったり,項目が統一されていなかったり,人事異動で途中で担当者が変わって管理がうまくいかなかったりします.だから,必要なときに必要な業務だけのために作ればよいのではないかということで今の職場では学籍管理がデータ化されていないのだと思います. 根本的な問題は公立学校は今だに事務作業は紙ベースで,データベースエンジニアなど専門的人材が人事に組み込まれておらず,基幹業務のやり方も不統一で現場ごとにまちまちで,短期的かつ狭い範囲でやりくりしていることに原因があります.まあ,これはマネジメントの問題ですから,私などがどういってもしょうがないです. そこで質問です.このような悪条件の中,複数年度の成績出欠と学籍を同一の簡単なデータベースで管理することに成功している方いらっしゃいますか(簡単なデータベースとはOracle,SQLServerなどではないという意味です.Officeソフトの範囲内ということです).

  • MySQLは難易度が高いのでSQLiteで構築

    お世話になります。 現在Web上で動作する商品管理のツールをPHP+pdo+MySQLでデータベースを構築しています。 MySQLでの構築は初めてで、いろいろ手間がかかっています。 今まではPHP+pdo+SQLiteでデータベースを構築していました。 しかし同時書き込みでデータベースがロックしてしまうSQLiteの仕様では複数人数での運用ができません。 そこでMySQLに変更しようと思ったのですが、いろいろ覚えることが多くて時間がかかってしまっています。 やはりSQLiteの構築のしやすさは魅力的です。 そこで、MySQLでの構築を一旦中止し、SQLiteで構築しようかと思っています。 PHP側で工夫してSQLiteのデータベースへの同時書き込みを無くせば運用的には問題なさそうでしょうか? セキュリティ的に不安ですがデータベースはルートより上に置きます。 助言があればお願い致します。