mysql备份与还原详解

发布时间:2020-03-26编辑:脚本学堂
mysql备份与还原详解

mysql备份与还原详解

一、tar备份:
1、备份数据库
 

复制代码 代码如下:
/etc/rc.d/init.d/mysqld stop
tar cvfz phpbb2_db_20020601.tgz phpbb2
/etc/rc.d/init.d/mysqld start

2、还原数据库:
 

复制代码 代码如下:
/etc/rc.d/init.d/mysqld.stop
mv phpbb2 phpbb2_error
tar xvfz phpbb2_db_20020601.tgz
/etc/rc.d/init.d/mysqld.start

二、每日24:00自动备份数据库
利用系统crontab来定时执行备份文件,按日期对备份结果进行保存,达到备份的目的。

1、创建保存备份文件的路径/mysqldata
  #mkdir /mysqldata

2、创建/usr/sbin/bakmysql文件
查找数据库库文件的路径:
一般都是:/var/lib/mysql,或者,/usr/local/mysql/var
查找方法:
(1)、/usr/local/mysql/bin/mysql -u root -p   进入数据库
(2)、输入:show databases;
(3)、这是可以查看到所有的数据库,然后
(4)、find / -name db(你想查找的数据库名)

之后:#vi /usr/sbin/bakmysql 输入
 

复制代码 代码如下:
rq=` date +%Y%m%d `
tar zcvf /mysqldata/mysql$rq.tar.gz /var/lib/mysql
 

保存退出。

3、修改文件属性,使其可执行
 

复制代码 代码如下:
# chmod +x /usr/sbin/bakmysql

新建任务:
首先查看一下crontab的任务列表:
crontab -l
然后新建:
crontab -e
添加一行
 

复制代码 代码如下:
00 04 * * * root /usr/sbin/bakmysql

表示每天24点钟执行备份

4、重新启动crond
 

复制代码 代码如下:
# /etc/rc.d/init.d/crond restart

完成。
这样每天你在/mysqldata可以看到这样的文件
mysql20040619.tar.gz

三、dump备份恢复

1、备份数据库:
 

复制代码 代码如下:
mysqladmin -uroot -p flush-logs     生成一个mysql-bin.00000X文件,最好定期执行
mysqldump phpbb2 --flush-logs -uroot -p --opt > phpbb2_20020601.sql

2、修改数据库,比如:
 

复制代码 代码如下:
 mysql> create table name1 (id int(3) auto_increment not null primary key, xm char(8),xb char(2),csny date);

3、还原数据库:
 

复制代码 代码如下:
shell > mv phpbb2 phpbb2.bak
[root@bogon mysql]# mysql -uroot -p123456
mysql > create database phpbb2;
mysql> flush privileges;
shell > mysql phpbb2 -uroot -p123456 < phpbb2_20020601.sql
 

这是数据库已经还原回去了。理解:其实dump命令是导入导出数据库,对数据库命令进行记录,然后覆盖以后操作,就相当于命令重新执行了一便,已达到备份恢复的目的。