mysql数据库自动备份且恢复破坏数据方法
介绍数据库自动备份以及数据库被破坏后的恢复的方法。在这里,我们使用mysqlhotcopy,并且定义一段Shell脚本来实现数据库的自动备份,并且,让整个数据自动备份与数据恢复过程都基于Shell。
建立备份所需条件
[1] 建立自动备份脚本
在这里,为了使数据库备份和恢复的符合我们的实际要求,用一段符合要求的Shell脚本来实现整个备份过程的自动化。
代码如下 | 复制代码 |
[root@CentOS ~]# vi -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用户执行 |
[3] 让数据库备份脚本每天自动运行
[root@sample ~]# crontab -e ← 编辑自动运行规则(然后会出现编辑窗口,操作同vi)
00 03 * * * /root/mysql-backup.sh 添加这一行到文件中,让数据库备份每天凌晨3点进行
测试自动备份正常运转与否(备份恢复的方法)
这里,以通过实际操作的过程来介绍问题出现后的恢复方法。
[1] 当数据库被删除后的恢复方法
首先建立一个测试用的数据库。
代码如下 | 复制代码 |
[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 8 to server version: 4.1.20 Type 'help;' or 'h' for help. Type 'c' to clear the buffer. mysql> create database test; ← 建立一个测试用的数据库test Query OK, 1 row affected (0.00 sec) mysql> use test ← 连接到这个数据库 Database changed mysql> create table test(num int, name varchar(50)); ← 在数据库中建立一个表 Query OK, 0 rows affected (0.07 sec) mysql> insert into test values(1,'Hello,CentOS'); ← 插入一个值到这个表(这里以“Hello,CentOS”为例) Query OK, 1 row affected (0.02 sec) mysql> * from test; ← 查看数据库中的内容 +------+-----------------+ | num | name | +------+-----------------+ |1 | Hello,Centos | ← 确认刚刚插入到表中的值的存在 +------+------------------+ 1 row in set (0.01 sec) mysql> exit ← 退出MySQL服务器 Bye |
然后,运行刚才建立的数据库备份脚本,备份刚刚建立的测试用的数据库。
[root@sample ~]# cd ← 回到脚本所在的root用户的根目录
[root@sample ~]# ./mysql-backup.sh ← 运行脚本进行数据库备份
接下来,我们再次登录到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 13 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; ← 删除数据中的表 Query OK, 0 rows affected (0.04 sec) mysql> drop database test; ← 删除测试用数据库test Query OK, 0 rows affected (0.01 sec) mysql> show databases; +---------------+ | Database | +---------------+ | mysql | ← 确认测试用的test数据库已不存在、已被删除 +---------------+ 1 row in set (0.01 sec) mysql> exit ← 退出MySQL服务器 Bye |
以上,我们就等于模拟了数据库被破坏的过程。接下来,是数据库被“破坏”后,用备份进行恢复的方法。
[root@Centos ~]# /bin/cp -Rf /backup/mysql/test/ /var/lib/mysql/ ← 复制备份的数据库test到相应目录
[root@Centos ~]# chown -R mysql:mysql /var/lib/mysql/test/ ← 改变数据库test的归属为mysql
[root@Centos ~]# chmod 700 /var/lib/mysql/test/ ← 改变数据库目录属性为700
[root@Centos ~]# chmod 660 /var/lib/mysql/test/* ← 改变数据库中数据的属性为660
然后,再次登录到MySQL服务器上,看是否已经成功恢复了数据库。
代码如下 | 复制代码 |
[root@CentOS ~]# mysql -u root -p ← 用root登录到MySQL服务器 |
以上结果表示,数据库被删除后,用备份后的数据库成功的将数据恢复到了删除前的状态
2] 当数据库被修改后的恢复方法
数据库被修改,可能存在着多方面的原因,被入侵、以及相应程序存在Bug等等,这里不作详细介绍。这里将只介绍在数据库被修改后,如果恢复到被修改前状态的方法。
具体和上面所述的“数据库被删除后的恢复方法”相类似。这里,测试用数据库接着使用刚刚在前面用过的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 |
以上介绍了用我们自己建立的一段Shell脚本,通过mysqlhotcopy来备份数据库的方法。
对于许多个人爱好者来说,组建服务器可能不是很考虑数据被破坏以及数据被破坏后的恢复工作。但不能不说,对于服务器来说,数据破坏后的恢复效率也是区 别业余和专业的因素之一。所以笔者建议,在您配置好了Web服务器以及MySQL服务器等等的时候,千万不要急于应用它,而要想办法在有限的(硬件、软件)条件下使它“坚不可摧”之后,再考虑应用的问题。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











일부 Windows 10 사용자는 시스템과 함께 제공되는 자동 백업 기능이 사용 중에 활성화되는 것을 발견했습니다. 이 기능은 데이터 보안을 보장하는 데 도움이 되지만 일부 사용자는 저장 공간 고려 사항이나 기타 이유로 인해 계속 활성화할 필요성을 느끼지 못할 수도 있습니다. 기능. 따라서 Windows 10 시스템에서 자동 백업 기능을 끄려면 올바른 작업 단계가 특히 중요합니다. 다음으로, 이 기사에서는 이러한 요구가 있는 사용자의 참조 구현을 위해 Win10 시스템의 자동 백업 기능을 끄는 방법을 자세히 소개합니다. 닫기 방법 1. "win+i" 단축키를 사용하여 "설정" 페이지를 빠르게 열고, 새 페이지에 들어간 후 "업데이트 및 보안" 옵션을 클릭해야 합니다. 2. 열리는 새 인터페이스에서 왼쪽 열을 클릭합니다.

