已经实现了脚本写得好复杂 还要检查show salve msster 用比较复杂的linux 命令来做 之后根据结果来判断当前复制环境 是否正常 如果不正常 发邮件给dba有时间贡献这些脚本 (shell搞复杂不是很容易的)#!/bin/bash # mysql全量备份脚本mkdir /backup cd /backup dateDIR=`date +"%y-%m-%d"` mkdir -p $dateDIR/data path=/usr/local/mysql/data for i in `mysql -uroot -p123456 -e "show databases" | grep -v "Database"` do mysqldump -uroot -p123456 --default-character-set=gbk --opt $i | gzip > /backup/$dateDIR/data/${i}_${dateDIR}.sql.gz donemysqladmin -uroot -p123456 flush-logs binlog_rm=`tail -n 1 $path/mysql-bin.index | sed 's/.\///'` mysql -uroot -p123456 -e "purge binary logs to '$binlog_rm'" #!/bin/bash # mysql增量备份脚本cd /backup dateDIR=`date +"%y-%m-%d"` mkdir -p $dateDIR/data path=/usr/local/mysql/data mysqladmin -uroot -p123456 flush-logs binlog_cp=`head -n -1 $path/mysql-bin.index | sed 's/.\///'` for i in $binlog_cp do mysql -uroot -p123456 -e "FLUSH TABLES WITH READ LOCK; \! cp -p $path/$i /backup/$dateDIR/data/;" donebinlog_rm=`tail -n 1 $path/mysql-bin.index | sed 's/.\///'` mysql -uroot -p123456 -e "purge binary logs to '$binlog_rm'"欢迎讨论
困惑是否需要1周作一次全备份一月作一个全备份???? (参考网上大型oltp都是这样做的)
另外上面的脚本binlog_cp=`head -n -1 $path/mysql-bin.index | sed 's/.\///'` 这里什么意思 head -n -1?(特别是-1) sed 's/.\///'`??另外for i in $binlog_cp又是什么意思(for i in $binlog_cp dodone 这个结构如何理解 ,为什么哟啊这样用 这里$binlog_cp 是一个具体的数值 (唯一的), 既然是唯一, 为何还来个for循环 ?)
这个用mysqldump 就行了。某个文件夹保存3天最近备份数据 超过3天 系统自动删除 --------------这个可行吗
可行,UNIX上脚本很容易实现。2 每天有增量备份日志
备份BINLOG文件
用比较复杂的linux 命令来做
之后根据结果来判断当前复制环境 是否正常
如果不正常 发邮件给dba有时间贡献这些脚本 (shell搞复杂不是很容易的)#!/bin/bash
# mysql全量备份脚本mkdir /backup
cd /backup
dateDIR=`date +"%y-%m-%d"`
mkdir -p $dateDIR/data
path=/usr/local/mysql/data
for i in `mysql -uroot -p123456 -e "show databases" | grep -v "Database"`
do
mysqldump -uroot -p123456 --default-character-set=gbk --opt $i | gzip > /backup/$dateDIR/data/${i}_${dateDIR}.sql.gz
donemysqladmin -uroot -p123456 flush-logs
binlog_rm=`tail -n 1 $path/mysql-bin.index | sed 's/.\///'`
mysql -uroot -p123456 -e "purge binary logs to '$binlog_rm'"
#!/bin/bash
# mysql增量备份脚本cd /backup
dateDIR=`date +"%y-%m-%d"`
mkdir -p $dateDIR/data
path=/usr/local/mysql/data
mysqladmin -uroot -p123456 flush-logs
binlog_cp=`head -n -1 $path/mysql-bin.index | sed 's/.\///'`
for i in $binlog_cp
do
mysql -uroot -p123456 -e "FLUSH TABLES WITH READ LOCK; \! cp -p $path/$i /backup/$dateDIR/data/;"
donebinlog_rm=`tail -n 1 $path/mysql-bin.index | sed 's/.\///'`
mysql -uroot -p123456 -e "purge binary logs to '$binlog_rm'"欢迎讨论
这里什么意思 head -n -1?(特别是-1) sed 's/.\///'`??另外for i in $binlog_cp又是什么意思(for i in $binlog_cp
dodone
这个结构如何理解 ,为什么哟啊这样用
这里$binlog_cp 是一个具体的数值 (唯一的),
既然是唯一, 为何还来个for循环 ?)
错务的更新现在要知道 binlog增量备份可以做到只更新某个表吗??