如何恢复MYSQL数据库

原来的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文件,MYSQLLOG文件一般存放在:/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数据库恢复成功。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值