• ベストアンサー

InnoDBでディスクフルになった場合の対処について

InnoDBでディスクが99.9%になりました・・ DELETE文を発行しても、ibdata(ディスク容量)が減らず 打つ手がありません。 ディスクを拡張する以外にディスクフルとならない 方法はありますでしょうか? MySQLのバージョンは5.1です。

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

  • ベストアンサー
回答No.1

>DELETE文を発行しても、ibdata(ディスク容量)が減らず >打つ手がありません。 「OPTIMIZE TABLE `テーブル名`;」でテーブルを最適化すれば 容量は減ってくれるかもしれません。ただしディスク容量が無い状態で この類のコマンドを実行すると危険な場合もありますので 関係の無いファイルを消すか移動して容量にある程度余裕を持たせてから 行いましょう。 >ディスクを拡張する以外にディスクフルとならない >方法はありますでしょうか? 最終的には容量を監視するアプリ等を導入するしかないとおもいます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • phpMyadminでどうしてもinnoDBが有効になりません。

    phpMyadminでどうしてもinnoDBが有効になりません。 ローカル環境 phpMyAdmin - 2.11.4 MySQL クライアントのバージョン: 5.0.51a ストレートエンジンをMyISAMで開発を行っていましたが、 innoDBに変更することにしました。 色んなサイトを拝見しましたが、どうも有効になってくれません。 対処した項目を書きます。 (1) my.cnf内のskip-innodbをコメントアウト (2) 数回XAMPPのコントロールパネルからMySQLを再起動 (3) ログファイルib_logfileの確認 <無し>   (ログファイルが生まれていれば、xampp/mysql/data/ ← この中に生まれますよね?) (4) (3)のログファイルがあれば、それを削除しようと思いましたが見つかりませんので、   無視しました。このログファイルは、my.cnf内のinnodb_log_file_size = デフォルト値を   変更した場合、既に生まれているログファイルのサイズと異なっていらば、エラーとなるらしく、   まあ、一度もinnoDBにてテーブルを作成していないので、ログが生まれるはずもなく・・・    一応ケアーしてみました。 いかがでしょうか? これら以外に、innoDBがphpMyadminで有効になってくれない理由がありますでしょうか? かなりハマッてます・・・。お助け下さい。。

    • ベストアンサー
    • MySQL
  • Innodbデータ拡大方法を教えてください。

    こんにちは。。 教えてください。 現在Mysql 5.0.45を利用してInnodbを使っています。 初めて、MysqlのInnodbを運用しておりますが データ容量が設計以上膨らんで 下記のようになってしまいました。 ------------------------------ #ls -al ibdata1 -rw-rw---- 1 mysql mysql 31182553088 5月 1 19:51 ibdata1 # du -sh ibdata1 30G ibdata1 ------------------------------ 問題は現在、サーバー上のハードディスク容量が少ないことで、 半年以内にハードディスクがFullになってしまう恐れがあります。 それでibdata1(innodb)から分離して、新しいストレージにibdata2(innodb)拡張を検証しました。 my.cnf innodb設定部分を(defalut) innodb_data_file_path = ibdata1:10M:autoextend ↓↓ innodb_data_file_path = ibdata1:32G;/ストレージサーバ/ibdata2:50G;/ストレージサーバ/ibdata3:10M:autoextend 上記のように検証しましたが、運用上では、無理でした。 いろいろ、やって見ましたが、失敗の連続。。。 Mysqlサイトではデータをバックアップ後に再構築方法しかないと書いておりますが、 http://dev.mysql.com/doc/refman/5.1/ja/adding-and-removing.html しかしながら、現在Innodbデータが30GぐらいでバックアップとImportするには相当時間が掛かってしまい、事実上で無理ですが、、 こんな時にはどうすれば宜しいですか。。 皆さん、教えて下さい。一週間ぐらい悩んでいます。。宜しいお願いします。

  • DBの縮小について

    CentOS4.2Q&MySQL4.1.20環境にてInnoDBタイプでDBを作成しました。 テストデータを大量に突っ込んだところ、/var/lib/mysql/ibdata1という巨大(約6GB)なファイルができた為、あわててデータをdeleteしましたが、該当ファイルについて容量が縮小しません。 これは諦めるしかないのでしょうか。同様の経験のある方がいらっしゃいましたらアドバイスをお願い致します。

    • ベストアンサー
    • MySQL
  • InnoDBのAuto Incrementsの問題

    今回、InnoDBとMyISAMの Auto Increments(以下AI)の挙動に対する 対処方法についての質問になります。 以前は5.1のMySQLを使用していましたが、 最近利用しているホスティング会社の方で変更があり、 MySQL5.6へのバージョンアップが行われ、 そこから発生している問題です。 例えば testtb ------------- id item ------------- 1 aaa 2 bbb 3 ccc ------------- というテーブルがあります。(InnoDB) idはプライマリーキーでAIが設定されています。 基本的にこのテーブルでは itemのアップデートくらいで、 レコードを削除するような動作は起こりません。 ところが管理者サイドのテストの際に 下記のように、でMAX(id)を抽出してそのレコードを削除し、 AIの値を削除したMAX(id)に変更するという動作が稀に発生します。 $sql = "SELECT max(id) FROM testtb "; $result = mysql_query($sql, $con); $maxid = mysql_result($result, 0); $sql = "DELETE FROM testtb WHERE id = '{$maxid}' "; mysql_query($sql, $con); $sql = "ALTER TABLE testtb AUTO_INCREMENT = {$maxid} "; mysql_query($sql, $con); 要するにテストで登録した最新idのレコードを削除し、 AI値も元に戻してテスト前の状態に復旧するという内容です。 以前のMySQLのバージョンでは これが問題なく動作していましたが、 MySQL5.6に変わってから InnoDBの場合には、 ALTER TABLE testtb AUTO_INCREMENT = {$maxid} このSQL文を実行しても結果が全く反映されません。 phpmyadminからも実行してみましたが 実行結果にエラーはでないのですが、 同様に結果は反映されず、AI値の変更が行われません。 少しググってみて、innodb_autoinc_lock_mode の設定が関係しているのではと思い見てみると innodb_autoinc_lock_mode = 1になっていました。 ちなみにこの値は共有DBのため、 ホスティング会社の方での固有の設定で 私の方で変更はできません。 上記の問題はMyISAMでは発生しませんので、 InnoDB固有の特徴によるものかと思います。 innodb_autoinc_lock_modeの設定変更なしで 上記を解消する方法はありますでしょうか? もうMyISAMで運用するくらいしか方法が見つかりません。 それからこれに関連する内容で もう一つ質問があります。 これはphpmyadminに関する質問なのですが、 以前ですと、テーブルを選んで 上メニューの「操作」という箇所から AIの値が確認できて変更もできたかと思うのですが 現在はAIの値を操作する箇所が全く見当たりません。 確認のためにSHOW TABLE STATUSを実行する以外に 確認・変更のできる場所はありませんでしょうか? ちなみにphpmyadminのバージョンは4.0.0です。 よろしくお願いいたします。

  • MySQLのInnoDBテーブルについて

    MySQLのバージョンは4.1.13-ntです。 元々MyISAMテーブルを使用してたんですが、トランザクション機能を使いたいということでInnoDBテーブルに変えたところ、検索に凄く時間がかかるようになりました。データ件数は二百万件ぐらいです。MyISAMテーブル の時は数秒でかえってきたのが、InnoDBテーブルでは何分という結果になりました。 InnoDBは早いと聞いたのですが、データが大量になると遅くなるのでしょうか?ご教授お願い致します。

  • InnoDBへの変更でUPDATE処理ははやくなるでしょうか?

    ローカルのパソコンにXAAMPをインストールし そのなかでPHPを使用してとあるデータの処理を行っています。 # MySQL 5.1.41 + PBXT engine # PHP 5.3.1 # phpMyAdmin 3.2.4 使用しているテーブルの概要は以下のような形になっています。 id | URL | DATA | DATE 処理の内容としては PHP上でURLにアクセスしデータを取得、一部のデータを抽出しDATAに挿入(UPDATE)するという形をとっています。 処理の対象となるデータが10万行以上に及ぶため、効率良く処理を行うための様々な方法を探していたのですが、テーブルをMyISAMから行単位のロックが可能なInnoDBに変更し処理を実行しているPHPに複数のコネクションからという考えにいたりました。 私自身あまり理解していないのですが 1.現状のMyISAMではたとえ複数のコネクションからアクセスし、update処理を行ってもテーブル全体にロックがかかっているため単体のコネクションからのアクセスと比べて処理の速度はかわらない。 2.InnoDBは行単位でのロックが可能なため、UPDATE対象の行以外はロックが行われず、複数からのコネクションでアクセスすればより高速に処理が可能 というえ考えで間違いないでしょうか? また、この考えが間違いでないという前提の質問なのですが、実際InnoDBに変更して同じ処理を行ったのですが処理速度はまったく変化ありませんでした。単純にInnoDBに変更しただけではダメなのでしょうか? SQL文自体になにか変更を加える必要があるのでしょうか? わかりにくい質問かもしれませんが よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • ロックテーブルサイズ超えのエラー対処

    “ERROR 1206 (HY000): The total number of locks exceeds the lock table size”エラーが発生する場合の対処方法について教えてください。 /etc/my.cnfの“innodb_buffer_pool_size”を大きくするのが解決策ですので innodb_buffer_pool_size = 2G のように最大値に変更してみましたが、解決しませんでした。 一応、 max_connections も減らしてみましたが、解決しません。 PHPからMySQLにコネクションを接続し続けて切断するような処理はしていませんが、問題ありますでしょうか?(最初にmysql_connectで接続し、プログラムが終了するまで、何回もmysql_queryでSQL文(SELECTやUPDATE等)を実行しています。) 一概に言えませんが、データベースをバックアップでテキストで出力しても、300Mbyteくらいのデータですが、2Gのメモリを使うのでしょうか? 物理メモリを増やして innodb_buffer_pool_size を増やすしか解決方法がないのかご教授頂きたいです。 (ロックするテーブルは同時に1個しかしていないです。) 詳細な内容は提示していないので、わかりにくいですが、ご指摘頂ければ提示します。 設定や状態確認や見ておくべき点などが提案ベースでも教えて頂ければ幸いです。 すいませんがよろしくお願いします。

    • ベストアンサー
    • MySQL
  • MySQLのCHECK制約がうまくいきません。

    scoreカラムに1から100までの整数しか入らないようにするには どうしたらいいですか? MySQLのバージョンは、5.0.51 です。 以下の文は、なんのエラーもなく、INSERTされてしまいます。 CREATE TABLE scores (   score  INT NOT NULL,   CHECK ( score BETWEEN 1 AND 100 ) ) ENGINE = InnoDB; INSERT INTO scores (score) VALUES (1000); どう書けばいいのでしょうか? もしくは、MySQLのCHECK制約について詳しく書かれたページはないでしょうか?

    • ベストアンサー
    • MySQL
  • 稼動中サーバにプライマリキーを貼る場合の注意点について

    環境:MySQLのバージョンは5.1でInnoDBを使用しています。 システム稼動中に7万件のデータがあるテーブルに対し、 多くのSELECTが走っている状態でプライマリーキー貼っても 問題ないでしょうか? 又、INSERTやUPDATEが走っている状態で、 プライマリーキーを張るとデッドロックや ロック時間が長くなるなどの弊害はあるでしょうか?

    • ベストアンサー
    • MySQL
  • テーブル作成時に1289エラーが出る。

    テーブル作成時に、ERROR 1289 (HY000): The 'InnoDB' feature is disabled; you need MySQL built with 'InnoDB' to have it working というエラーが出てしまいます。 どういった原因が考えられるでしょうか? Mysql5.0.15を使っています。 CREATE文 CREATE TABLE USER ( ID BIGINT NOT NULL AUTO_INCREMENT ,NAME VARCHAR(30) ,PRIMARY KEY (ID) ) type=InnoDB;

2重印刷トラブル HL-2240D
このQ&Aのポイント
  • A5横で横方向で印刷、最初の数行が下半分に薄く、かつやや斜めに印刷されています。ページ全体にやや薄めの印刷です。トナーの警告は出ていません。
  • パソコンのOSはWindows10で、有線LAN接続です。関連するソフト・アプリおよびWi-Fiルーターの機種名は不明です。電話回線はひかり回線です。
  • ブラザー製品の2重印刷トラブルについて相談です。A5横で横方向で印刷しようとすると、最初の数行が下半分に薄く、かつやや斜めに印刷されてしまいます。ページ全体もやや薄めの印刷です。トナーの警告は表示されていません。パソコンのOSはWindows10で、有線LAN接続をしています。関連するソフトやアプリ、Wi-Fiルーターの機種名は不明です。電話回線はひかり回線です。
回答を見る