Linuxの下でMysqlデータベースのバックアップとリカバリ

1826 ワード

この文書では、linuxの下でmysqlデータベースをバックアップおよびリカバリする方法について説明します.
データベースのバックアップは非常に重要です.定期的にバックアップを行うと、システムのクラッシュが発生したときに最後の正常な状態にデータを復元し、損失を最小限に抑えることができます.

一、コマンドによるバックアップ


MySQLlはmysqldumpコマンドを提供しており、データバックアップに使用できます.
# mysqldump -u root -p tm > tm_050519.sql

プロンプトに従ってパスワードを入力すると、tmデータベースのすべてのテーブル構造とデータをtm_にバックアップします.050519.sql了,总要进行バックアップ作业,如果データ量大大会占用大空间,この时gzip利用可能圧縮データ,コマンド以下:
# mysqldump -u root -p tm | gzip > tm_050519.sql.gz

システムがクラッシュし、システムを再構築すると、データをリカバリできます.
# mysqldump -u root -p tm < tm_050519.sql

圧縮ファイルから直接復元:
#gzip < tm_050519.sql.gz | mysqldump -u root -p tm

もちろん、phpMyAdminなど、より直感的なバックアップ・リカバリ機能を提供するMySQLツールはたくさんあります.しかし、mysqldumpは最も基本的で、最も汎用的だと思います.

二、crontabを利用して、システムは毎日mysqlデータベースを定期的にバックアップする


システムcrontabを用いてバックアップファイルをタイミングよく実行し、バックアップ結果を日付別に保存し、バックアップの目的を達成する.
1、バックアップファイルを保存するパスを作成する/var/backup/mysqlbak
# mkdir -p /var/backup/mysqlbak

2、/usr/sbin/bakmysqlファイルの作成
#vi /usr/sbin/bakmysql.sh

#!/bin/bash
# mysql 
cd /var/backup/mysqlbak/
dateDIR=`date +"%y-%m-%d"`
mkdir -p $dateDIR/data
for i in `/usr/local/www/mysql/bin/mysql -uroot -plin31415926 -e "show databases"  | 
grep -v "Database" | grep -v "information_schema"`
do
  /usr/local/www/mysql/bin/mysqldump -uroot -plin31415926 $i   | 
gzip  > /var/backup/mysqlbak/$dateDIR/${i}_${dateDIR}.gz
done

3、ファイルの属性を変更して実行できるようにする
# chmod +x /usr/sbin/bakmysql

4、修正/etc/crontab
# crontab -e

以下に追加
01 3 * * * root /usr/sbin/bakmysql
# 3 

これで毎日/var/backup/mysqlbakの下でバックアップしたsqlファイルを見ることができます!