MYSQL/POSTGRESQL/SVN备份设置
2016-01-27 17:24
573 查看
由于公司数据安全考量需对相关数据进行备份。
机器配置:
Dell R410
CPU:1颗
内存:8G
磁盘:320G系统盘,2T 软raid数据盘,1TB备份盘
应用:SCM、CI、BUG
本文将参考其他网络文献,进行配置部署。没什么特别的,记录以备忘。
准备 建立根目录mkdir /data_sync
建立备份路径目录
cd data_sync
mkdir svn teamcity zentao
cd svn
mkdir bin logs conf data
cd mysql
mkdir bin logs conf data
cd postgresql
mkdir bin logs conf data
SVN备份 在bin路径下生成如下文件
vi backup.sh
#!/bin/bash SRCPATH=/opt/svnroot/ #定义仓库路径 DISTBASE=/data_sync/svn DISTPATH=$DISTBASE/data #定义存放路径; LOGPATH=$DISTBASE/logs CONFPATH=$DISTBASE/conf BINPATH=$DISTBASE/bin CURRENTDAY=`date +\%m%d` BAKPATH=$DISTPATH/$CURRENTDAY timecmd='date +%R:%S' function backup() { echo `$timecmd` backup start if [ ! -d "$BAKPATH" ]; then mkdir -p $BAKPATH mkdir -p $BAKPATH/Repositories chmod g+s $BAKPATH fi echo `$timecmd` backup path: $BAKPATH for repo in $(<$CONFPATH/repos.txt); do echo `$timecmd` $repo svnadmin hotcopy $SRCPATH/Repositories/$repo $BAKPATH/Repositories/$repo >$LOGPATH/cpreport-$CURRENTDAY.log 2>&1; done echo `$timecmd` copying security cp -r $SRCPATH/security $BAKPATH #备份security文件 check_dir echo `$timecmd` compress backup tar zcf $BAKPATH.tar.gz $BAKPATH echo `$timecmd` remove tempdir rm -rf $BAKPATH echo `$timecmd` 'backup finished' } function check_dir() { if [ ! -d "$BAKPATH" ]; then echo "Should backup first" exit -1 fi echo `$timecmd` check start: $BAKPATH for repo in $(<$CONFPATH/repos.txt); do youngest=`svnlook youngest $BAKPATH/Repositories/$repo`; echo `$timecmd` $repo "$youngest" if [[ "svnlook" =~ "$youngest" ]]; then echo $repo backup failed. exit -2 fi done echo `$timecmd` 'check end' } function del_old_dir() { echo `$timecmd` 'del old backup start' find $DISTPATH -mtime +10 -type f -name "*.gz" -exec rm -rf {} \; echo `$timecmd` 'del old backup finished' } del_old_dir; backup; check_dir;
在conf目录下生conf.txt,使用如下命令生成。
ls -l --time-style=full-iso /opt/svnroot/Repositories|cut -f 9 -d ' ' >conf.txt
postgresql备份
在bin路径下生成如下文件
vi backup.sh
#!/bin/bash DISTBASE=/data_sync/postgre DISTPATH=$DISTBASE/data #定义存放路径; LOGPATH=$DISTBASE/logs CONFPATH=$DISTBASE/conf BINPATH=$DISTBASE/bin CURRENTDAY=`date +\%m%d` #BAKPATH=$DISTPATH/$CURRENTDAY timecmd='date +%R:%S' function backup() { echo `$timecmd` backup start if [ ! -d "$DISTPATH" ]; then mkdir -p $DISTPATH chmod g+s $DISTPATH fi echo `$timecmd` backup path: $DISTPATH cd $DISTPATH su - postgres -c pg_dumpall > $CURRENTDAY.dmp tar zcf $CURRENTDAY.tar.gz $CURRENTDAY.dmp rm -f $CURRENTDAY.dmp echo `$timecmd` 'backup finished' } function del_old_dir() { echo `$timecmd` 'del old backup start' find $DISTPATH -mtime +10 -type f -name "*.gz" -exec rm -rf {} \; echo `$timecmd` 'del old backup finished' } del_old_dir; backup;
postgreql备份的是整个实例的数据,不区分数据库,比mysql省事。
mysql备份
vi backup.sh
#!/bin/bash DISTBASE=/data_sync/mysql DISTPATH=$DISTBASE/data #定义存放路径; LOGPATH=$DISTBASE/logs CONFPATH=$DISTBASE/conf BINPATH=$DISTBASE/bin CURRENTDAY=`date +\%m%d` #BAKPATH=$DISTPATH/$CURRENTDAY timecmd='date +%R:%S' function backup() { echo `$timecmd` backup start if [ ! -d "$DISTPATH" ]; then mkdir -p $DISTPATH chmod g+s $DISTPATH fi echo `$timecmd` backup path: $DISTPATH cd $DISTPATH mysqldump -uroot -proot dbname > $CURRENTDAY.dmp tar zcf $CURRENTDAY.tar.gz $CURRENTDAY.dmp rm -f $CURRENTDAY.dmp echo `$timecmd` 'backup finished' } function del_old_dir() { echo `$timecmd` 'del old backup start' find $DISTPATH -mtime +10 -type f -name "*.gz" -exec rm -rf {} \; echo `$timecmd` 'del old backup finished' } del_old_dir; backup;
有多个数据库者参考svn备份脚本,将数据名称放在文件中,循环备份即可。
定时自动备份
使用crontab进行,注意退出时要用vi的保存命令:w
crontab -e 00 21 * * * /data_sync/svn/bin/backup.sh 00 21 * * * /data_sync/teamcity/bin/backup.sh 00 21 * * * /data_sync/zentao/bin/backup.sh
以上内容直白,不解释。
参考文献
[SCM]源码管理 - SVN的备份和还原
相关文章推荐
- mysql添加多个字段
- Mysql查看编码方式
- mysql 5.7开启并行复制
- mysql json类型快速入门
- 二进制安装MySQL
- mysql压缩包如何使用及PoolableConnectionFactory 和Access denied for user 'testdb'@'localhost'问题的解决
- mysql按字段分组并获取每个分组按照某个字段排序的前三条
- mysql安装
- MySQL与其它主流数据库比较
- 报错:1130-host ... is not allowed to connect to this MySql server
- MySQL硬件资源利用特点
- Mysql数据库优化总结
- mysql数据库 复制一条记录到另外一张表中 本来为null的datatime字段,复制到另一张表中变为了0000-00-00 00:00:00
- Mysql 不存在则插入,存在则更新
- WeChall mysql WriteUp
- mysql 中检查表是否损坏以及修复表
- 分别在MS-DOS和MySQL Command Line Client编写sql语句
- 基于mysql中一些易混淆知识点总结
- scala 连接 mysql
- Mysql怎样取消错误命令