MySQL 自动备份与数据库被破坏后的恢复方法

上传人:桔**** 文档编号:498713414 上传时间:2024-02-27 格式:DOCX 页数:10 大小:21.10KB
返回 下载 相关 举报
MySQL 自动备份与数据库被破坏后的恢复方法_第1页
第1页 / 共10页
MySQL 自动备份与数据库被破坏后的恢复方法_第2页
第2页 / 共10页
MySQL 自动备份与数据库被破坏后的恢复方法_第3页
第3页 / 共10页
MySQL 自动备份与数据库被破坏后的恢复方法_第4页
第4页 / 共10页
MySQL 自动备份与数据库被破坏后的恢复方法_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《MySQL 自动备份与数据库被破坏后的恢复方法》由会员分享,可在线阅读,更多相关《MySQL 自动备份与数据库被破坏后的恢复方法(10页珍藏版)》请在金锄头文库上搜索。

1、一、前言: 当数据库服务器建立好以后,我们首先要做的不是考虑要在这个支持数据库的服务器运行哪 些受MySQL提携的程序,而是当数据库遭到破坏后,怎样安然恢复到最后一次正常的状态, 使得数据的损失达到最小。或者说,仅仅是数据库服务器的建立,只能说明它能做些什么,并不代表它能稳定的做些什 么。灾难恢复的效率及全面性,也是系统的稳定性的一个准因素,尤其对于一个服务器系统。 这一节,介绍数据库自动备份以及数据库被破坏后的恢复的方法。在这里,我们使用 mysqlhotcopy,并且定义一段Shell脚本来实现数据库的自动备份,并且,让整个数据自动 备份与数据恢复过程都基于Shell。建立数据库备份所需条

2、件1 建立自动备份脚本在这里,为了使数据库备份和恢复的符合我们的实际要求,用一段符合要求的Shell脚本来 实现整个备份过程的自动化。roo tCen tOS # vi mysql-backup.sh *-建立数据库自动备份脚本,如下:#!/bin/bashPATH二/usr/local/sbin:/usr/bin:/bin# The Directory of BackupBACKDIR二/backup/mysql# The Password of MySQLROOTPASS=*此处请将星号替换成MySQL的root密码# Remake the Directory of Backuprm -r

3、f $BACKDIRmkdir -p $BACKDIR# Get the Name of DatabaseDBLIST=ls -p /var/lib/mysql | grep / | tr -d /# Backup with Databasefor dbname in $DBLISTdomysqlhotcopy $dbname -u root -p $ROOTPASS $BACKDIR | logger -t mysqlhotcopy done2 运行数据库自动备份脚本rootCentOS # chmod 700 mysql-backup.sh 改变脚本属性,让其只能让 root 用户执行ro

4、o tCen tOS # ./mysql-backup.sh运行脚本roo tCen tOS # ls -l /backup/mysql/确认一下是否备份成功total 8drwxr-x2 mysql mysql 4096 Sep 1 16:54 mysql已成功备份到/backup/mysql目录中3 让数据库备份脚本每天自动运行roo tsample # cron tab -e 编辑自动运行规则(然后会出现编辑窗口,操作 同vi)00 03 * * * /roo t/mysql-backup.sh添加这一行到文件中,让数据库备份每天凌晨3点进行测试自动备份正常运转与否(备份恢复的方法) 这

5、里,以通过实际操作的过程来介绍问题出现后的恢复方法。1 当数据库被删除后的恢复方法首先建立一个测试用的数据库。rootCentOS # mysql -u root -p 用 root 登录到 MySQL 服务器Enter password: 输入MySQL的root用户密码Welcome to the MySQL monitor. Commands end with ; or g.Your MySQL connection id is 8 to server version: 4.1.20Type help; or h for help. Type c to clear the buffer.