Quark Network Disk 소프트웨어도 사용하고 계시나요? 그런데 Quark Network Disk를 자동으로 백업하는 방법을 알고 계십니까? 아래 편집기에서 Quark Network Disk의 자동 백업 방법을 알려드리겠습니다. 아래에서 살펴보겠습니다. 데스크탑에서 Quark Network Disk를 엽니다. 내 아바타를 클릭하여 기본 인터페이스로 들어갑니다. Quark Network Disk 자동 백업 옵션을 클릭하여 켜십시오.

인터넷 애플리케이션의 인기로 인해 데이터베이스 백업은 웹 사이트 운영 및 유지 관리, 데이터 보안에 특히 중요합니다. 수동 백업은 확실한 보호 기능을 제공할 수 있지만, 데이터 양이 많은 웹사이트의 경우 수동 백업은 확실히 번거롭고 시간이 많이 걸립니다. 현재 자동 백업 방법은 필수 선택이 되었습니다. 가장 널리 사용되고 이해하기 쉬운 자동 백업 방법 중 하나는 PHP 스크립트를 사용하여 MySQL 데이터베이스를 자동으로 백업하는 것입니다. 이 기사에서는 PHP를 사용하여 MySQL 데이터베이스의 자동 백업을 구현하는 방법을 소개합니다. 1. 내 백업

1. Xiaomi WiFi를 입력하고 오른쪽 하단에 있는 도구 상자를 클릭합니다. 2. 라우팅 설정을 찾습니다. 3. 라우터 구성 백업을 입력합니다. 4. 라우터 설정의 자동 백업을 켜려면 클릭하세요.

1. 그림과 같이 [Win+R] 키를 눌러 실행을 엽니다. 2. 그림과 같이 명령줄 창을 열려면 다음 창에 cmd를 입력합니다. 3. 명령줄에 robocopy를 입력합니다. 해당 매개변수 설명은 그림과 같습니다. 4. 예를 들어, E 드라이브 아래의 데모 폴더를 10분마다 자동으로 H 드라이브 아래의 데모 폴더에 백업하려면 다음 명령을 사용하십시오: robocopyE: decoD:demo/R:0/ W:0/MOT:10; 그림과 같이: 5. 위의 매개변수 R은 백업 실패 후 재시도 횟수를 나타내고, W는 재시도 간격을 나타내며, MOT는 시간 간격을 나타냅니다. 자동 백업의 경우 그림과 같습니다. 6 자동 백업이 완료되면 D 드라이브 아래에 자동으로 백업된 폴더가 표시됩니다.

인터넷 애플리케이션에 Redis 데이터베이스가 광범위하게 적용됨에 따라 점점 더 많은 기업과 개발자가 Redis 데이터베이스의 백업 및 보호에 관심을 갖기 시작했습니다. 자동 백업은 Redis의 보안을 보장하는 효과적인 수단입니다. 이 기사에서는 PHP를 사용하여 Redis 데이터베이스의 자동 백업을 구현하는 방법을 소개합니다. 1. Redis 데이터베이스 백업 Redis는 오픈 소스 키-값 데이터베이스로 기본 데이터 유형을 지원할 뿐만 아니라 목록, 해시 테이블, 세트와 같은 복잡한 데이터 구조도 지원합니다. Redis 백업은 다음과 같습니다.

Baidu Netdisk를 사용하는 과정에서 사진을 자동으로 백업할 수 있는 기능을 설정할 수 있습니다. 관심 있는 친구들이 저와 함께 구경해 보세요. 휴대폰에서 Baidu Netdisk 애플리케이션을 연 후 메인 인터페이스로 들어간 후 오른쪽 하단에 있는 "내" 버튼을 클릭하여 개인 센터 페이지로 들어갑니다. 다음으로, 페이지 하단에서 "설정 및 서비스" 옵션을 찾아 클릭하여 들어가고 "설정" 기능을 선택하여 설정 페이지를 엽니다. 2. 설정 페이지에 "자동 백업 설정"이 있습니다. 클릭하여 들어갑니다. 3. 다음으로 입력된 페이지에서 "앨범 백업" 항목을 클릭하여 들어갑니다. 4. 새 페이지로 이동하면 "사진 자동 백업" 뒤에 있는 전환 버튼이 표시됩니다. 해당 페이지의 원형 슬라이더를 클릭하여 설정하세요.

인터넷 기술의 지속적인 발전으로 인해 데이터베이스의 중요성은 더욱 부각되고 있습니다. 데이터베이스는 데이터를 저장하는 중요한 매개체입니다. 데이터베이스에 장애가 발생하면 데이터 손실, 데이터 불일치 등의 문제로 인해 기업에 막대한 손실이 발생합니다. 데이터 보안과 무결성을 보장하려면 백업 솔루션을 채택해야 합니다. 이 기사에서는 PHP를 사용하여 MongoDB 데이터베이스의 자동 백업을 구현하여 기업이 데이터 보안을 향상시키는 방법을 소개합니다. 1. MongoDB 백업 소개 MongoDB는 바다를 저장할 수 있는 새로운 비관계형 데이터베이스입니다.
