自动备份MSYQL数据库
时间:2009-02-22 来源:pop_star
文章下载地址http://blogimg.chinaunix.net/blog/upfile2/090222163754.rar
实现环境
1台MYSQL服务器(简称A机)
1台备份服务器(简称B机,配置不用太高,建议做RAID1)
注意: 以上两台机器均安装LINUX系统 实现的服务器
mysqldump 用来备份数据库SQL语句
crontab 用来定时执行数据库备份脚本
scp 用来实现将文件传递 实现过程
在A上定时执行数据库备份脚本
A机将备份的数据库文件传递到B机 操作步骤
1) 设置无需密码就可以由A机访问B机
用root身份在A机上输入如下命令
# ssh-keygen -t dsa (生成密钥)
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa): 直接按下回车键即可
Enter passphrase (empty for no passphrase): 直接按下回车键即可
Enter same passphrase again: 直接按下回车键即可
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
passphrase(密钥保护) 保留为空,否则使用ssh时将要求输入passphrase(密钥保护) # cd /root/.ssh
# echo id_dsa.pub >> authorized_keys
# chmod 644 authorized_keys
# scp –pr authorized_keys IP:/root/.ssh/ 此处IP为B机器IP地址
# rm –f authorized_keys
# ssh IP “mkdir /usr/local/backup” (此处IP为B机器IP地址,此时SSH登陆B机器时就无需输入密码了) 2) 在A机器上建立数据库备份脚本,名为mysql-backup.sh,脚本内容如下
#!/bin/bash
# 日期: 2008年-4月-25日
# 本脚本用来自动备份MYSQL数据库SQL语句 # 定义服务器IP和服务器名称对应关系
SER_INFO=(192.168.1.201=ggtv_wap \
192.168.1.229=tj_G.net \
192.168.1.21=tian_jin) # 提取当前主机公网IP地址
netcfg=/etc/sysconfig/network-scripts/ifcfg-eth
IPADD=`grep IPADDR $netcfg[0-1] | awk -F= '{print $2}' | grep -e 192.168.1. -e 172.16.105.` # 判断当前主机的名称
for ipadd in ${SER_INFO[@]}
do
IP=`echo $ipadd | cut -d= -f1`
if [ $IPADD = $IP ] ; then
ser=`echo $ipadd | cut -d= -f2`
break
fi
done # -==定义本脚本需要用到的变量==-
# 获取当前系统日期,格式为: 2008-04-25
DATE=`date "+%F"`
# 定义mysql 服务的主目录
DB_DIR=/usr/local/mysql
# 定义备份后的路径
BAK_DIR=/usr/local/backup
BAK_PATH=$BAK_DIR/$DATE
# 定义备份服务器IP地址
BAK_SER=192.168.1.100 # 判断备份文件存放的路径是否存在
if [ ! -d $BAK_PATH ]; then
mkdir -p $BAK_PATH
fi # 进入/usr/local/mysql/data 目录查看都有哪些数据库
cd $DB_DIR/data
DB_NAME=`ls -dF -1 * | grep "/$" | cut -d/ -f1` # 利用mysqldump 对所有数据库进行SQL语句备份
for db_name in $DB_NAME
do
$DB_DIR/bin/mysqldump $db_name > $BAK_PATH/$ser-$db_name-$DATE.sql
done scp –pr $BAK_PATH $BAK_SER:$BAK_DIR
exit 0
3) 在A机上添加计划任务
# chmod 755 /etc/mysql-backup.sh
# crontab –e
0 12 * * * /etc/mysql-backup.sh 小提示
crontab 书写格式
格式 * * * * * Command
含意 分 时 日 月 周 指令串
取值 0-59 0-23 1-31 1-12 0-7 脚本或系统命令
实现环境
1台MYSQL服务器(简称A机)
1台备份服务器(简称B机,配置不用太高,建议做RAID1)
注意: 以上两台机器均安装LINUX系统 实现的服务器
mysqldump 用来备份数据库SQL语句
crontab 用来定时执行数据库备份脚本
scp 用来实现将文件传递 实现过程
在A上定时执行数据库备份脚本
A机将备份的数据库文件传递到B机 操作步骤
1) 设置无需密码就可以由A机访问B机
用root身份在A机上输入如下命令
# ssh-keygen -t dsa (生成密钥)
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa): 直接按下回车键即可
Enter passphrase (empty for no passphrase): 直接按下回车键即可
Enter same passphrase again: 直接按下回车键即可
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
passphrase(密钥保护) 保留为空,否则使用ssh时将要求输入passphrase(密钥保护) # cd /root/.ssh
# echo id_dsa.pub >> authorized_keys
# chmod 644 authorized_keys
# scp –pr authorized_keys IP:/root/.ssh/ 此处IP为B机器IP地址
# rm –f authorized_keys
# ssh IP “mkdir /usr/local/backup” (此处IP为B机器IP地址,此时SSH登陆B机器时就无需输入密码了) 2) 在A机器上建立数据库备份脚本,名为mysql-backup.sh,脚本内容如下
#!/bin/bash
# 日期: 2008年-4月-25日
# 本脚本用来自动备份MYSQL数据库SQL语句 # 定义服务器IP和服务器名称对应关系
SER_INFO=(192.168.1.201=ggtv_wap \
192.168.1.229=tj_G.net \
192.168.1.21=tian_jin) # 提取当前主机公网IP地址
netcfg=/etc/sysconfig/network-scripts/ifcfg-eth
IPADD=`grep IPADDR $netcfg[0-1] | awk -F= '{print $2}' | grep -e 192.168.1. -e 172.16.105.` # 判断当前主机的名称
for ipadd in ${SER_INFO[@]}
do
IP=`echo $ipadd | cut -d= -f1`
if [ $IPADD = $IP ] ; then
ser=`echo $ipadd | cut -d= -f2`
break
fi
done # -==定义本脚本需要用到的变量==-
# 获取当前系统日期,格式为: 2008-04-25
DATE=`date "+%F"`
# 定义mysql 服务的主目录
DB_DIR=/usr/local/mysql
# 定义备份后的路径
BAK_DIR=/usr/local/backup
BAK_PATH=$BAK_DIR/$DATE
# 定义备份服务器IP地址
BAK_SER=192.168.1.100 # 判断备份文件存放的路径是否存在
if [ ! -d $BAK_PATH ]; then
mkdir -p $BAK_PATH
fi # 进入/usr/local/mysql/data 目录查看都有哪些数据库
cd $DB_DIR/data
DB_NAME=`ls -dF -1 * | grep "/$" | cut -d/ -f1` # 利用mysqldump 对所有数据库进行SQL语句备份
for db_name in $DB_NAME
do
$DB_DIR/bin/mysqldump $db_name > $BAK_PATH/$ser-$db_name-$DATE.sql
done scp –pr $BAK_PATH $BAK_SER:$BAK_DIR
exit 0
3) 在A机上添加计划任务
# chmod 755 /etc/mysql-backup.sh
# crontab –e
0 12 * * * /etc/mysql-backup.sh 小提示
crontab 书写格式
格式 * * * * * Command
含意 分 时 日 月 周 指令串
取值 0-59 0-23 1-31 1-12 0-7 脚本或系统命令
相关阅读 更多 +