遇到的问题:
查看mysql-bin-00001日志内容,默认配置用户对/var/lib/mysql下的binlog文件没有读的权限,只有写的权限,所以需要先对该用户赋权:
chown -R mysql:huichao /var/lib/mysql
 
查看日志内容:
mysqllogbin /var/lib/mysql/mysql-bin-00001
或者
docker exec -it master mysqlbinlog --base64-output=decode-rows -v /var/lib/mysql/mysql-bin.000013
如果是row模式,不会明文显示增删改查的内容,需要加上--base64-output=decode-rows -v来显示二进制的内容
 
#!/bin/sh
#需求,对数据库进行增量备份,cp需要备份的日志文件到incrementalBackUpDir备份目录
# 判断备份目录是否存在,如果不存在则创建
if [ ! -d "/home/mysqlBackUps/incrementalBackUp" ]; then
mkdir -p /home/mysqlBackUps/incrementalBackUp
fi
 
incrementalBackUpDir=/home/mysqlBackUps/incrementalBackUp
 
# 日志存放目录
BinDir=/home/mysql/data
 
# 判断记录操作备份日志文件是否存在,如果不存在则创建,将每一次的增量备份记录到该日志文件当中
if [ ! -f "$incrementalBackUpDir/bak.log" ]; then
touch $incrementalBackUpDir/bak.log
fi
 
logFile=$incrementalBackUpDir/bak.log
 
#日志索引目录
binFileIndex=/home/mysql/data/mysql-bin.index
 
#刷新日志文件
docker exec -it master mysql -uroot -p123456 -e "flush logs;"
 
#查看一共有多少行日志记录
Counter=$(wc -l $binFileIndex |awk '{print $1}')
 
NextNum=0
 
#这个for循环用于比对$Counter,$NextNum这两个值来确定文件是不是存在或最新的
for file in `cat $binFileIndex`
do
currentBinFileName=`basename $file`
#basename用于截取mysql-bin.00000*文件名,去掉./mysql-bin.000005前面的./
NextNum=`expr $NextNum + 1`
if [ $NextNum -eq $Counter ]
then
echo $currentBinFileName skip! >> $logFile
else
dest=$incrementalBackUpDir/$currentBinFileName
if(test -e $dest)
#test -e用于检测目标文件是否存在,存在就写exist!到$LogFile去
then
echo $currentBinFileName exist! >> $logFile
else
cp $BinDir/$currentBinFileName $incrementalBackUpDir
echo $currentBinFileName copy success >> $logFile
fi
fi
done
 
echo `date +"%Y年%m月%d日 %H:%M:%S"` $Next Bakup succ! >> $logFile