欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

MySQL异地增量备份

程序员文章站 2022-04-23 12:22:22
...

MySQL异地增量备份: 1.#!/bin/sh 2. 3.#MySQL Info 4.sqluser=root 5.sqlpsw=root 6. 7./usr/bin/mysqladmin -u$sqluser -p$sqlpsw flush-logs --default-character-set=GBK 8. 9.DATADIR=/data/mysql 10.BAKDIR=/home/backup/mysql/daily 11.TEMPDIR=/home/b

MySQL异地增量备份:

1.#!/bin/sh
2.
3.#MySQL Info
4.sqluser=root
5.sqlpsw=root
6.
7./usr/bin/mysqladmin -u$sqluser -p$sqlpsw flush-logs --default-character-set=GBK 8.
9.DATADIR=/data/mysql
10.BAKDIR=/home/backup/mysql/daily
11.TEMPDIR=/home/backup/mysql/temp
12.
13.BINLOGNAME='mysql-bin' 14.cd $DATADIR
15.FILELIST=$(cat $BINLOGNAME.index | cut -c3-) 16.
17.## COUNTER number
18.COUNTER=0
19.for file in $FILELIST 20.do 21.COUNTER=$(expr $COUNTER + 1)
22.done
23.
24.NextNum=0
25.for file in $FILELIST 26.do 27.NextNum=$(expr $NextNum + 1)
28.if test "$NextNum" = "$COUNTER" 29.then
30.echo "skip lastest" 31.else 32.dest=$BAKDIR/$file
33.if test -e $dest 34.then
35.echo "skip exist $dest" 36.else 37.cp $file $TEMPDIR
38.fi
39.fi
40.done
41.echo "backup mysql binlog ok" 42.
43.sleep 2s
44.
45.cd $TEMPDIR
46.tarname=binlog$(date +%y%m%d).tar.gz
47.tar czf $tarname ./mysql-bin*
48.
49.sleep 1s 50.
51.#ftp Info
52.ftphost=111.111.11.11
53.ftpname=xxx
54.ftppsw=psw
55.
56.cd $TEMPDIR
57.
58.ftp -i -n 59.open $ftphost
60.user $ftpname $ftppsw
61.type binary
62.put $tarname
63.close
64.bye
65.!
66.sleep 10s
67.
68.echo "end upload" 69.
70.cd $TEMPDIR
71.mv $BINLOGNAME* $BAKDIR
72.rm -r $tarname
73.
74.echo "end" 说明:

mysqladmin -u$sqluser -p$sqlpsw flush-logs:mysql自动把内存中的日志放到日志文件binlog的最后一个文件里,并生成一个空的新日志文件,之后只需要备份前面的几个即可,最后一个因为是刚生成的,并且是空的,所以不需备份。

关于binlog可参考: http://www.linuxidc.com/Linux/2012-09/70815.htm

大概思路:

把datadir和bakdir目录中的binlog进行对比,如bakdir中没有,且该binlog不是最后一个,则把该binlog复制到tempdir中;这样tempdir中的binlog都是新增的binlog。之后把tempdir中的binlog进行打包压缩,ftp到另一个服务器上。