操作Mysql的Shell脚本

【目录】

1.MySQL的热备份脚本

2.用FTP同步服务器

3.Keepalived的监控切换脚本

4.SVN的版本库的批量备份

5.自动监控ADSL并重拔号

6.Linux批量生成生成帐户(10月11日更新)

7.测试局域网内主机是否alive(10月11日更新)

一、MySQL的热备份脚本

这是MySQL的备份方式之一,脚本如下:

#!/bin/bash

PATH=/usr/local/sbin:/usr/bin:/bin

# The Directory of Backup

BACKDIR=/usr/mysql_backup

# The Password of MySQL

ROOTPASS=password

# Remake the Directory of Backup

rm -rf $BACKDIR

mkdir -p $BACKDIR

# Get the Name of Database

DBLIST=`ls -p /var/lib/mysql | grep / | tr -d /`

# 偷瞄了下我同事写脚本的方式,发现他直接将DBLIST一个个手动敲上去了

# 数据库少的情况是可以的,如果数据库是成百以上呢,呵呵

# Backup with Database

for dbname in $DBLIST

do

mysqlhotcopy $dbname -u root -p $ROOTPASS $BACKDIR | logger -t mysqlhotcopy

done

许多系统管理员喜欢用mysqldump --opt来备份数据库,由于比较简单,我这里就不重复了。

二、用FTP同步服务器

许多系统管理员喜欢用rsync同步二台服务器之间的数据,但我们更喜欢用FTP来实现,其好处是:

1.FTP比rsync更能耗尽带宽,所以它更适合同步数据库(尤其是几百G的数据)

2.配置起来相当方便,尤其是用pureftpd

3.rsync的优势是可以快速海量同步小文件,比如二级目录或三级目录下的批量图片等

基本上FTP和rsync同步各有优势,看系统管理员的取舍了。以下是本部分要介绍的FTP同步的shell脚本方式:

FTPOLDDATE=`date +%Y-%m-%d -d '-60 days'`

#在FTP定义60天间的日期变量,是为了在FTP端保存60天的数据,逾期删除。

HOST=192.168.4.199

FTP_USERNAME=db

FTP_PASSWORD=password

cd ${BACKDIR}/${DATE}

ftp -i -n -v 《 !

open ${HOST}

user ${FTP_USERNAME} ${FTP_PASSWORD}

bin

cd ${FTPOLDDATE}

mdelete *

cd

rmdir ${FTPOLDDATE}

mkdir ${DATE}

cd ${DATE}

mput *

bye

!

三、Keepalived的监控切换脚本

实现功能如下:针对Nginx+Keepalived,编写nginx监控脚本nginx_pid.sh,放置在后台一直监控nginx进程;如进程消失,尝试重启nginx,如是失败则立即停掉本机的keepalived服务,让另一台负载均衡器接手。此脚本详细内容如下:

#!/bin/bash

while :

do

nginxpid=`ps -C nginx --no-header | wc -l`

if [ $nginxpid -eq 0 ];then

ulimit -SHn 65535 #在并发数很大的情况下,连接数过小会导致linux狂报错,所以直接在nginx启动前定义

/usr/local/nginx/sbin/nginx

sleep 5

if [ $nginxpid -eq 0 ];then

/etc/init.d/keepalived stop

fi

fi

sleep 5

done

相关说明可参考我发在组网频道的《企业级WEB的负载均衡高可用之LVS+Keepalived》一文。

四、SVN的版本库的批量备份

实现其功能蛮简单,主要是用了svnadmin hotcopy,这东东功能很强大,我经常用于svn的版本库的转移(顺便说一句,上次不小心误操作将库删光了,很轻松的用svnadmin hotcopy将其恢复过来了)。

for PROJECT in test project svntest

do

cd ${SVNDIR}

${SVNADMIN} hotcopy ${PROJECT} ${BACKDIR}/${DATE}/${PROJECT} --clean-logs

cd ${BACKDIR}/${DATE}

tar zcvf ${PROJECT}_svn_${DATE}.tar.gz ${PROJECT} > /dev/null

rm -rf ${PROJECT}

echo "Repository: ${PROJECT} backup done into ${BACKDIR}/${DATE}/ Successful!"

