1、备份Mysql数据库:
/usr/local/mysql/bin/mysqldump --no-defaults -hip -uroot -p密码 --opt -R --single-transaction 数据库名称 >/opt/databak/data/数据库名层.bak
2、备份Mysql的general日志:
#!/bin/bash
today=`date +%Y%m%d`
yestoday=`date +%Y%m%d -d "-1 days"`
mysql -uroot -h127.0.0.1 -p密码 <<EOF
SET GLOBAL general_log = 'OFF';
EOF
mv /data/mysql/data/general.log /opt/databak/general_log/general.log.${yestoday}
#find /data/mysql/data/ -mtime +1 -name "SYJJ.log.*" -exec rm -rf {} \;
#touch /data/mysql/data/general.log
mysql -uroot -h127.0.0.1 -p密码 <<EOF
SET GLOBAL general_log = 'ON';
EOF
3、利用expect完成异地备份
首先下载并安装tcl:
# wget https://sourceforge.net/projects/tcl/files/Tcl/8.4.19/tcl8.4.19-src.tar.gz
# tar zxvf tcl8.4.19-src.tar.gz
# cd tcl8.4.19/unix && ./configure
# make
# make install
然后下载expect并安装:
# wget http://sourceforge.net/projects/expect/files/Expect/5.45/expect5.45.tar.gz
# tar zxvf expect5.45.tar.gz
# cd expect5.45
# ./configure --with-tcl=/usr/local/lib --with-tclinclude=../tcl8.4.19/generic
# make
# make install
# ln -s /usr/local/bin/expect /usr/bin/expect
注意这里的configure命令需要使用–with-tclinclude选项传入tcl安装包中的generic文件夹路径。
安装完成之后运行expect命令,查看是否安装成功。
编写expect脚本:
#!/usr/bin/expect -f
set password 密码
spawn scp -r /opt/databak root@Ip:/opt/
set timeout 300
expect "root@IP's password:"
set timeout 300
send "$password\r"
set timeout 300
send "exit\r"
expect eof
exec sh -c {rm -rf /opt/databak/general_log/*}
4、启用crontab定时:
#crontab -u root -e
录入:
5 0 * * * /opt/databak/bak_data_start.sh