mysql数据库被修改,MySQL数据库的自动备份与被修改后的恢复方法

一、自动备份

MySQL数据库中的数据都是非常重要的数据信息,是要告诉保密的,一旦丢失,将会造成很大的损失,所以数据备份是MySQL数据库操作过程中最为重要的环节,下文中就为大家介绍MySQL数据库的自动备份。

建立数据库备份所需条件

[1] 建立自动备份脚本

在这里,为了使数据库备份和恢复的符合我们的实际要求,用一段符合要求的Shell脚本来实现整个备份过程的自动化。

[root@CentOS ~]# vi mysql-backup.sh  ← 建立数据库自动备份脚本,如下:

#!/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目录中

[3] 让数据库备份脚本每天自动运行

[root@sample ~]# crontab -e  ← 编辑自动运行规则(然后会出现编辑窗口,操作同vi)

00 03 * * * /root/mysql-backup.sh   添加这一行到文件中,让数据库备份每天凌晨3点进行

最后再测试数据库自动备份是否能够正常运行,如果能够正常运行就说明数据库自动备份完成,若不能,可能是中间那个环节出错啦,返回去,重新做一遍。希望上文中涉及到的内容对大家能够有所帮助。

二、被修改后的恢复方法

数据库被修改,可能存在着多方面的原因,被入侵、以及相应程序存在Bug等等,这里不作详细介绍。这里将只介绍在数据库被修改后,如果恢复到被修改前状态的方法。

这里,新建一个test库建立相关表用于测试,测试用数据库接着test。这里为了使刚刚接触数据库的朋友不至于理解混乱,我们登录到MySQL服务器上确认一下刚刚建立的测试用的数据库test的相关信息。

[root@CentOS ~]# 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.20

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

mysql> show databases;  ← 查看当前存在的数据库

+————-+

| Database |

+————-+

| mysql |

| test  |

+————+

2 rows in set (0.00 sec)

mysql> use test  ← 连接到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> show tables;  ← 查看test数据库中存在的表

+——————-+

| Tables_in_test |

+——————-+

| test  |

+——————-+

1 row in set (0.00 sec)

mysql> select * from test;  ← 查看数据库中的内容

+——+——————–+

| num | name  |

+——+——————–+

| 1 | Hello,CentOS|

+——+——————–+

1 row in set (0.01 sec)

mysql> exit  ← 退出MySQL服务器

Bye

然后,我们再次运行数据库备份脚本,将当前状态的数据库,再做一次备份。

[root@CentOS ~]# cd  ← 回到脚本所在的root用户的根目录

[root@CentOS ~]# ./mysql-backup.sh  ← 运行脚本进行数据库备份

接下来,我们再次登录到MySQL服务器中,对测试用的数据库test进行一些修改,以便于测试数据恢复能否成功。

[root@sample ~]# 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 15 to server version: 4.1.20

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

mysql> use test  ← 连接到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> update test set name=’Shit,Windows’;  ← 然后将test中表的值重新定义为“Shit,Windows”(原来为“Hello,CentOS”)

Query OK, 1 row affected (0.07 sec)

Rows matched: 1 Changed: 1 Warnings: 0

mysql> select * from test;  ← 确认test中的表被定义的值

+——+——————–+

| num | name  |

+——+——————-+

| 1 | Shit,Windows |  ← 确认已经将原test数据库表中的值修改为新的值“Shit,Windows”

+——+——————-+

1 row in set (0.00 sec)

mysql> exit  ← 退出MySQL服务器

Bye

以上,我们就等于模拟了数据库被篡改的过程。接下来,是数据库被“篡改”后,用备份进行恢复的方法。

[root@CentOS ~]# /bin/cp -Rf /backup/mysql/test/ /var/lib/mysql/  ← 复制备份的数据库test到相应目录

然后,再次登录到MySQL服务器上,看数据库是否被恢复到了被“篡改”之前的状态。

[root@CentOS ~]# 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 16 to server version: 4.1.20

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

mysql> use test  ← 连接到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> select * from test;  ← 查看数据库中的内容

+——+—————-+

| num | name  |

+——+—————-+

| 1| Hello,CentOS | ← 确认数据表中的内容与被修改前定义的“Hello,CentOS”一样!

+——+—————-+

1 row in set (0.01 sec)

mysql> exit  ← 退出MySQL服务器

Bye

以上结果表示,数据库被修改后,用备份后的数据库成功的将数据恢复到了被“篡改”前的状态。

测试后…

测试完成后,将测试用过的遗留信息删除。

[root@CentOS ~]# 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 19 to server version: 4.1.20

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

mysql> use test  ← 连接到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;  ← 删除test数据库中的表

Query OK, 0 rows affected (0.01 sec)

mysql> drop database test;  ← 删除测试用数据库test

Query OK, 0 rows affected (0.00 sec)

mysql> show databases;  ← 查看当前存在的数据库

+————-+

| Database |

+————-+

| mysql |  ← 确认测试用数据库test不存在、已被删除

+————-+

1 row in set (0.00 sec)

mysql> exit  ← 退出MySQL服务器

Bye

如果大家以后在工作中遇到MySQL数据库被修改,通过本文的学习,到时候就能很轻松的应对,利用上文中介绍的进行数据库的恢复。

转载:http://database.51cto.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值