时间: 2024-09-30 22:27:06

操作Mysql的Shell脚本的相关文章

实战模拟监控MySQL服务shell脚本小结_linux shell

1)端口判断法==>仅适合数据库本地使用 法1:if条件判断方法 [root@oldboy scripts]# cat check_db01.sh #!/bin/sh #created by oldboy #mail:oldboy521@gmail.com PortNum=`netstat -lnt|grep 3306|wc -l` if [ $PortNum -eq 1 ] then echo "mysqld is running." else echo "mysql

一个简单的MySQL备份Shell脚本_Mysql

#!/bin/bash #this is a script of mysql backup if [ ! -d /mydata/data1/backup ] ;then mkdir /mydata/data1/backup fi cd /mydata/data1/backup file=$(find . -type f -mtime -7 | grep .*all.sql) #查找7天内是否有备份的文件 echo $file if [ -z $file ] ;then echo "backup

linux中mysql备份shell脚本代码_linux shell

第一步:在你的linux服务器中定义备份目录: 复制代码 代码如下: mkdir /var/lib/mysqlbackup cd /var/lib/mysqlbackup 第二步:下面是最重要的一步了,就是写定时备份脚本. 复制代码 代码如下: vi dbbackup.sh 代码文件如下 复制代码 代码如下: #!/bin/sh# mysql data backup script## use mysqldump --help,get more detail.#BakDir=/root/back/

linux中简单备份mysql数据库shell脚本

 代码如下 复制代码 #!/bin/bash root_path=/data/backup #进入备份文件存放目录 cd $root_path #备份文件名,系统当前时间(年-月-日),注意'+'后边不留空格 file_name=$(date +"%Y-%m-%d").sql #username:用户名,password:密码,database:数据库名 mysqldump -uusername -ppassword database > $file_name echo &quo

用shell脚本批量导出MYSQL数据库日志

mysqlbinlog 从二进制日志读取语句的工具.在二进制日志文件中包含的执行过的语句的日志可用来帮助从崩溃中恢复. 一.MYSQL数据库日志,有以下几种日志: 1.错误日志: -log-error 2.查询日志: -log 3.慢查询日志: -log-slow-queries 4.更新日志: -log-update 5.二进制日志: -log-bin 这里讨论的是MYSQL二进制日志的导出.导入:MYSQL二进制日志完整备份,增量备份. 默认情况下,所有日志创建于mysqld数据目录中,或者

shell脚本自动修复mysql损坏的表_linux shell

问题描述:最近查看mysql数据库服务器日志,老发现有表损坏的错误日志,比如:120724 7:30:48 [ERROR] /data/soft/mysql/libexec/mysqld: Table './blog/wp_links' is marked as crashed and last (automatic?) repair failed 手动修复了表后正常了,没过几天又发现出现错误. 解决方法:于是就写了个脚本来自动修复.是根据一定时间检测一次日志,如果有这样的错误记录时,就对出错的

Mysql压力测试shell脚本

Mysql压力测试shell脚本 Mysql自带了压力测试工具mysqlslap,所以我们可以不用自己编写程序来测试Mysql读取的压力.压力测试shell脚本如下:  www.bitsCN.com [plain] #!/bin/sh while true do mysqlslap --concurrency=100 --iterations=10 --create-schema='test' --query="insert into test(c1,c2,c3,c4) values(1,1,1

关于mysql shell脚本的问题

问题描述 关于mysql shell脚本的问题 第四行我想打印出结果,正确写法是什么,求大神帮忙!!! 解决方案 #!/bin/sh value=`mysql -uroot -proot -e "use powersystemview; select count(*) from alarminfo;"` echo $value exit 0 解决方案二: shell脚本内与mysql交互shell脚本中使用MySQLMysql压力测试shell脚本

实现MySQL定时批量检查表repair和优化表optimize table的shell脚本_linux shell

本文介绍mysql定时批量检查表repair和优化表optimize table的shell脚本,对于MySQL数据库的定期维护相当有用!如下所示: #!/bin/bash host_name=192.168.0.123 user_name=jincon.com user_pwd=jincon.com database=my_db_name need_optmize_table=true tables=$(mysql -h$host_name -u$user_name -p$user_pwd $