您的位置:首页技术文章

MySQL数据库本地备份和双机相互备份脚本

浏览:5日期:2023-10-30 15:36:33
MySQL的本地备份和双机相互备份脚本:

首先,我们需要修改脚本进行必要的配置,然后以root用户执行。

◆1. 第一执行远程备份时先用 first参数.

◆2. 本地备份用local参数

◆3. 远程备份不用参数<注意1>

注意:

需要在另一主机上的MySQL用户里添加用户。

需要配置的地方:

# define host and mysql password

REMOTE_HOST='' #远程主机名或IP

REMOTE_PASSWORD='' #远程主机的mysql中的root@本地主机 密码.

# define database path

DB_PATH='/var/lib/mysql' #本地mysql数据库路径

LOCAL_PASSWORD='' #本地mysql root用户密码

DB_BACKUP_PATH='/root/db_bk' #本地备份时数据保存的路径

NO_BACKUP_DB='' 设置本地数据库中不想备份的数据库名,用空格隔开

直接下载

#!/bin/sh

# mysqldump_all.sh

# this scripts is used to backup MySQL database bettwen tow MySQL SERVER!

# define host and mysql password

REMOTE_HOST=''

REMOTE_PASSWORD=''

# define database path

DB_PATH='/var/lib/mysql'

LOCAL_PASSWORD=''

DB_BACKUP_PATH='/root/db_bk'

# define which database no back up, write db anme escap whit space!

# example;

# NO_BACKUP_DB='yns test ps_note'

# this said that if db name is 'yns' or 'test' or 'ps_note', then not backup them!

NO_BACKUP_DB=''

# get the database name and process one by one

echo 'Start to Backup...';

#ls /var/lib/mysql > /tmp/mydb.all

if [ '$1' != 'help' ]; then

for db in `ls $DB_PATH`; do

if_backup='1'

if [ -d $DB_PATH/$db ] ; then

for noBackDB in $NO_BACKUP_DB ; do

if ( test '$db' = '$noBackDB' ); then

#echo -n '...';

if_backup='';

fi

done

if [ $if_backup ]; then

case '$1' in

first)

echo -n 'Crate db [ $db ] on $REMOTE_HOST first!'

result=`mysqladmin -h $REMOTE_HOST --password=$REMOTE_PASSWORD create $db`

if [ ! $result ]; then

echo '...Done!';

else

echo '...Fialed! check your configure plz!';

echo 'Remote host said: $result';

exit

fi

local)

# back up to localhost dir.

if [ ! -d $DB_BACKUP_PATH ]; then

mkdir $DB_BACKUP_PATH

fi

echo -n '[ $db ]....Backup to local$DB_BACKUP_PATH with gzip';

if [ -e '$DB_BACKUP_PATH/$db.gz' ]; then

mv $DB_BACKUP_PATH/$db.gz $DB_BACKUP_PATH/$db.1.gz;

fi

mysqldump --password=Walte#Ming $db | gzip > $DB_BACKUP_PATH/$db.gz

echo '...[OK]'

*)

# Do common Backup!

echo -n '[ $db ]...Do Backup! ====>> $REMOTE_HOST/$db';

mysqldump --add-drop-table $db --password=$LOCAL_PASSWORD | mysql -h $REMOTE_HOST --password=$REMOTE_PASSWORD $db

echo '....[OK]';

esac

else

echo '[ $db ]';

echo '***This database set to Not backup!...Operation CANCELED!';

fi

else

echo '[ $db ]';

echo '***Warning! Not a DataBbase. Backup Canceled***';

fi

done

else

echo 'Usage: mysqldupm_all.sh [firs|local|help]';

echo 'Some question ask for href='mailto:walteyh@sohu.com';'>walteyh@sohu.com';

fi

# Ended all backup opretion!

echo '';

echo 'Note: if there is come wrong message white MySQL, you should check yourconfigure first!';

exit

标签: MySQL 数据库