(备份还原操作)
###导出数据库
/usr/bin/mysqldump -u root -pwd database > database20180808.sql
###导入数据库
mysql -u root -p database < database20180808.sql
(备份到压缩文件从压缩文件导入)
### 备份到压缩文件
/usr/bin/mysqldump -u root -pwd database | gzip > database20180808.sql.gz
### 压缩文件中解压出来
gzip < database20180808.sql.gz | mysql -u root -p database
(crontab定时备份)
创建备份目录
mkdir -p /bak/mysqlbak
cd /bak/mysqldata
编写运行脚本
vi /usr/sbin/bakmysql.sh
脚本代码
【
#!/bin/bash
# Name:bakmysql.sh
# This is a ShellScript For Auto DB Backup and Delete old backup
#
backupdir=/bak/mysqlbak
time='date +%Y%m%d%H'
mysql_bin_dir/mysqldump -u root -pwd database | gzip > $backupdir/database$time.sql.gz
#
find $backupdir -name "name_*.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")"其中`符号是TAB键上面的符号,不是ENTER左边的'符号,还有date后要有一个空格。
type f 表示查找普通类型的文件,f表示普通文件。
mtime +7 按照文件的更改时间来查找文件,+5表示文件更改时间距现在7天以前;如果是 -mmin +5 表示文件更改时间距现在5分钟以前。
exec rm {} \ 表示执行一段shell命令,exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{},一个空格和一个,最后是一个分号。
/dev/null 2>&1 把标准出错重定向到标准输出,然后扔到/DEV/NULL下面去。通俗的说,就是把所有标准输出和标准出错都扔到垃圾桶里面;其中的& 表示让该命令在后台执行。
)
3、为脚本添加执行权限
# chmod +x /usr/sbin/bakmysql.sh
4、设置crontab定时执行
vi /etc/crontab
#在最后一行中加入: 00 3 * * * root /usr/sbin/bakmysql.sh
#表示每天3点00分执行备份
注:crontab配置文件格式如下:
分 时 日 月 周 命令
5、重启crontab
/etc/rc.d/init.d/crond restart
这样就完了定时备份并清理前7天的备份数据
同步到其它服务器
这里使用Linux同步文件工具rsync+inotify来进行文件的同步
rsync
rsync是类unix系统下的数据镜像备份工具——remote sync。一款快速增量备份工具 Remote Sync,远程同步 支持本地复制,或者与其他SSH、rsync主机同步
用法
rsync src dest
这是最简单的用法,表示同步src,dest文件。(即,执行之后,dest的文件与src的相同,以src的为准)
常用选项
## 将本地/bak/mysqlbak/文件同步到 远程服务器 /bak/mysql/bak 目录下面 排除 mysqlbak/index目录 通过ssh端口
rsync -vzacu /bak/mysqlbak/ root@192.168.53.86:/bak/mysqlbak --exclude "mysqlbak/index" -e "ssh -p 22"# 将远程目录 /bak/mysqlbak下的文件同步到本地 /bak/mysqlbak/目录下
rsync -vzrtopg --progress --delete root@192.168.53.85:/bak/mysqlbak /bak
启用rsync服务器端同步远程文件
rsycn的服务端为服务器的文件接收端,rsycn的客户端为服务器的文件推动端。
rsycn的服务端/文件接收端配置
服务端需要开启rsyncd服务
添加配置文件rsyncd.conf
vi /etc/rsyncd.conf
#以下是全局配置
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/lock/rsyncd
[mysqlbak] #模块名,在源服务器指定这个名字
comment = sync rsync/home #描述信息
path = /bak/mysqlbak #备份目录
use chroot=no #不使用chroot,不用root权限
read only = no #设置本地备份目录为读写权限
uid=root
gid=root
max connections=10 #客户端最大连接数
auth users = root #指定数据同步用户
secrets file = /etc/rsyncd.pass #指定数据同步用户信息文件
hosts allow=192.168.53.0/85 #允许连接的客户端
ignore errors = yes #忽略出现I/O错误
timeout = 600
创建认证文件
vi /etc/rsyncd.pass
##代码 root:root #格式是用户名:密码
#属主要有权限读这个文件,否则会报没权限
chmod 600 /etc/rsyncd.pass
修改/etc/xinetd.d/rsync文件,disable 改为 no
service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
启动服务端
rsync --daemon --config=/etc/rsyncd.conf
rsycn的客户端/文件发送端配置
客户端配置简单 只需要配置密码既可
vi /etc/rsync_client.pwd
##代码
root #只需要填写rsync服务的密码
#属主要有权限读这个文件,否则会报没权限
chmod 600 /etc/rsync_client.pwd
客户端同步测试
/usr/bin/rsync -auvrtzopgP --progress --password-file=/etc/rsync_client.pwd /bak/mysqlbak/ root@192.168.53.86::mysqlbak
rsync只是一次性同步,如果需要实时同步就需要引入另一个工具了
inotify
Inotify 是一种强大的、细粒度的、异步的文件系统事件监控机制,linux内核从2.6.13起,加入了Inotify支持,通过Inotify可以监控文件系统中添加、删除,修改、移动等各种细微事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools就是这样的一个第三方软件。
Inotify只需要要按照部署在同步的客户端,当监控的文件有变化触动 rsync脚本来同步
安装
yum install inotify-tools
配置监控的文件路径
vi /etc/inotify_exclude.lst
#代码/bak/mysqlbak #监控目录
@/bak/log #排除监控目录
rsync排除监控文件目录
vi /etc/rsyncd.d/rsync_exclude.lst
#代码
src/*.html*
src/js/
src/2014/20140[1-9]/
客户端同步到远程的脚本rsync.sh
#rsync auto sync script with inotify#variables
current_date=$(date +%Y%m%d_%H%M%S)
source_path=/bak/mysqlbak/
log_file=/var/log/rsync_client.log
#rsync
rsync_server=192.168.53.86
rsync_user=root
rsync_pwd=/etc/rsync_client.pwd
rsync_module=mysqlbak
INOTIFY_EXCLUDE='(.*/*\.log|.*/*\.swp)$|^/tmp/src/mail/(2014|20.*/.*che.*)'
RSYNC_EXCLUDE='/bak/rsync_exclude.lst'#rsync client pwd checkif [ ! -e ${rsync_pwd} ];then
echo -e "rsync client passwod file ${rsync_pwd} does not exist!"
exit 0
fi#inotify_functioninotify_fun(){
/usr/bin/inotifywait -mrq --timefmt '%Y/%m/%d-%H:%M:%S' --format '%T %w %f' \
--exclude ${INOTIFY_EXCLUDE} -e modify,delete,create,move,attrib ${source_path} \
| while read file
do
/usr/bin/rsync -auvrtzopgP --exclude-from=${RSYNC_EXCLUDE} --progress --bwlimit=200 --password-file=${rsync_pwd} ${source_path} ${rsync_user}@${rsync_server}::${rsync_module}
done
}
#inotify log
inotify_fun >> ${log_file} 2>&1 &
给脚本执行权限,执行后就可以了
chmod 777 rsync.sh
./rsync.sh
- linux定时备份mysql并同步到其它服务器
数据在任何一家公司里面都是最核心的资产,定期备份则是为了保证数据库出现问题的时候能够及时回滚到最近的备份点,将损失缩小到最小 这篇文章将会两部分来说明:1.mysql的定期备份:2.同步到其它服务器 ...
- mysqldump+系统计划任务定时备份MySql数据
MYSQL 数据库备份有很多种(cp.tar.lvm2.mysqldump.xtarbackup)等等,具体使用哪一个还要看你的数据规模.下面给出一个表 #摘自<学会用各种姿态备份Mysql数据 ...
- linux 定时备份mysql数据库
首先要先搞清楚两个概念: ①.mysqldump,mysqldump是mysql的逻辑备份工具,它不是linux的命令,工作原理类似产生一些列sql语句,对数据库进行指定的逻辑备份. 最简洁的形式是: ...
- linux 定时备份mysql
定时备份:1.创建备份文件存放目录2.创建备份脚本backup.sh #!/bin/bash DBUser=db_backDBPasswd=passwordDBName=db_nameSERVER=l ...
- linux下备份mysql数据
一.业务场景 自己现在做的项目基本上已经开发完成,正式开始上线运行,主要包含两个子项目一个是小程序的后台,一个是后台管理系统. 正式开始运行一段时间后,基本上也没什么BUG了,整个项目都已经能够正常的 ...
- linux定时备份MySQL数据库并删除七天前的备份文件
1.创建备份文件夹 #cd /bak#mkdir mysqldata 2.编写运行脚本 #nano -w /usr/sbin/bakmysql.sh 注:如使用nano编辑此代码需在每行尾添加’&am ...
- linux 每天备份mysql数据
原文:http://www.open-open.com/code/view/1433587311890 前言: 如果你的数据库文件较大,可能备份的时候需要占用很多服务器资源,所以站长要尽量选择访客最少 ...
- linux定时备份mysql数据库文件
1.设定定时器:终端敲入:crontab -e命令 2,然后写入 00 23 * * * /home/db_bak_file/dbbak.sh >>/home/db_bak_fil ...
- Linux下定时备份MySQL数据库的Shell脚本
Linux下定时备份MySQL数据库的Shell脚本 对任何一个已经上线的网站站点来说,数据备份都是必须的.无论版本更新还是服务器迁移,备份数据的重要性不言而喻.人工备份数据的方式不单耗费大量时间 ...
随机推荐
- Linux-Centos 虚拟机安装
Centos安装方法 第一步:一般只有第一项和第三项有用 其余的没啥卵用 第二步:提示检查镜像完整性,这里我们不要检查 选 skip 继续(之前尝试选择OK,最后安装失败了,也不想找原因了) 第三步 ...
- webpack配置使用gif动图
1. 下载npm包: npm install url-loader --save-dev 2. webpack.config.js中module -> rules里添加: { test: /\ ...
- Tupper自我指涉公式生成器
- Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC
解决Invalid character found in the request target. The valid characters are defined in RFC 7230 and RF ...
- 深度学习在graph上的使用
原文地址:https://zhuanlan.zhihu.com/p/27216346 本文要介绍的这一篇paper是ICML2016上一篇关于 CNN 在图(graph)上的应用.ICML 是机器学习 ...
- Mac 环境部署Docker私有仓库
docker的私有仓库类似maven的私服,一般用于公司内部搭建一个类似docker hub的环境,这样上传.下载镜像速度较快,本文将演示如何在mac上利用docker-machine搭建无需SSL证 ...
- MS SQL Server NULL处理
-- 首先在用户表中插入数据如下 TRUNCATE TABLE UserInfo ; INSERT INTO userinfo(UserName,UserLogin,UserPassword,User ...
- pycharm导入自己写的模块时,模块下方出现红色波浪线的解决方案
文章链接:https://blog.csdn.net/weixin_38383877/article/details/81121851 这种情况其实可以不用管,是可以正常运行的: 但是,如果看着不舒服 ...
- Python 爬虫 NewCnblogs (爬虫-Django-数据分析)
需求分析 数据库架构 注册 登录 首页 个人站点 文章+评论 后台 爬虫 数据分析 添加搜索+已上线
- Flask开发微电影网站(七)
1.后台管理之电影管理 1.1 定义电影表单 在app的admin目录的forms.py文件中,定义电影表单 # 电影表单 class MovieForm(FlaskForm): title = St ...