Linux ShellスクリプトのmysqldumpによるMySQLデータベースのバックアップ(詳細注記)
4100 ワード
スクリプトを設計するためのいくつかの設計、作成の考慮事項:このスクリプトは、mysqlのコンパイルインストールとyumまたはapt-getなどのインストールによる に適用されます.このスクリプトは、データ を上書きすることなく繰り返し実行できます.を追加して、N日前のバックアップを削除することで、ディスク容量を節約できます. mysqldumpのロック付きテーブル機能、ログのリフレッシュ、レプリケーションなどの機能 を活用
mysqldumpコマンドを使用してMySQLデータベースのスクリプトをバックアップします(注釈版はなく、本番環境で使用するのに適しています)
mysqldumpコマンドを使用してMySQLデータベースのスクリプトをバックアップします(注釈版付きで、学習とテストに適しています)
実行:
ラベル:mysqldump、バックアップMySQLデータベース、MySQLデータベースバックアップ、mysqlバックアップ、mysqlバックアップスクリプト
--end--
mysqldumpコマンドを使用してMySQLデータベースのスクリプトをバックアップします(注釈版はなく、本番環境で使用するのに適しています)
#!/bin/bash
MYSQLDBUSERNAME=root
MYSQLDBPASSWORD=password
MYSQBASEDIR=/usr/local/mysql
MYSQL=$MYSQBASEDIR/bin/mysql
MYSQLDUMP=$MYSQBASEDIR/bin/mysqldump
BACKDIR=/var/backup/db
DATEFORMATTYPE1=$(date +%Y-%m-%d)
DATEFORMATTYPE2=$(date +%Y%m%d%H%M%S)
[ -d $MYSQBASEDIR ] && MYSQDATADIR=$MYSQBASEDIR/data || MYSQDATADIR=/var/lib/mysql
[ -x $MYSQL ] || MYSQL=mysql
[ -x $MYSQLDUMP ] || MYSQLDUMP=mysqldump
[ -d ${BACKDIR} ] || mkdir -p ${BACKDIR}
[ -d ${BACKDIR}/${DATEFORMATTYPE1} ] || mkdir ${BACKDIR}/${DATEFORMATTYPE1}
DBLIST=`ls -p $MYSQDATADIR | grep / |tr -d /`
for DBNAME in $DBLIST
do ${MYSQLDUMP} --user=${MYSQLDBUSERNAME} --password=${MYSQLDBPASSWORD} --routines --events --triggers --single-transaction --flush-logs --databases ${DBNAME} | gzip > ${BACKDIR}/${DATEFORMATTYPE1}/${DBNAME}-backup-${DATEFORMATTYPE2}.sql.gz
[ $? -eq 0 ] && echo "${DBNAME} has been backuped successful" || echo "${DBNAME} has been backuped failed"
/bin/sleep 5
done
mysqldumpコマンドを使用してMySQLデータベースのスクリプトをバックアップします(注釈版付きで、学習とテストに適しています)
#!/bin/bash
# MYSQLDBUSERNAME MySQL ,
MYSQLDBUSERNAME=root
# MYSQLDBPASSWORD MySQL ,
MYSQLDBPASSWORD=password
# MYSQBASEDIR MySQL ,--prefix=$MYSQBASEDIR,
MYSQBASEDIR=/usr/local/mysql
# MYSQL mysql ,
MYSQL=$MYSQBASEDIR/bin/mysql
# MYSQLDUMP mysqldump ,
MYSQLDUMP=$MYSQBASEDIR/bin/mysqldump
# BACKDIR ,
BACKDIR=/var/backup/db
# , : - - ,
DATEFORMATTYPE1=$(date +%Y-%m-%d)
# , : ,
DATEFORMATTYPE2=$(date +%Y%m%d%H%M%S)
# MYSQBASEDIR , MYSQDATADIR $MYSQBASEDIR/data, , data , MYSQBASEDIR /var/lib/mysql,
[ -d $MYSQBASEDIR ] && MYSQDATADIR=$MYSQBASEDIR/data || MYSQDATADIR=/var/lib/mysql
# mysql , , MYSQL mysql, mysql
[ -x $MYSQL ] || MYSQL=mysql
# mysqldump , , MYSQLDUMP mysqldump, mysqldump
[ -x $MYSQLDUMP ] || MYSQLDUMP=mysqldump
#
[ -d ${BACKDIR} ] || mkdir -p ${BACKDIR}
[ -d ${BACKDIR}/${DATEFORMATTYPE1} ] || mkdir ${BACKDIR}/${DATEFORMATTYPE1}
# MySQL , mysqldatadir , ,TODO
DBLIST=`ls -p $MYSQDATADIR | grep / |tr -d /`
# ,
for DBNAME in $DBLIST
# mysqldump skip one table
# -- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.
# mysqldump --ignore-table=mysql.event
# http://serverfault.com/questions/376904/mysqldump-skip-one-table
# --routines,
# --events, mysql.event
# --triggers,
# --single-transaction, InnoDB, , , --lock-all-tables
# --flush-logs, dump
# --ignore-table, ,--ignore-table=database.table
# --master-data=2 , MySQL ,
# dump sql gzip
do ${MYSQLDUMP} --user=${MYSQLDBUSERNAME} --password=${MYSQLDBPASSWORD} --routines --events --triggers --single-transaction --flush-logs --ignore-table=mysql.event --databases ${DBNAME} | gzip > ${BACKDIR}/${DATEFORMATTYPE1}/${DBNAME}-backup-${DATEFORMATTYPE2}.sql.gz
# , 0 ,
[ $? -eq 0 ] && echo "${DBNAME} has been backuped successful" || echo "${DBNAME} has been backuped failed"
# 5s,
/bin/sleep 5
done
実行:
[root@htvm ~]# ./backupmysqlbydate.sh
mysql has been backuped successful
test has been backuped successful
[root@htvm ~]# ls /var/backup/db/2015-07-27/
mysql-backup-20150727195515.sql.gz test-backup-20150727195515.sql.gz
[root@htvm ~]#
ラベル:mysqldump、バックアップMySQLデータベース、MySQLデータベースバックアップ、mysqlバックアップ、mysqlバックアップスクリプト
--end--