您的位置:首页 > 数据库 > MySQL

如何恢复MYSQL数据库

2015-01-07 04:17 211 查看
原来的MYSQL机器:172.17.16.27
新的MYSQL机器:172.17.16.222
 
目的:将27号机的WIKI备份,然后恢复到222号机
 
先在27号机写一个备份wiki数据库的脚本,内容如下:

#!/bin/sh
#datestr=`date +%a`
datestr=`date +%y%m%d`
bugssource=mysql.bugs-$datestr.tar.gz
wikisource=mysql.wiki-$datestr.tar.gz
 
cd /backup
mysqlhotcopy -u root -p ecvision bugs /backup
mv bugs mysql.bugs
mysqlhotcopy -u root -p ecvision wiki /backup
mv wiki mysql.wiki
 
tar zcvf $bugssource mysql.bugs
tar zcvf $wikisource mysql.wiki
 
rm -rf /backup/mysql.bugs
rm -rf /backup/mysql.wiki
 
ftp -niv 172.17.16.8 <<EOF
user ecvision ecv1234
bin
cd 27serverbackup
put $bugssource
put $wikisource
bye
 
EOF
 

 
 
 
在222号机,将mysql.wiki-20081230.tar.gz解压,将解压后的所有文件(*.frm,*.MYD,*.MYI)拷到wiki数据库的目录下(/usr/local/mysql/var/wiki), 创建wiki用户,

创建用户名和密码:

GRANT ALL ON wiki.* TO wiki@"localhost" IDENTIFIED BY 'wiki';

 

只能以localhost的主机方式访问 的时候, 加:

mysql> Grant all privileges on wiki.* to 'wiki'@'%' identified by 'wiki' with
grant option;

mysql> flush privileges;  (运行为句才生效,或者重启MySQL)

 

 
这时,由于原来的DB其存储引擎是Innodb,所以你访问它的表时会报:
:#1146 - Table 'wiki.user' doesn't exist.
 
这时,我们要把原来的数据库的ibdata1文件拷过来,这是表空间文件,Innodb的数据库其表的数据实际是放到这个文件中去的。
 
修改my.conf配置文件(windows下是my.ini文件),在[mysqld]部分,将datadir=/usr/local/mysql/var   加上(ibdata1所在的目录):
/etc/my.cnf的内容:

# The MySQL server

[mysqld]

port            = 3306

socket          = /usr/local/mysql/tmp/mysql.sock

skip-locking

key_buffer = 16M

max_allowed_packet = 1M

table_cache = 64

sort_buffer_size = 512K

net_buffer_length = 8K

read_buffer_size = 256K

read_rnd_buffer_size = 512K

myisam_sort_buffer_size = 8M

default_character_set=utf8

datadir=/usr/local/mysql/var

 
这时再启动MYSQLD,启动失败,我们再来查看LOG文件,MYSQL的LOG文件一般存放在:/usr/local/mysql/var/主机名.err,如主机名是testdd,则MYSQL的启动时的LOG文件放在:/usr/local/mysql/var/ testdd.err
我们来查看LOG文件的最后100行:
 
[root@testdd var]# tail -100 testdd.err
我们发现有下面的内容:

081230 15:58:54  mysqld started

081230 15:58:54  InnoDB: Operating system error number 13 in a file operation.

InnoDB: The error means mysqld does not have the access rights to

InnoDB: the directory.

InnoDB: File name ./ibdata1

InnoDB: File operation call: 'open'.

InnoDB: Cannot continue operation.

081230 15:58:54  mysqld ended

很明显,MYSQL这个用户对文件ibdata1没有操作权限,所以要更改OWNER和文件的读写权限:

chown –R mysql.mysql   ibdata1

chmod 660 ibdata1

然后再启动MYSQL,这下成功了:
/etc/init.d/mysqld start
 
我们再来查看wiki表的数据,可以成功查出来了。至此,MYSQL数据库恢复成功。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: