天天看點

mysql遠端備份并解決編碼問題腳本

#!/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;

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).sql

sleep 60s

/usr/bin/find /back/mysqldb/s198db/ -name "*.tar.gz"  -mtime +5 -exec rm -rf {} \;

/usr/bin/find /back/mysqldb/s198db/ -name "*.sql"  -mtime +1 -exec rm -rf {} \;

惆怅上面這種方法隻解決了mysql服務端與客服端編碼不一樣的時候出現問題

,今天我去查備份依然看到 部分database 與mysql 的編碼不一樣那隻能 連接配接的時候 看庫的編碼 依據庫的編碼方式連接配接了于是我又 該了腳本

IP=IP位址

U=root

P=mima

DB=" 需要備份的庫以空格隔開就可以了"

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

/usr/bin/find $BACKDIR -name "*.tar.gz"  -mtime +5 -exec rm -rf {} \;

/usr/bin/find $BACKDIR -name "*.sql"  -mtime +0  -exec rm -rf {} \;

如果表的編碼與庫的還不一樣那樣就麻煩了。我們公司的還有表的字段不一樣,我就愁死了 這跟程式員有關系 沒辦法 。

本文轉自 houzaicunsky 51CTO部落格,原文連結:http://blog.51cto.com/hzcsky/640926