#!/bin/bash
IP=192.168.0.198
mysqlpath=/usr/local/mysql/bin
variables=`$mysqlpath/mysql -u root -pmima -h$IP -e" show variables like 'character\_set\_%';" |awk '{print$2}' |sed -n '4'p`
$mysqlpath/mysqldump -uroot -pmima -h$IP --default-character-set=$variables keyword_ad>/back/mysqldb/s198db/keyword_ad_$(date +%Y%m%d).sql;
$mysqlpath/mysqldump -uroot -pmima -h$IP --default-character-set=$variables mysql>/back/mysqldb/s198db/s198mysql_$(date +%Y%m%d).sql;mysql
sleep 180s程序員
cd /back/mysqldb/s198db/
/bin/tar zcf keyword_ad_$(date +%Y%m%d).tar.gz keyword_ad_$(date +%Y%m%d).sql
/bin/tar zcf s198mysql_$(date +%Y%m%d).tar.gz s198mysql_$(date +%Y%m%d).sqlsql
sleep 60sbash
/usr/bin/find /back/mysqldb/s198db/ -name "*.tar.gz" -mtime +5 -exec rm -rf {} \;ide
sleep 60s編碼
/usr/bin/find /back/mysqldb/s198db/ -name "*.sql" -mtime +1 -exec rm -rf {} \;
3d
惆悵上面這種方法只解決了mysql服務端與客服端編碼不同的時候出現問題it
,今天我去查備份依然看到 部分database 與mysql 的編碼不同那隻能 鏈接的時候 看庫的編碼 依據庫的編碼方式鏈接了因而我又 該了腳本class
#!/bin/bash
IP=IP地址awk
U=root
P=mima
DB=" 須要備份的庫以空格隔開就能夠了"
mysqlpath=/usr/local/mysql/bin
BACKDIR=/back/mysqldb/D213db/
date=`date +%Y%m%d`
for data in $DB
do
variables=`$mysqlpath/mysql -u $U -p$P -h$IP -e "show create database $data;" |awk '{print$9}' |sed -n '2'p`
$mysqlpath/mysqldump -u $U -p$P -h$IP --default-character-set=$variables $data > $BACKDIR$data"_"$date.sql && echo "$variables "
echo "$data"
cd $BACKDIR
/bin/tar zcf $data"_"$date.tar.gz $data"_"$date.sql&&echo "$data tar success "
done
sleep 60s
/usr/bin/find $BACKDIR -name "*.tar.gz" -mtime +5 -exec rm -rf {} \;
sleep 60s
/usr/bin/find $BACKDIR -name "*.sql" -mtime +0 -exec rm -rf {} \;
若是表的編碼與庫的還不同那樣就麻煩了。咱們公司的還有表的字段不同,我就愁死了 這跟程序員有關係 沒辦法 。