文档章节

mysql 自动化脚本

罗布V
 罗布V
发布于 2016/11/01 11:44
字数 371
阅读 8
收藏 1
#!/bin/ash


USER="root"
NEWUSER="xxx"
PASSWORD="xxxx"
NEWPASSWORD="xxxxxxxxxx"
DATE=`date +%Y/%m/%d`
OUTPUT="/mnt/data/database/$DATE"
OPERATOR="export"
FILES="/tmp/database/*"
DATABASEPATH="/mnt/db/mysql"
TMPPATH="/mnt/db/tmp"
echo $OUTPUT
[ ! -d "$OUTPUT" ] && {
    echo "mkdir $OUTPUT"
    mkdir -p $OUTPUT
}
#数据为初始化
action_init(){
    flag=$(uci get -q system.@general[0].databaseinit)
    [ ! -z "$flag" ] && return
	[  -z "$flag" ] && {
        section=$(uci get -q system.@general[0])
		[ -z "$section" ] &&{
			uci add system general
		}
		uci set system.@general[0].databaseinit=1
        uci commit system
	}
    [ -d "$DATABASEPATH" ] && rm -rf $DATABASEPATH
    [ -d "$TMPPATH" ] && rm -rf $TMPPATH
    sed -i "s,^datadir.*,datadir         = \"$DATABASEPATH\",g" /etc/my.cnf
    sed -i 's,^tmpdir.*,tmpdir          = "/mnt/db/tmp",g' /etc/my.cnf
    [ ! -d "$DATABASEPATH" ] && mkdir -p $DATABASEPATH
    [ ! -d "$TMPPATH" ] && mkdir -p $TMPPATH
    mysql_install_db --force
    /etc/init.d/mysqld start
    /etc/init.d/mysqld enable
    mysqladmin -u  $USER password "$PASSWORD"
    [ -f /tmp/adduser.sql ] && rm -rf /tmp/adduser.sql
    echo "insert into mysql.user(Host,User,Password) values(\"localhost\",\"$NEWUSER\",password(\"$NEWPASSWORD\"));">/tmp/adduser.sql
    echo "GRANT ALL PRIVILEGES ON *.* TO \"$NEWUSER\"@\"localhost\" IDENTIFIED BY \"$NEWPASSWORD\"; "
    echo "GRANT ALL PRIVILEGES ON *.* TO \"$NEWUSER\"@\"localhost\" IDENTIFIED BY \"$NEWPASSWORD\"; ">>/tmp/adduser.sql
    echo "flush privileges;">>/tmp/adduser.sql
    mysql -u $USER -p$PASSWORD < /tmp/adduser.sql
    rm -rf /tmp/adduser.sql
}
#数据库导出
action_export(){
    databases=`mysql -u $USER -p$PASSWORD -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`
    echo "backup start"
    for db in $databases; do
        if [[ "$db" != "information_schema" ]] && [[ "$db" != "performance_schema" ]] && [[ "$db" != "mysql" ]] && [[ "$db" != _* ]] ; then
            echo "Dumping database: $db"
            [ -f $OUTPUT/`date +%Y%m%d`.$db.sql ] && {
                echo "rm sql file"
                rm -rf $OUTPUT/`date +%Y%m%d`.$db.sql
            }
            mysqldump -u $NEWUSER -p$NEWPASSWORD --databases $db > $OUTPUT/`date +%Y%m%d`.$db.sql
            [ -f $OUTPUT/`date +%Y%m%d`.$db.sql.gz ] && {
                echo "rm file"
                rm -rf $OUTPUT/`date +%Y%m%d`.$db.sql.gz
            }
            gzip $OUTPUT/`date +%Y%m%d`.$db.sql
            rm -rf $OUTPUT/`date +%Y%m%d`.$db.sql
        fi
    done
    echo "backup end"
}
#数据库导入
action_import(){
    for f in $FILES
    do
        [ -f "$f" ] &&{
            echo "Processing $f file..."
            mysql -u $NEWUSER -p$NEWPASSWORD < $f
        }
    done
}
[ ! -z "$1" ] && OPERATOR=$1
[ ! -z "$2" ] && USER=$2
[ ! -z "$3" ] && PASSWORD=$3


if [ "$OPERATOR" == "export" ]; then
    action_export
elif [ "$OPERATOR" == "import" ]; then
    action_import
elif [ "$OPERATOR" == "init" ]; then
    action_init
fi


© 著作权归作者所有

共有 人打赏支持
罗布V
粉丝 13
博文 60
码字总数 47114
作品 0
温州
程序员
实战-Mysql5.6.36脚本编译安装及初始化

概述 本文为centos7.3自动化编译安装mysql5.3.6的脚本及后续初始化操作,话不多少,直接上脚本。 安装脚本install.py如下: 配置文件my.cnf 使用方法: 1.操作系统需要配置yum源 2.操作系统版...

sdhzdtwhm
2017/12/12
0
0
使用ruby的fpm模块实现对二进制MySQL的RPM包制作,实现一键安装

随着互联网的发展,一些互联网企业,甚至于传统企业的服务器也是越来越多。将面临的挑战其中之一就是自动化运维管理。假设我们需要自动化部署很多的应用,而这些应用又很复杂,过程多,需要源...

蓝色_风暴
2017/08/09
0
0
ansible-playbook基于role的配置一键安装zabbix客户端以及拉取自定义监控脚本

在IT工作中,您可能会一遍又一遍地执行相同的任务;没有人喜欢重复的任务。通过Ansible,IT管理员可以开始自动化日常任务中的苦差事。自动化解放了管理人员,专注于通过加快应用交付时间和建...

legehappy
05/08
0
0
【目录】mysql 学习

数据库排行榜 http://db-engines.com/en/ranking [MySQL运维] mysql 5.1 升级编译安装5.6把原MyISAM表转换成InnoDB,并全局备份一次【原创】 http://990487026.blog.51cto.com/10133282/169...

990487026
2015/09/09
0
0
Shell脚本中执行mysql语句

对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本。本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考。对于脚本输出的结果美...

Carl_
2015/02/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 恨不得给你买张飞机挂票

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @开源中国首席灵魂师:分享张希/曹方的单曲《认真地老去》 来不及认真的年轻过,就认真的老去! 《认真地老去》- 张希/曹方 手机党少年们想听...

小小编辑
38分钟前
69
5
如何实现靠谱的分布式锁?

分布式锁,是用来控制分布式系统中互斥访问共享资源的一种手段,从而避免并行导致的结果不可控。基本的实现原理和单进程锁是一致的,通过一个共享标识来确定唯一性,对共享标识进行修改时能够...

郑加威
今天
1
0
Mac OS X下Maven的安装与配置

Mac OS X 安装Maven: 下载 Maven, 并解压到某个目录。例如/Users/robbie/apache-maven-3.3.3 打开Terminal,输入以下命令,设置Maven classpath $ vi ~/.bash_profile 添加下列两行代码,之后...

TonyStarkSir
今天
3
0
关于编程,你的练习是不是有效的?

最近由于工作及Solution项目的影响,我在重新学习DDD和领域建模的一些知识。然后,我突然就想到了这个问题,以及我是怎么做的? 对于我来说,提升技能的项目会有四种: 纯兴趣驱动的项目。即...

问题终结者
今天
4
0
打开eclipse出现an error has occurred see the log file

解决方法: 1,打开eclipse安装目录下的eclipse.ini文件; 2,打开的文本文件最后添加一行 --add-modules=ALL-SYSTEM 3,保存重新打开Eclipse。...

任梁荣
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部