在本文中,我们将分享如何为您的数据库创建自动的远程数据库备份。
第1步
通过SSH登录到数据库服务器。您也可以从终端上进行操作。
ssh you-ssh-user@your-server-ip
第2步
在当前用户的主目录中创建一个Shell脚本文件:
touch ~/mysql-backup.sh
使用vim打开Shell脚本:
vim ~/mysql-backup.sh
将以下内容复制并粘贴到 〜/ mysql-backup.sh 中:
#!/bin/bash
export PATH=/bin:/usr/bin:/usr/local/bin
TODAY=`date +"%d%b%Y"`
################## Update below values ########################
DB_BACKUP_PATH='/home/you-ssh-user/backup'
MYSQL_HOST='localhost'
MYSQL_PORT='3306'
MYSQL_USER='root'
MYSQL_PASSWORD='mysecret'
DATABASE_NAME='mydb'
BACKUP_RETAIN_DAYS=30
#################################################################
mkdir -p ${DB_BACKUP_PATH}/${TODAY}
echo "Backup directory creation done"
mysqldump -h ${MYSQL_HOST} \
-P ${MYSQL_PORT} \
-u ${MYSQL_USER} \
-p${MYSQL_PASSWORD} \
${DATABASE_NAME} | gzip > ${DB_BACKUP_PATH}/${TODAY}/${DATABASE_NAME}-${TODAY}.sql.gz
if [ $? -eq 0 ]; then
echo "Database backup done"
else
echo "Error while backup"
exit 1
fi
DBDELDATE=`date +"%d%b%Y" --date="${BACKUP_RETAIN_DAYS} days ago"`
if [ ! -z ${DB_BACKUP_PATH} ]; then
cd ${DB_BACKUP_PATH}
if [ ! -z ${DBDELDATE} ] && [ -d ${DBDELDATE} ]; then
rm -rf ${DBDELDATE}
fi
fi
第3步
更新脚本中以下变量的值:
DB_BACKUP_PATH:要在其中存储备份文件的位置。如果不确定,只需将您的ssh-user替换为当前的SSH用户名。
MYSQL_HOST:MySQL主机,通常是localhost。
MYSQL_PORT:MySQL端口号,通常为3306。
MYSQL_USER:MySQL用户名。
MYSQL_PASSWORD:MySQL数据库用户名的密码。
DATABASE_NAME:您要备份的MySQL数据库。
BACKUPRETAINDAYS:保留备份文件的天数。
第4步
向备份Shell脚本授予正确的权限:
chmod +x ~/mysql-backup.sh
通过运行以下命令测试备用Shell脚本:
~/mysql-backup.sh
您应该在第3步(DBBACKUPPATH -数据库备份路径)中定义的目录中看到一个包含MySQL备份文件的目录。
ls /home/you-ssh-user/backup
第5步
安排cron作业以每天午夜运行备份:
crontab -e
添加以下条目:
0 0 * * * you-ssh-user /home/you-ssh-user/mysql-backup.sh
做完了 现在,您的MySQL数据库将在每天午夜自动备份。