綠色(sè)資源網:您身邊最放心的安(ān)全(quán)下載站! 最新軟(ruǎn)件|熱門排(pái)行(háng)|軟件分類|軟件專題|廠商大全

綠色資(zī)源網

技術教程(chéng)
您的位置:首頁數據庫類MySQL → MySQL數據庫的自動備份與數據庫被(bèi)破壞後的恢複(fù)

MySQL數據庫的自動(dòng)備份與(yǔ)數(shù)據庫被破壞後(hòu)的恢複

我要評論 2015/02/23 11:52:20 來源:綠色資源網(wǎng) 編(biān)輯:綠色資源站 [ ] 評(píng)論:0 點擊:508次

一(yī)、前言:

當數據庫服(fú)務器建立好以後,我們首(shǒu)先要做的不是(shì)考慮要在這個支持數(shù)據庫的服務器運行哪些受MySQL提攜的程序,而是當數據庫遭到破壞後,怎(zěn)樣安然恢複到最後(hòu)一次(cì)正常的狀態,使得(dé)數據的損(sǔn)失達到(dào)最(zuì)小(xiǎo)。

或者說,僅僅是數(shù)據庫服務器的建立,隻能說明(míng)它能做些什麽,並不(bú)代(dài)表它(tā)能穩定的做(zuò)些什麽。災難(nán)恢複的效率及全(quán)麵性,也是(shì)係統的穩定性的一(yī)個準因(yīn)素(sù),尤(yóu)其對於一個服務器係統(tǒng)。

這一節,介紹數據庫(kù)自(zì)動備份(fèn)以及數據庫被(bèi)破壞後的恢複的方法(fǎ)。在這裏,我們使(shǐ)用mysqlhotcopy,並(bìng)且定義一段Shell腳本來實現數據庫(kù)的自動備份,並且,讓整個數據自動備份與數據(jù)恢複過程都基於Shell。

建立數據庫備(bèi)份所(suǒ)需條(tiáo)件

[1] 建立自動備份腳本

在這裏,為了使數據庫備份和恢複的符合我們的實際要(yào)求(qiú),用一段符合要求的Shell腳本來實現整(zhěng)個備(bèi)份過程的自動化。

[root@CentOS ~]# vi mysql-backup.sh  ← 建(jiàn)立數據庫自動(dòng)備份腳本,如下:

#!/bin/bash

PATH=/usr/local/sbin:/usr/bin:/bin

# The Directory of Backup
BACKDIR=/backup/mysql

# The Password of MySQL
ROOTPASS=********  此處請將星號替換成(chéng)MySQL的(de)root密(mì)碼

# 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] 運行數據庫自(zì)動備(bèi)份腳(jiǎo)本

[root@CentOS ~]# chmod 700 mysql-backup.sh  改(gǎi)變腳本屬性,讓(ràng)其隻(zhī)能(néng)讓root用戶(hù)執行
[root@CentOS ~]# ./mysql-backup.sh   運(yùn)行腳本
[root@CentOS ~]# ls -l /backup/mysql/   確(què)認一下(xià)是否備份成功
total 8
drwxr-x--- 2 mysql mysql 4096 Sep 1 16:54 mysql   已(yǐ)成功(gōng)備份到(dào)/backup/mysql目錄中

[3] 讓數(shù)據庫備份腳本每天自動運行

[root@sample ~]# crontab -e  ← 編(biān)輯自動運行規則(然(rán)後會出現編輯窗口,操作同vi)
00 03 * * * /root/mysql-backup.sh   添加這一行到文件中(zhōng),讓數據庫(kù)備(bèi)份每天淩(líng)晨3點進行

測試自(zì)動備份(fèn)正常運轉與(yǔ)否(備份恢複的(de)方法)

這(zhè)裏,以通過實際操作的過程來(lái)介紹(shào)問題出現後的恢複方法。

[1] 當數據庫(kù)被(bèi)刪除後的恢(huī)複方法

首(shǒu)先(xiān)建(jiàn)立一個測試用的數據庫。

[root@CentOS ~]# mysql -u root -p   ← 用root登錄到MySQL服務器
Enter password:  ← 輸入(rù)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  ← 連接到這(zhè)個數據庫(kù)
Database changed

mysql> create table test(num int, name varchar(50));  ← 在數據庫(kù)中建立(lì)一個表
Query OK, 0 rows affected (0.07 sec)

mysql> insert into test values(1,'Hello,CentOS');  ← 插入一個值(zhí)到這個(gè)表(這裏以(yǐ)"Hello,CentOS"為例)
Query OK, 1 row affected (0.02 sec)

mysql> select * from test;  ← 查看數(shù)據庫中的內容
+------+-----------------+
| num | name |
+------+-----------------+
|1  | Hello,Centos |  ← 確認剛剛插入到(dào)表(biǎo)中的值的存在
+------+------------------+
1 row in set (0.01 sec)

mysql> exit  ← 退出MySQL服務器
Bye

然(rán)後,運行(háng)剛才建立的數據庫(kù)備份腳本,備份剛剛建立(lì)的(de)測試用的數據庫。

[root@sample ~]# cd ← 回到腳本(běn)所(suǒ)在(zài)的root用戶的(de)根目錄
[root@sample ~]# ./mysql-backup.sh  ← 運行(háng)腳本進行數(shù)據庫備份(fèn)

接下來,我們再次登(dēng)錄到MySQL服務器中,刪除剛剛建立(lì)的測試(shì)用的數據(jù)庫test,以便於測(cè)試數據(jù)恢複能否成功(gōng)。

[root@Centos ~]# mysql -u root -p  ← 用root登錄(lù)到(dào)MySQL服務器
Enter password:  ← 輸入MySQL的root用戶密(mì)碼
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;  ← 刪除數據中(zhōng)的表
Query OK, 0 rows affected (0.04 sec)

mysql> drop database test;  ← 刪除測試用數據庫(kù)test
Query OK, 0 rows affected (0.01 sec)

mysql> show databases;
+---------------+
| Database |
+---------------+
| mysql | 

關(guān)鍵詞(cí):MySQL數據(jù)庫

閱讀本文(wén)後您有什麽感想? 已有 人給(gěi)出評價!

  • 2 歡迎(yíng)喜歡
  • 2 白癡
  • 3 拜托
  • 3 哇
  • 2 加油
  • 2 鄙視