MySQL数据库的自动备份与数据库被破坏后的恢复
一、前言:
当数据库服务器建立好以后,我们首先要做的不是考虑要在这个支持数据库的服务器运行哪些受MySQL提携的程序,而是当数据库遭到破坏后,怎样安然恢复到最后一次正常的状态,使得数据的损失达到最小。
或者说,仅仅是数据库服务器的建立,只能说明它能做些什么,并不代表它能稳定的做些什么。灾难恢复的效率及全面性,也是系统的稳定性的一个准因素,尤其对于一个服务器系统。
这一节,介绍数据库自动备份以及数据库被破坏后的恢复的方法。在这里,我们使用mysqlhotcopy,并且定义一段Shell脚本来实现数据库的自动备份,并且,让整个数据自动备份与数据恢复过程都基于Shell。
建立数据库备份所需条件
[1] 建立自动备份脚本
在这里,为了使数据库备份和恢复的符合我们的实际要求,用一段符合要求的Shell脚本来实现整个备份过程的自动化。
[root@CentOS ~]# vi mysql-backup.sh & larr; 建立数据库自动备份脚本,如下:
#!/bin/bash
PATH=/usr/local/sbin:/usr/bin:/bin
# The Directory of Backup
BACKDIR=/backup/mysql
# The Password of MySQL
ROOTPASS=******** 此处请将星号替换成MySQL的root密码
# Remake the Directory of Backup
rm -rf $BACKDIR
mkdir -p $BACKDIR
# Get the Name of Database
DBLIST=`ls -p /var/lib/mysql | grep / | tr -d /`
# Backup with Database
for dbname in $DBLIST
do
mysqlhotcopy $dbname -u root -p $ROOTPASS $BACKDIR | logger -t mysqlhotcopy
done
#!/bin/bash
PATH=/usr/local/sbin:/usr/bin:/bin
# The Directory of Backup
BACKDIR=/backup/mysql
# The Password of MySQL
ROOTPASS=******** 此处请将星号替换成MySQL的root密码
# Remake the Directory of Backup
rm -rf $BACKDIR
mkdir -p $BACKDIR
# Get the Name of Database
DBLIST=`ls -p /var/lib/mysql | grep / | tr -d /`
# Backup with Database
for dbname in $DBLIST
do
mysqlhotcopy $dbname -u root -p $ROOTPASS $BACKDIR | logger -t mysqlhotcopy
done
[2] 运行数据库自动备份脚本
[root@CentOS ~]# chmod 700 mysql-backup.sh 改变脚本属性,让其只能让root用户执行
[root@CentOS ~]# ./mysql-backup.sh 运行脚本
[root@CentOS ~]# ls -l /backup/mysql/ 确认一下是否备份成功
total 8
drwxr-x--- 2 mysql mysql 4096 Sep 1 16:54 mysql 已成功备份到/backup/mysql目录中
[root@CentOS ~]# ./mysql-backup.sh 运行脚本
[root@CentOS ~]# ls -l /backup/mysql/ 确认一下是否备份成功
total 8
drwxr-x--- 2 mysql mysql 4096 Sep 1 16:54 mysql 已成功备份到/backup/mysql目录中
[3] 让数据库备份脚本每天自动运行
[root@sample ~]# crontab -e & larr; 编辑自动运行规则(然后会出现编辑窗口,操作同vi)
00 03 * * * /root/mysql-backup.sh 添加这一行到文件中,让数据库备份每天凌晨3点进行
00 03 * * * /root/mysql-backup.sh 添加这一行到文件中,让数据库备份每天凌晨3点进行
测试自动备份正常运转与否(备份恢复的方法)
这里,以通过实际操作的过程来介绍问题出现后的恢复方法。
[1] 当数据库被删除后的恢复方法
首先建立一个测试用的数据库。
[root@CentOS ~]# mysql -u root -p & larr; 用root登录到MySQL服务器
Enter password: & larr; 输入MySQL的root用户密码
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8 to server version: 4.1.20
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> create database test; & larr; 建立一个测试用的数据库test
Query OK, 1 row affected (0.00 sec)
mysql> use test & larr; 连接到这个数据库
Database changed
mysql> create table test(num int, name varchar(50)); & larr; 在数据库中建立一个表
Query OK, 0 rows affected (0.07 sec)
mysql> insert into test values(1,'Hello,CentOS'); & larr; 插入一个值到这个表(这里以"Hello,CentOS"为例)
Query OK, 1 row affected (0.02 sec)
mysql> select * from test; & larr; 查看数据库中的内容
+------+-----------------+
| num | name |
+------+-----------------+
|1 | Hello,Centos | & larr; 确认刚刚插入到表中的值的存在
+------+------------------+
1 row in set (0.01 sec)
mysql> exit & larr; 退出MySQL服务器
Bye
Enter password: & larr; 输入MySQL的root用户密码
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8 to server version: 4.1.20
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> create database test; & larr; 建立一个测试用的数据库test
Query OK, 1 row affected (0.00 sec)
mysql> use test & larr; 连接到这个数据库
Database changed
mysql> create table test(num int, name varchar(50)); & larr; 在数据库中建立一个表
Query OK, 0 rows affected (0.07 sec)
mysql> insert into test values(1,'Hello,CentOS'); & larr; 插入一个值到这个表(这里以"Hello,CentOS"为例)
Query OK, 1 row affected (0.02 sec)
mysql> select * from test; & larr; 查看数据库中的内容
+------+-----------------+
| num | name |
+------+-----------------+
|1 | Hello,Centos | & larr; 确认刚刚插入到表中的值的存在
+------+------------------+
1 row in set (0.01 sec)
mysql> exit & larr; 退出MySQL服务器
Bye
然后,运行刚才建立的数据库备份脚本,备份刚刚建立的测试用的数据库。
[root@sample ~]# cd ← 回到脚本所在的root用户的根目录
[root@sample ~]# ./mysql-backup.sh & larr; 运行脚本进行数据库备份
[root@sample ~]# ./mysql-backup.sh & larr; 运行脚本进行数据库备份
接下来,我们再次登录到MySQL服务器中,删除刚刚建立的测试用的数据库test,以便于测试数据恢复能否成功。
[root@Centos ~]# mysql -u root -p & larr; 用root登录到MySQL服务器
Enter password: & larr; 输入MySQL的root用户密码
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 13 to server version: 4.1.20
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> use test & larr; 连接到测试用的test数据库
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> drop table test; & larr; 删除数据中的表
Query OK, 0 rows affected (0.04 sec)
mysql> drop database test; & larr; 删除测试用数据库test
Query OK, 0 rows affected (0.01 sec)
mysql> show databases;
+---------------+
| Database |
+---------------+
| mysql |
Enter password: & larr; 输入MySQL的root用户密码
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 13 to server version: 4.1.20
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> use test & larr; 连接到测试用的test数据库
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> drop table test; & larr; 删除数据中的表
Query OK, 0 rows affected (0.04 sec)
mysql> drop database test; & larr; 删除测试用数据库test
Query OK, 0 rows affected (0.01 sec)
mysql> show databases;
+---------------+
| Database |
+---------------+
| mysql |
关键词:MySQL数据库
相关阅读
- 02-25Python连接mysql数据库、python使用mysqldb连接数据库
- 11-30ubuntu 13.04 安装mysql数据库教程
- 09-02CentOS服务器中安装MySQL数据库
- 08-14MySQL数据库怎么实现远程连接访问
- 05-13MySQL数据库INNODB 表损坏修复处理过程
- 05-05java连接mysql数据库乱码的解决方案
- 04-07CentOS6.4系统中Mysql数据库卸载、安装与配置教程
- 01-12使用mysqldump工具备份还原Mysql数据库实例及参数详细说明
- 04-04快速让MySQL数据库服务器支持远程连接
- 02-23MYSQL数据库实用学习资料之常用命令集合
阅读本文后您有什么感想? 已有 人给出评价!
用户评论
热门评论
最新评论
相关软件
热点图文
- 01-05mysql安装图解、mysql5.6.10安装详细图文教程
- 01-04Mysql 安装问题。提示MySQL Server 5.1 -- Error 1335.
- 11-22service mysql start出错,mysql不能启动,解决mysql: unrecognized service错误
- 01-11Can't connect to local MySQL server through socket '/tmp/mysql.sock'(2)
- 11-24wdcp修改mysql数据库root密码时提示原密码不对
- 05-13MySQL数据库INNODB 表损坏修复处理过程
- 07-18MySql5.0 Table错误:is marked as crashed and last (automatic?) repair failed
- 08-03如何查询mysql数据库中哪些表的数据量最大?
- 01-24MYSQL-Front中文版使用图文教程
- 04-04Win7系统安装MySQL5.5.21图解教程