Linux定时备份数据库和同步至远程服务器

1.备份数据库

1.1sql脚本备份

#导出数据库

#pwd即root的密码 与-p之前不能空格隔开

/usr/bin/mysqldump -u root -ppwd database > database2081218.sql

#导入数据库

/mysql -u root -p database < database20181218.sql

1.2压缩包形式

#导出数据库

/usr/bin/mysqldump -u root -ppwd database | gzip > database20181218.sql.gz

#导入数据库

gzip < database20181218.sql.gz | mysql -u root -p database

2.利用/etc/crontab指定定时备份

2.1创建备份目录

#root 用户创建备份目录

mkdir -p /bak/mysqlbak

cd /bak/mysqlbak

2.2编写备份脚本

vim /usr/sbin/bakmysql.sh

===================================以下为脚本代码==========================

#!/bin/bash

#Name:backmysql.sh

#This is a shell script for auto DB backup and delete old backup

backupdir=/bak/mysqlbak

time=` date +%Y%m%d%H `

mysql_bin_dir/mysqldump -u root -ppwd database | gzip > $backupdir/database$time.sql.gz

# 格式要求:-exec 要执行的命令 空格{}空格\;

find $backupdir -name "databasename_*.sql.gz" -type f -mtime +7 -exec rm {}  \ ; > /dev/null 2>&1

脚本说明:

backupdir mysql备份地址
root mysql用户名
pwd mysql密码
database 数据库名
mysql_bin_dir mysql的bin路径
time=` date +%Y%m%d%H ` 或者time="$(date +"%Y%m%d$H")" 获取日期格式
type f 表示查找普通类型的文件,f表示普通文件
mtime +7 按照文件的更改时间来查找文件,+7表示更改时间距离现在7天以前
mmin +5 文件更改时间距离现在5分钟以前
exec rm { } 表示执行一段shell命令
/dev/null 2>&1 把标准出错重定向到标准输出,然后扔到/DEV/NULL下面去,&后台运行

2.3为sh脚本添加执行权限

chmod +x /usr/sbin/backmysql.sh

2.4在/etc/crontab添加定时任务

vim /etc/crontab

#在最后一行加入

#crontab配置文件格式 分 时 日 月 周  命令

#表示每天3点00分执行备份

00 3 * * * root /user/sbin/backmysql.sh

2.5重启crontab

/etc/rc.d/init.d/crond restart

即可完成定时备份并清理前7天的备份数据

3.同步到其他服务器

使用Linux同步文件工具rsync+inotify来进行文件的同步

rsync

rsync是类unix系统下的数据镜像备份工具——remote sync。一款快速增量备份工具 Remote Sync,远程同步 支持本地复制,或者与其他SSH、rsync主机同步

用法:rsync src dest

## 将本地/bak/mysqlbak/文件同步到 远程服务器 /bak/mysql/bak 目录下面 排除 mysqlbak/index目录 通过ssh端口

rsync -vzacu /bak/mysqlbak/ [email protected]:/bak/mysqlbak --exclude "mysqlbak/index" -e "ssh -p 22"

# 将远程目录 /bak/mysqlbak下的文件同步到本地 /bak/mysqlbak/目录下

rsync -vzrtopg --progress --delete [email protected]:/bak/mysqlbak /bak

 

同步后续补充

 

 

 

 

 

 

 

你可能感兴趣的:(linux)