Rinaldo Postado Maio 13, 2008 Denunciar Share Postado Maio 13, 2008 (editado) Boa tarde, pessoal.Creio que meu banco de dados MySql que está rodando no Server 2003 corrompeu.Ao acessar o log, tenho esta informação"corruption in the InnoDB tablespace"Uso o Mysql Front e o AdministratorHá alguma forma de recuperar os dados?Obrigado. Editado Maio 13, 2008 por Rinaldo Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Maio 13, 2008 Denunciar Share Postado Maio 13, 2008 Boa tarde, pessoal.Creio que meu banco de dados MySql que está rodando no Server 2003 corrompeu.Ao acessar o log, tenho esta informação"corruption in the InnoDB tablespace"Uso o Mysql Front e o AdministratorHá alguma forma de recuperar os dados?Obrigado.Mesmo assim você consegue acessar os dados?Se sim, faça um dump o mais rápido possível. Use o Mysqldump para isto.Mostre na integra a mensagem que aparece. Link para o comentário Compartilhar em outros sites More sharing options...
0 Rinaldo Postado Maio 14, 2008 Autor Denunciar Share Postado Maio 14, 2008 Boa tarde.Na verdade eu não consigo mais acesso a este banco.Sempre que tento, o Mysql server cai.A informação do LOG é esta.---------------------------------------------------------------------------------------------------------InnoDB: Last MySQL binlog file position 0 0, file name InnoDB: Starting in background the rollback of uncommitted transactions080513 15:32:42 InnoDB: Rolling back trx with id 0 4051265, 23 rows to undo080513 15:32:42 InnoDB: Started; log sequence number 0 490532470080513 15:32:42InnoDB: Assertion failure in thread 768 in file .\rem\rem0rec.c line 339InnoDB: We intentionally generate a memory trap.InnoDB: Submit a detailed bug report to http://bugs.mysql.com.InnoDB: If you get repeated assertion failures or crashes, evenInnoDB: immediately after the mysqld startup, there may beInnoDB: corruption in the InnoDB tablespace. Please refer toInnoDB: http://dev.mysql.com/doc/mysql/en/Forcing_recovery.htmlInnoDB: about forcing recovery.080513 15:32:43 [Note] D:\MySQL\MySQL Server 5.0\bin\mysqld-nt: ready for connections.Version: '5.0.15-nt' socket: '' port: 3306 Official MySQL binary080513 15:43:08 [Note] D:\MySQL\MySQL Server 5.0\bin\mysqld-nt: ready for connections.Version: '5.0.15-nt' socket: '' port: 3306 Official MySQL binary080513 15:44:57 [Note] D:\MySQL\MySQL Server 5.0\bin\mysqld-nt: ready for connections.Version: '5.0.15-nt' socket: '' port: 3306 Official MySQL binary Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Maio 14, 2008 Denunciar Share Postado Maio 14, 2008 Oi, 'Rinaldo'!Vamos tentar uma operação para recuperação.Siga os passoa abaixo exatamente nesta ordem com o banco parado.1 - faça uma copia do arquivo My.ini 2 - edite o arquivo My.ini atual e insira as instruções abaixo.[mysqld]innodb_force_recovery = 43 - salve o arquivo my.ini e reinicie seu banco.4 - Se ele conseguir reiniciar. vá à linha de comando (cmd), e execute o comando abaixomysqldump --opt --triggers --port=3306 --user=root --result-file=backup.sql5 - salve o arquivo backup.sql criado em outro lugar;6 – salve os arquivos de log binário em outro lugar;7 – drop seus bancos de dados;8 – restaure o backup;9 – recupere os logs binários10 – pare o servidor de banco11 – edite o arquivo my.ini retirando a linha abaixoinnodb_force_recovery = 412 – reinicie seu servidor de banco.Se esta operação falhar no item 3 o jeito vai ser salvar os arquivos de log binário em outro lugar reinstalar seu servidor de banco e recuperar os backups já existentes erecuperar os logs binários. Link para o comentário Compartilhar em outros sites More sharing options...
0 Rinaldo Postado Maio 14, 2008 Autor Denunciar Share Postado Maio 14, 2008 (editado) Olá.Será que os parâmetros estão corretos?Quando executo o Mysqldump, ele cria um backup vazio.No DOS, ele dá a mensagem de Help-me....Usage: mysqldump [OPTIONS] databse [tables]... etc. Editado Maio 14, 2008 por Rinaldo Link para o comentário Compartilhar em outros sites More sharing options...
0 Rinaldo Postado Maio 14, 2008 Autor Denunciar Share Postado Maio 14, 2008 Dá a impressão que ele quer o nome da base e da tabela. Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Maio 15, 2008 Denunciar Share Postado Maio 15, 2008 Dá a impressão que ele quer o nome da base e da tabela.Oi, Rinaldo!Estes são os parâmetros que uso em minhas rotinas de backup.Mas vamos tendar acrescentar mais estes, --all-databases e --password[=sua_senha], assim:mysqldump --opt --triggers --port=3306 --user=root --password=sua_senha --result-file=backup.sql --all-databasessubstitua o texto sua_senha pela senha do root que você usa. Se voê não usa password para acesso como root não coloque este parâmetro.Você pose suprimir o parâmetro --port=3306 se a porta usada for outra, ou informar o número da porta. Link para o comentário Compartilhar em outros sites More sharing options...
0 Rinaldo Postado Maio 15, 2008 Autor Denunciar Share Postado Maio 15, 2008 Bom dia, Denis.A coisa não está fácil.Sempre que tento acessar algum dados, perco a conexão.Agora veio a msg abaixo:mysqldump: Got error: 2013: Lost connection to mysql server during query when using LOCK TABLESQuero recuperar dados principalmente da tabela "dados" do banco "follow".Independente de conseguir, agradeço pela força.Abraços. Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Maio 15, 2008 Denunciar Share Postado Maio 15, 2008 Bom dia, Denis.A coisa não está fácil.Sempre que tento acessar algum dados, perco a conexão.Agora veio a msg abaixo:mysqldump: Got error: 2013: Lost connection to mysql server during query when using LOCK TABLESQuero recuperar dados principalmente da tabela "dados" do banco "follow".Independente de conseguir, agradeço pela força.Abraços.Tente retirar o parâmetro --opt. Já que você está sozinho na conexão não há a necessidade de lock nas tabelas e outros controles de acesso durante o backup.Se você tiver acesso via select pode usar o comando SELECT ... INTO OUTFILE ... através do utilitario de linha de comando mysql.exe:para acioná-lo usemysql -u root -pVocê obterá um prompt deste tipomysql>O comando é parecido com este que serve de exemplo no manual do mysqlSELECT a,b,a+b INTO OUTFILE "result.txt"FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'LINES TERMINATED BY "\n"FROM tabela_teste;Não se esqueça de terminar o comando com um ponto e virgula. Pode usar o * mas é melhor relatar cada atributo para forçar a busca na posição correta já que sua tabela está danificada.Tenha certeza de estar sozinho no servidor para fazer este tipo de tarefa (recuperação de dados). Link para o comentário Compartilhar em outros sites More sharing options...
0 Rinaldo Postado Maio 15, 2008 Autor Denunciar Share Postado Maio 15, 2008 É Denis.Qualquer tentativa de ler algum dado mesmo através do prompt, faz a conexão cair."Lost connection to Mysql server during query"Estou achando que já era.Na realidade, remanejei toda a estrutura do banco Mysql para um servidor reserva, podendo assim ficar a vontade para tentar. Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Maio 15, 2008 Denunciar Share Postado Maio 15, 2008 É Denis.Qualquer tentativa de ler algum dado mesmo através do prompt, faz a conexão cair."Lost connection to Mysql server during query"Estou achando que já era.Na realidade, remanejei toda a estrutura do banco Mysql para um servidor reserva, podendo assim ficar a vontade para tentar.Quando você fez o útimo backup?Você mantem os logs binários ativos desde o seu último backup?Se sim, Vamos a recuperação de seu backup usando os logs binários.Responda as questões para podermos continuar. Link para o comentário Compartilhar em outros sites More sharing options...
0 Rinaldo Postado Maio 15, 2008 Autor Denunciar Share Postado Maio 15, 2008 Olá.Eu consegui recuperar todos os dados até o dia 08/05 que eu mantinha backup.meu problema está com os 3 últimos diasTenho apenas os arquivosib_logfile0ib_logfile1ibdata1e os "frm" Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Maio 15, 2008 Denunciar Share Postado Maio 15, 2008 Oi, Rinaldo!Me informe, por favor, a data da última atualização dos arquivos ib_logfile0 e ib_logfile1. Informe, também, o conteúdo do arquivo my.ini para que eu possa saber se seu log binário foi ativado e possa orientá-lo a recuperar os dados que estão faltando desde seu último backup. Link para o comentário Compartilhar em outros sites More sharing options...
0 Rinaldo Postado Maio 16, 2008 Autor Denunciar Share Postado Maio 16, 2008 Bom dia, Denis. Tudo em ordem?Seguem as informações abaixo.Obrigado.ib_logfile0 - 13/05ib_logfile1 - 09/05# MySQL Server Instance Configuration File# ----------------------------------------------------------------------# Generated by the MySQL Server Instance Configuration Wizard### Installation Instructions# ----------------------------------------------------------------------## On Linux you can copy this file to /etc/my.cnf to set global options,# mysql-data-dir/my.cnf to set server-specific options# (@localstatedir@ for this installation) or to# ~/.my.cnf to set user-specific options.## On Windows you should keep this file in the installation directory # of your server (e.g. C:\Program Files\MySQL\MySQL Server 4.1). To# make sure the server reads the config file use the startup option # "--defaults-file". ## To run run the server from the command line, execute this in a # command line shell, e.g.# mysqld --defaults-file="C:\Program Files\MySQL\MySQL Server 4.1\my.ini"## To install the server as a Windows service manually, execute this in a # command line shell, e.g.# mysqld --install MySQL41 --defaults-file="C:\Program Files\MySQL\MySQL Server 4.1\my.ini"## And then execute this in a command line shell to start the server, e.g.# net start MySQL41### Guildlines for editing this file# ----------------------------------------------------------------------## In this file, you can use all long options that the program supports.# If you want to know the options a program supports, start the program# with the "--help" option.## More detailed information about the individual options can also be# found in the manual.### CLIENT SECTION# ----------------------------------------------------------------------## The following options will be read by MySQL client applications.# Note that only client applications shipped by MySQL are guaranteed# to read this section. If you want your own MySQL client program to# honor these values, you need to specify it as an option during the# MySQL client library initialization.#[client]port=3306[mysql]default-character-set=latin1# SERVER SECTION# ----------------------------------------------------------------------## The following options will be read by the MySQL Server. Make sure that# you have installed the server correctly (see above) so it reads this # file.#[mysqld]# The TCP/IP Port the MySQL Server will listen onport=3306#Path to installation directory. All paths are usually resolved relative to this.basedir="D:/MySQL/MySQL Server 5.0/"#Path to the database rootdatadir="D:/MySQL/MySQL Server 5.0/Data/"# The default character set that will be used when a new schema or table is# created and no character set is defineddefault-character-set=latin1# The default storage engine that will be used when create new tables whendefault-storage-engine=INNODB# Set the SQL mode to strictsql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"# The maximum amount of concurrent sessions the MySQL server will# allow. One of these connections will be reserved for a user with# SUPER privileges to allow the administrator to login even if the# connection limit has been reached.max_connections=100# Query cache is used to cache SELECT results and later return them# without actual executing the same query once again. Having the query# cache enabled may result in significant speed improvements, if your# have a lot of identical queries and rarely changing tables. See the# "Qcache_lowmem_prunes" status variable to check if the current value# is high enough for your load.# Note: In case your tables change very often or if your queries are# textually different every time, the query cache may result in a# slowdown instead of a performance improvement.query_cache_size=0# The number of open tables for all threads. Increasing this value# increases the number of file descriptors that mysqld requires.# Therefore you have to make sure to set the amount of open files# allowed to at least 4096 in the variable "open-files-limit" in# section [mysqld_safe]table_cache=256# Maximum size for internal (in-memory) temporary tables. If a table# grows larger than this value, it is automatically converted to disk# based table This limitation is for a single table. There can be many# of them.tmp_table_size=13M# How many threads we should keep in a cache for reuse. When a client# disconnects, the client's threads are put in the cache if there aren't# more than thread_cache_size threads from before. This greatly reduces# the amount of thread creations needed if you have a lot of new# connections. (Normally this doesn't give a notable performance# improvement if you have a good thread implementation.)thread_cache_size=8#*** MyISAM Specific options# The maximum size of the temporary file MySQL is allowed to use while# recreating the index (during REPAIR, ALTER TABLE or LOAD DATA INFILE.# If the file-size would be bigger than this, the index will be created# through the key cache (which is slower).myisam_max_sort_file_size=100G# If the temporary file used for fast index creation would be bigger# than using the key cache by the amount specified here, then prefer the# key cache method. This is mainly used to force long character keys in# large tables to use the slower key cache method to create the index.myisam_max_extra_sort_file_size=100G# If the temporary file used for fast index creation would be bigger# than using the key cache by the amount specified here, then prefer the# key cache method. This is mainly used to force long character keys in# large tables to use the slower key cache method to create the index.myisam_sort_buffer_size=26M# Size of the Key Buffer, used to cache index blocks for MyISAM tables.# Do not set it larger than 30% of your available memory, as some memory# is also required by the OS to cache rows. Even if you're not using# MyISAM tables, you should still set it to 8-64M as it will also be# used for internal temporary disk tables.key_buffer_size=18M# Size of the buffer used for doing full table scans of MyISAM tables.# Allocated per thread, if a full scan is needed.read_buffer_size=64Kread_rnd_buffer_size=256K# This buffer is allocated when MySQL needs to rebuild the index in# REPAIR, OPTIMZE, ALTER table statements as well as in LOAD DATA INFILE# into an empty table. It is allocated per thread so be careful with# large settings.sort_buffer_size=256K#*** INNODB Specific options ***# Use this option if you have a MySQL server with InnoDB support enabled# but you do not plan to use it. This will save memory and disk space# and speed up some things.#skip-innodb# Additional memory pool that is used by InnoDB to store metadata# information. If InnoDB requires more memory for this purpose it will# start to allocate it from the OS. As this is fast enough on most# recent operating systems, you normally do not need to change this# value. SHOW INNODB STATUS will display the current amount used.innodb_additional_mem_pool_size=2M# If set to 1, InnoDB will flush (fsync) the transaction logs to the# disk at each commit, which offers full ACID behavior. If you are# willing to compromise this safety, and you are running small# transactions, you may set this to 0 or 2 to reduce disk I/O to the# logs. Value 0 means that the log is only written to the log file and# the log file flushed to disk approximately once per second. Value 2# means the log is written to the log file at each commit, but the log# file is only flushed to disk approximately once per second.innodb_flush_log_at_trx_commit=1# The size of the buffer InnoDB uses for buffering log data. As soon as# it is full, InnoDB will have to flush it to disk. As it is flushed# once per second anyway, it does not make sense to have it very large# (even with long transactions).innodb_log_buffer_size=1M# InnoDB, unlike MyISAM, uses a buffer pool to cache both indexes and# row data. The bigger you set this the less disk I/O is needed to# access data in tables. On a dedicated database server you may set this# parameter up to 80% of the machine physical memory size. Do not set it# too large, though, because competition of the physical memory may# cause paging in the operating system. Note that on 32bit systems you# might be limited to 2-3.5G of user level memory per process, so do not# set it too high.innodb_buffer_pool_size=32M# Size of each log file in a log group. You should set the combined size# of log files to about 25%-100% of your buffer pool size to avoid# unneeded buffer pool flush activity on log file overwrite. However,# note that a larger logfile size will increase the time needed for the# recovery process.innodb_log_file_size=16M# Number of threads allowed inside the InnoDB kernel. The optimal value# depends highly on the application, hardware as well as the OS# scheduler properties. A too high value may lead to thread thrashing.innodb_thread_concurrency=8 Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Maio 16, 2008 Denunciar Share Postado Maio 16, 2008 Oi 'Rinaldo'!Não encontrei a informaçãolog-bindentro de [mysqld] em seu my.ini. Isto significa que seu log binário não estava ativado no momento do crash.Para confirmarinforme o resultado do comando abaixoSHOW VARIABLES LIKE 'log%'e verifique se aparece log_bin = ON.Se não aparecer não há como recuperar. Link para o comentário Compartilhar em outros sites More sharing options...
0 Rinaldo Postado Maio 16, 2008 Autor Denunciar Share Postado Maio 16, 2008 Olá.Está em OFF.Cara. De qualquer forma, agradeço muito.Peguei o manual de referencias do Mysql e vou estudar um pouco mais para evitar que isso ocorra novamente.Um grande abraço e obrigado novamente.Um excelente fim de semana. Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Maio 16, 2008 Denunciar Share Postado Maio 16, 2008 Olá.Está em OFF.Cara. De qualquer forma, agradeço muito.Peguei o manual de referencias do Mysql e vou estudar um pouco mais para evitar que isso ocorra novamente.Um grande abraço e obrigado novamente.Um excelente fim de semana.Obrigado e um bom final de semana para você, também.Para fechar o tópico aqui vai um alerta a todos os que lerem este post e trabalham com mysql em qualquer engine, principalmente o InnoDB.Mantenham o log binário ativo. Backup regular e log binário ativos são a chave entre a vida e a morte (administrador) do banco de dados em caso de desastre. Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Rinaldo
Boa tarde, pessoal.
Creio que meu banco de dados MySql que está rodando no Server 2003 corrompeu.
Ao acessar o log, tenho esta informação
"corruption in the InnoDB tablespace"
Uso o Mysql Front e o Administrator
Há alguma forma de recuperar os dados?
Obrigado.
Editado por RinaldoLink para o comentário
Compartilhar em outros sites
16 respostass a esta questão
Posts Recomendados