6、mysql crea te dat abase test; 建立一个测试用的数据库testQuery OK, 1 row affec ted (0.00 sec)mysql use test 连接到这个数据库Database changedmysql crea te t able test(num int, name varchar(50); 在数据库中建立一个 表Query OK, 0 rows affected (0.07 sec)mysql inser tin tot es t values(1,Hello,Cen tOS); 插入一个值到这个表(这里以“ Hello,Cen tOS ”

7、 为例)Query OK, 1 row affec ted (0.02 sec)mysqlselect * from test; 查看数据库中的内容+| num | name |+11| Hello,Cen tos |确认刚刚插入到表中的值的存在+1 row in set (0.01 sec)mysqlexit 退出MySQL服务器Bye然后,运行刚才建立的数据库备份脚本,备份刚刚建立的测试用的数据库。rootsample # cd 回到脚本所在的root用户的根目录roo tsample # ./mysql-backup.sh 运行脚本进行数据库备份接下来,我们再次登录到MySQL服务器中,

8、删除刚刚建立的测试用的数据库test,以便于 测试数据恢复能否成功。rootCentos # mysql -u root -p 用 root 登录到 MySQL 服务器Enter password: 输入MySQL的root用户密码Welcome to the MySQL monitor. Commands end with ; or g.Your MySQL connection id is 13 to server version: 4.1.20Type help; or h for help. Type c to clear the buffer.mysqluse test 连接到测试用

9、的test数据库Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql drop t able t es t; 删除数据中的表Query OK, 0 rows affected (0.04 sec)mysql drop database test; 删除测试用数据库testQuery OK, 0 rows affected (0.01 sec)mysql

10、 show databases;+| Database |+| mysql |确认测试用的test数据库已不存在、已被删除+1 row in set (0.01 sec)mysqlexit 退出MySQL服务器Bye以上,我们就等于模拟了数据库被破坏的过程。接下来,是数据库被“破坏”后,用备份进行 恢复的方法。root Cen tos # /bin/cp -Rf /backup/mysql/test/ /var/lib/mysql/ 复制备 份的数据库test到相应目录roo tCen tos # chown -R mysql:mysql /var/lib/mysql/tes t/ 改变数据库

11、test的归属为mysqlroo tCen tos # chmod 700 /var/lib/mysql/tes t/ 改变数据库目录属性为700rootCentos # chmod 660 /var/lib/mysql/test/* 改变数据库中数据的属性为660然后,再次登录到MySQL服务器上,看是否已经成功恢复了数据库。rootCentOS # mysql -u root -p 用 root 登录到 MySQL 服务器Enter password: 输入MySQL的root用户密码Welcome to the MySQL monitor. Commands end with ; or

12、g.Your MySQL connection id is 14 to server version: 4.1.20Type help; or h for help. Type c to clear the buffer.mysql show dat abases; 查看当前存在的数据库+| Database |+I mysql |1 test|-确认刚刚被删除的test数据库已经成功被恢复回来!+2 rows in set (0.00 sec)mysqluse test 连接到test数据库Reading table information for completion of table a

13、nd column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysqlshow tables; 查看test数据库中存在的表+| Tablesn_test |+| test |+1 row in set (0.00 sec)mysqlselect * from test; 查看数据库中的内容+| num | name |+| 1 | Hello,CentOS |-确认数据表中的内容与删除前定义的“Hello,CentOS” 一样!+1 row in set (0.01

14、sec)mysqlexit 退出MySQL服务器Bye以上结果表示,数据库被删除后,用备份后的数据库成功的将数据恢复到了删除前的状态。 当数据库服务器建立好以后,我们首先要做的不是考虑要在这个支持数据库的服务器运行哪 些受MySQL提携的程序,而是当数据库遭到破坏后,怎样安然恢复到最后一次正常的状态, 使得数据的损失达到最小。2当数据库被修改后的恢复方法数据库被修改,可能存在着多方面的原因,被入侵、以及相应程序存在Bug等等,这里不 作详细介绍。这里将只介绍在数据库被修改后,如果恢复到被修改前状态的方法。 具体和上面所述的“数据库被删除后的恢复方法”相类似。这里,测试用数据库接着使用刚刚 在前

15、面用过的test。这里为了使刚刚接触数据库的朋友不至于理解混乱,我们再次登录到 MySQL服务器上确认一下刚刚建立的测试用的数据库test的相关信息。rootCentOS # mysql -u root -p 用 root 登录到 MySQL 服务器Enter password: 输入MySQL的root用户密码Welcome to the MySQL monitor. Commands end with ; or g.Your MySQL connection id is 14 to server version: 4.1.20Type help; or h for help. Type c

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 机械/制造/汽车 > 电气技术

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号