mysql:15974
From: "Atsushi.Shizawa" <"Atsushi.Shizawa" <atsushi.shizawa@xxxxxxxxxx>>
Date: Fri, 14 Jun 2013 15:11:19 +0900
Subject: [mysql 15974] Re: テーブルのレストアが出来なくて困っています
初穂太郎さん ハングした挙句、再始動もエラーで不可とか、 想像しただけで焦りますよね。 ホットスタンバイを立てられる際には、 MySQL5.6以降で実装された、 「遅延レプリケーション」 の活用もお勧め致します。 設定範囲内で遅延してSLAVEへ更新が波及するので、 操作ミスなどで消失した場合の救済にはうってつけだと思いまので。 但し、5.6以降の場合、 DBの文字コードはUTF8で統一される事を同時にお勧め致します。 →正しくINDEXが使用されず、フルスキャンとなるケースが有ります。 →EXPLAINと実行時の挙動が違うので発覚し辛いです。 以上、 蛇足的な情報ですが、 お役に立てればと思います。 (2013/06/14 11:51), ram wrote: > 志澤様 > ご丁寧に回答を頂きまして有難うございました。 > > 仰る通り、別インスタンスを作ってバックアップしておいたほうが確かに楽ですね。 > 取りあえずミッションクリティカルなシステムではないので、なんとかなりそう > ですが、 > 適当なデータベース設計で軽い気持ちで作ったシステムがいつものまにかデータ > 容量が > 増えてきてデータベースが壊れて止まってしまったら、と思うとぞっとします。 > > まだまだ知識が足りないことを痛感します。 > > どうもありがとうございました。 > > (2013/06/11 18:21), Atsushi.Shizawa wrote: >> 初穂太郎さん >> >> お返事遅くなり、申訳有りませんでした。 >> >> 以下の様な状況(dumpファイルのみ)であれば、 >> LOAD DATA INFILE〜では戻らないと思います。 >> →dumpファイルは結局テキストなので、 >> そこから生成しようと思えば出来るとは思いますが。 >> >> 自分がイメージしたケースは、 >> ホットスタンバイ的な別インスタンスが有れば、 >> そちらからの方が速いはず。 >> と言う、データ回復優先で回答させて頂きました。 >> >> ともあれ、 >> 無事に復旧された様子で何よりです。 >> >> >> (2013/06/06 19:47), ram wrote: >> >>> 志澤さん 早々のコメント有難うございます。 >>> >>> 私の理解が足りないのかもしれませんが、 >>> 過去の状態のデータはmysqldumpで出力されたテキストファイルしかないので、 >>> これを、別名のテーブルで作成し、現行のテーブルとマッチングしながら元に >>> 戻そうと考えています。 >>> >>> mysqldumpの結果のSQLのインポート、もしくは、 >>> 現在のデータのエクスポート〜インポート(LOAD DATA)では戻らないと思うので >>> すが、 >>> そういう意味ではないのでしょうか? >>> >>> 幸い2バイト文字を含まない列ばかりのテーブルでしたので、 >>> 教えて頂いた--forceオプションでなんとか復元はできました。 >>> 有難うございます。 >>> >>> 初穂太郎 >>> >>> >>> (2013/06/06 17:48), Atsushi.Shizawa wrote: >>>> 始めまして。 >>>> 志澤と申します。 >>>> >>>> 肝心なエラー要因は今一つ理解できてませんが、 >>>> 現状、バックアップはファイルのみでしょうか。 >>>> お急ぎとの事ですので、DBサーバーが起動しているのであれば、 >>>> INTO OUTFILEでエクスポートして、それをLOAD DATAの方が手っ取り早いと見込 >>>> まれます。 >>>> →件数にもよりますが、「--force]オプションが無い様子なので。 >>>> >>>> 又、 >>>> mysqldumpのデフォルトはUTF8ですが、運用環境はCP932との事。 >>>> であれば、mysqldump & インポートバッチのオプションには、 >>>> default_character_set=binary >>>> を追加しておく事をお勧め致します。 >>>> 文字化けの要因ともなりますので。 >>>> >>>> 以上、中途半端なお答えにて恐縮です。 >>>> >>>> (2013/06/06 17:08), ram wrote: >>>>> MYSQLのデータベース初心者兼管理者です。 >>>>> 誤ってデータを消してしまい、バックアップでデータを戻そうとしているのですが、 >>>>> mysqldumpで吐き出したSQLを実行するとエラーが出てきて困っております。 >>>>> 基幹システムではないのですが、ちょっと復旧を焦っております。 >>>>> >>>>> ◆実行環境 >>>>> MYSQL5.1.41 Windows2003/R3 >>>>> >>>>> Server charcterset = cp932 >>>>> Client charcterset = cp932 >>>>> >>>>> ◆現象 >>>>> mysqldump --opt --add-drop-table --add-locks --user=root --password=*** dbname > W:\backupsql.txt >>>>> をバッチで実行して出力されるのが以下のファイルです。 >>>>> >>>>> -- MySQL dump 10.13 Distrib 5.1.41, for Win32 (ia32) >>>>> -- >>>>> -- Host: localhost Database: dbname >>>>> -- ------------------------------------------------------ >>>>> -- Server version 5.1.41-community >>>>> >>>>> /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; >>>>> /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; >>>>> /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; >>>>> /*!40101 SET NAMES utf8 */; >>>>> /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; >>>>> /*!40103 SET TIME_ZONE='+00:00' */; >>>>> /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; >>>>> /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; >>>>> /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; >>>>> /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; >>>>> -- >>>>> -- Table structure for table `ckbtbl` >>>>> -- >>>>> >>>>> DROP TABLE IF EXISTS `ckbtbl`; >>>>> /*!40101 SET @saved_cs_client = @@character_set_client */; >>>>> /*!40101 SET character_set_client = utf8 */; >>>>> CREATE TABLE `ckbtbl` ( >>>>> `CKBKBID` varchar(10) NOT NULL DEFAULT '', >>>>> 中略 >>>>> `CKBGNCN` decimal(7,2) DEFAULT NULL, >>>>> `UPDATE_IDENT` decimal(7,0) DEFAULT NULL, >>>>> PRIMARY KEY (`CKBKBID`,`CKBKBCN`) >>>>> ) ENGINE=InnoDB DEFAULT CHARSET=cp932; >>>>> /*!40101 SET character_set_client = @saved_cs_client */; >>>>> >>>>> これを >>>>> mysql --default-character-set=cp932 dbname -u user -p*** < W:\backupsql.txt >>>>> と実行します。 >>>>> (/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; >>>>> などのコメント部分は全て削っています。) >>>>> >>>>> ところが、 >>>>> ERROR 1231 (42000) at line 36: >>>>> Variable 'character_set_client' can't be set to the value of 'NULL' >>>>> というエラーが出てきます。line 36というのは下記の行です。 >>>>> /*!40101 SET character_set_client = @saved_cs_client */; >>>>> >>>>> SET character_set_client = @saved_cs_client >>>>> という行をコメントアウトしますが、結果は同じです。 >>>>> >>>>> 何が間違っているのでしょうか? >>>>> アドバイス頂ければ有難いです。 >>>>> >>>>> 初穂太郎 >>>>> >>>>> >>>>> >>>>> >>> >> >> > > > -- □##############################□ (株)星光堂HD 情報システム部 開発グループ 志澤 敦 TEL:03-6381-2922 (内線:844) FAX:03-3980-8630 e-mail:atsushi.shizawa@xxxxxxxxxx
15966 2013-06-06 17:08 [ram <ram@xxxxxxxxxx>] テーブルのレストアが出来なくて困っています 15967 2013-06-06 17:48 ┗["Atsushi.Shizawa" <a] 15968 2013-06-06 19:47 ┗[ram <ram@xxxxxxxxxx>] 15969 2013-06-11 18:21 ┗["Atsushi.Shizawa" <a] 15970 2013-06-14 11:51 ┗[ram <ram@xxxxxxxxxx>] -> 15974 2013-06-14 15:11 ┗["Atsushi.Shizawa" <a]