`
zhengdl126
  • 浏览: 2538814 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

shell备份mysqldump

 
阅读更多

 

 

======================= 内网测试环境代码

 

----------------------- sql_hub.sql

 select db_suffix from corp;

 

 

----------------------- sql_hub.txt

aa bb cc dd

 

 

 

----------------------- mysqldump_alldb.sh 【测试环境,三台db :hub,sc.kc】

#!/bin/sh

#bak路径

date_path=`date "+%Y-%m-%d"`
bak_path="/usr/local/shell/bak_mysql/${date_path}"

mkdir -p $bak_path

#MySQL用户名,格式:空或者-h hostname或者-h ip
db_host_hub="-h 192.168.1.78"
db_host_sc="-h 192.168.1.78"
db_host_kc="-h 192.168.1.87"

#MySQL用户名,格式:空或者-h hostname或者-h ip
db_port="-P 3301"

#MySQL用户名,格式:-u root或者-u username
db_root_name="-ureplication"

#MySQL用户密码,格式:空或者-p password
db_root_pass="-p123456"
#########参数配置

clear

echo "mysqldump all db..."
db_hub="sc_hub"
mysql $db_root_name $db_root_pass $db_port $db_host_hub $db_hub < sql_hub.sql |sed '1d'|tr -s '\r\n' ' ' > sql_hub.txt
all_corp=sql_hub.txt
if [[ ! -s "sql_hub.txt" ]]; then
   echo "corp is empty!"
fi
if [[ -z "$*" &&  ! -s "sql_hub.txt" ]]; then
    echo "如果没有SQL文件请运行下面命令"
    #echo "/usr/bin/svn export --username ${svn_username} --password ${svn_password} --force ${svn_url} ${sql_path}"
    echo
    echo "请输入数据库名称。"
    echo "多个数据库名称请用空格分隔。"
    echo "$0 db_name1 [db_name2 db_name3 ...]"
    echo
    exit
fi

 

# 备份hub webauth

mysqldump $db_root_name $db_root_pass $db_port $db_host_hub --default-character-set=utf8 -E -R --add-drop-table --triggers=false sc_hub > $bak_path/sc_hub.sql
mysqldump $db_root_name $db_root_pass $db_port $db_host_hub --default-character-set=utf8 -E -R --add-drop-table --triggers=false webauth > $bak_path/webauth.sql

 


cat $all_corp
#循环创建数据库的存储过程、函数、视图
for db_name in `cat $all_corp` ;do
    echo ----------
    echo "开始备份${db_name}数据库的存储过程、函数、视图结构..."

mysqldump $db_root_name $db_root_pass $db_port $db_host_sc --default-character-set=utf8 -E -R --add-drop-table --triggers=false "sc_${db_name}" > $bak_path/"sc_${db_name}.sql"
mysqldump $db_root_name $db_root_pass $db_port $db_host_kc --default-character-set=utf8 -E -R --add-drop-table --triggers=false "kc_${db_name}" > $bak_path/"kc_${db_name}.sql"


    echo "结束备份${db_name}数据库的存储过程、函数、视图结构..."

    echo "----------"
done

 

 

 

======================= 正式测试环境代码

 

 

 

 

----------------------- sql_hub.sql

  SELECT corp.db_suffix,game_corpdb.game_id,game_corpdb.db_host FROM corp LEFT JOIN game_corpdb ON corp.id = game_corpdb.corp_id;

 

 

----------------------- sql_hub.txt

sys     2       192.168.102.71:3301
sys     3       192.168.102.71:3301
tem     2       192.168.102.71:3301
tem     3       192.168.102.71:3301
ta      2       192.168.102.71:3301
ta      3       192.168.102.71:3301
tb      2       192.168.102.71:3301
tb      3       192.168.102.71:3301
ce1     2       192.168.102.71:3302
ce1     3       192.168.102.71:3302
ce2     2       192.168.102.71:3302
ce2     3       192.168.102.71:3302
ce3     2       192.168.102.71:3302
ce3     3       192.168.102.71:3302
ce4     2       192.168.102.71:3302
ce4     3       192.168.102.71:3302
ce5     2       192.168.102.71:3302
ce5     3       192.168.102.71:3302

 

 

----------------------- mysqldump_alldb.sh【正式环境,各公司可以发布再不同的ip和port上】

 

#!/bin/sh


#SQL脚本路径
date_path=`date "+%Y-%m-%d"`
bak_path="/usr/local/shell/bak_mysql/${date_path}"
mkdir -p $bak_path

#MySQL用户名,格式:空或者-h hostname或者-h ip
db_host_hub="-h 192.168.102.71"
#MySQL用户名,格式:空或者-h hostname或者-h ip
db_port="-P 3301"

#MySQL用户名,格式:-u root或者-u username
db_root_name="-ureplication"

#MySQL用户密码,格式:空或者-p password
db_root_pass="-p123456"
#########参数配置

clear

echo "mysqldump all db..."
db_hub="sc_hub"
mysql $db_root_name $db_root_pass $db_port $db_host_hub $db_hub < sql_hub.sql |sed '1d' > sql_hub.txt
all_corp=sql_hub.txt
if [[ ! -s "sql_hub.txt" ]]; then
   echo "corp is empty!"
fi
#cat $all_corp

# 备份hub webauth
mysqldump $db_root_name $db_root_pass $db_port $db_host_hub --default-character-set=utf8 -E -R --add-drop-table --triggers=false sc_hub > $bak_path/sc_hub.sql
mysqldump $db_root_name $db_root_pass $db_port $db_host_hub --default-character-set=utf8 -E -R --add-drop-table --triggers=false webauth > $bak_path/webauth.sql

#循环创建数据库的存储过程、函数、视图
#cat $all_corp
cat $all_corp | while read line
do
    echo ----------
    flag1=`echo "$line" | awk 'BEGIN {FS=" "}{print $1}'`
    flag2=`echo "$line" | awk 'BEGIN {FS=" "}{print $2}'`
    flag3=`echo "$line" | awk 'BEGIN {FS=" "}{print $3}'`
    corp_db_host=`echo "$flag3" | awk 'BEGIN {FS=":"}{print $1}'`
    corp_db_port=`echo "$flag3" | awk 'BEGIN {FS=":"}{print $2}'`

    if [[ $flag2 -eq 2 ]];then
        corp_name="sc_${flag1}"
    else
        corp_name="kc_${flag1}"
    fi
    echo "开始备份${corp_name}数据库的存储过程、函数、视图结构..."


    mysqldump -h $corp_db_host $db_root_name $db_root_pass -P $corp_db_port --default-character-set=utf8 -E -R --add-drop-table --triggers=false $corp_name > $bak_path/"${corp_name}.sql"


    echo "结束备份${corp_name}数据库的存储过程、函数、视图结构..."

    echo "----------"

done

exit 0

 

 

======================= mysqldump_alldb.sh【正式环境,各公司可以发布再不同的ip和port上,增加导出单个公司和删除单个公司库

 

 

 

 

#!/bin/sh
# $1 表示公司数据库后缀db_suffix,只导出该公司;为空表示导出所有公司
# $2 delete表示删除$1所指定的公司ssc和klc数据库


#SQL脚本路径
date_path=`date "+%Y-%m-%d"`
bak_path="/usr/local/shell/bak_mysql/${date_path}"
mkdir -p $bak_path
root_path="/usr/local/shell"

#MySQL用户名,格式:空或者-h hostname或者-h ip
db_host_hub="-h 192.168.102.71"
#db_host_ssc="-h 192.168.102.71"
#db_host_klc="-h 192.168.102.71"
#MySQL用户名,格式:空或者-h hostname或者-h ip
db_port="-P 3301"

#MySQL用户名,格式:-u root或者-u username
db_root_name="-ureplication"

#MySQL用户密码,格式:空或者-p password
db_root_pass="-p123456"
#########参数配置

clear

echo "mysqldump db..."
db_hub="sc_hub"
#mysql $db_root_name $db_root_pass $db_port $db_host_hub $db_hub < sql_hub.sql |sed '1d'|tr -s '\r\n' ' ' > sql_hub.txt
mysql $db_root_name $db_root_pass $db_port $db_host_hub $db_hub < "${root_path}/sql_hub.sql" |sed '1d' > "${root_path}/sql_hub.txt"
all_corp="${root_path}/sql_hub.txt"
if [[ ! -s "${root_path}/sql_hub.txt" ]]; then
   echo "corp is empty!"
fi
#cat $all_corp

# 导出all db 时(不带参数)才备份hub webauth
if [[ -z "$*" ]]; then
mysqldump $db_root_name $db_root_pass $db_port $db_host_hub --default-character-set=utf8 -E -R --add-drop-table --triggers=false sc_hub > $bak_path/sc_hub.sql
mysqldump $db_root_name $db_root_pass $db_port $db_host_hub --default-character-set=utf8 -E -R --add-drop-table --triggers=false webauth > $bak_path/webauth.sql
fi


#循环创建数据库的存储过程、函数、视图
#cat $all_corp
cat $all_corp | while read line
do
    flag1=`echo "$line" | awk 'BEGIN {FS=" "}{print $1}'`
    flag2=`echo "$line" | awk 'BEGIN {FS=" "}{print $2}'`
    flag3=`echo "$line" | awk 'BEGIN {FS=" "}{print $3}'`
    corp_db_host=`echo "$flag3" | awk 'BEGIN {FS=":"}{print $1}'`
    corp_db_port=`echo "$flag3" | awk 'BEGIN {FS=":"}{print $2}'`
    if [[ $flag2 -eq 2 ]];then
        corp_name="sc_${flag1}"
    else
        corp_name="kc_${flag1}"
    fi

    #匹配公司数据库后缀名称,只导出该公司数据库备份
    if [[ -n "$*" ]]; then
        if [[ "$1" == "${flag1}" ]]; then
            if [[ "$2" == "delete" ]]; then
                echo "开始删除数据库${corp_name}"
                #echo "drop database $corp_name"
                #drop database $corp_name
                echo "结束删除数据库${corp_name}"
                continue
            fi
        else
            continue
        fi
    fi

   
    echo ----------
    echo "开始备份${corp_name}数据库的存储过程、函数、视图结构..."
    mysqldump -h $corp_db_host $db_root_name $db_root_pass -P $corp_db_port --default-character-set=utf8 -E -R --add-drop-table --triggers=false $corp_name > $bak_path/"${corp_name}.sql"
    echo "结束备份${corp_name}数据库的存储过程、函数、视图结构..."
    echo "----------"

done


exit 0

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    shell脚本可配置备份mysql5.7.8以前数据库.rar

    本资源提供了一个专为MySQL 5.7.8及以前版本设计的shell脚本,它允许用户进行自定义配置,方便快捷地执行数据库备份操作。 首先,我们需要了解`shell`脚本。Shell是Unix或Linux操作系统中的命令解释器,它允许用户...

    利用Zabbix监控mysqldump定时备份.docx

    2. **编写备份脚本**:编写一个shell脚本,例如`bak.sh`,用于执行mysqldump备份。脚本应包含合适的参数,如数据库用户名、密码、主机IP和数据库名。例如:`mysqldump -u 用户名 -p 密码 -h 数据库ip test &gt; /tmp/...

    Mysql数据备份与mysqldump增量备份.docx

    为了自动化这个过程,可以编写shell脚本,例如`backup_mysql.sh`,该脚本会每天自动执行一次,删除旧的备份,创建新的数据拷贝,并记录日志。通过设置cron定时任务,可以确保备份按照设定的时间执行。 **二、使用`...

    mysqldump java远程备份mysql数据库 cmd备份

    MySQL是世界上最流行的关系型数据库管理系统之一,而mysqldump工具是MySQL提供的一个命令行实用程序,用于备份数据库或导出数据。在这个5.6.12版本中,我们可以利用它进行远程数据库备份,这对于数据库管理和维护至...

    Mysql备份可以执行的shell脚本

    在shell脚本中,我们可以使用`mysqldump`命令来实现这两种类型的备份。 **全量备份**: 使用`mysqldump`进行全量备份的基本语法如下: ```bash mysqldump -u [username] -p[password] [database_name] &gt; [backup_...

    shell 脚本对数据库定时备份

    本文将详细讲解如何使用Shell脚本实现对数据库的定时备份,以及涉及到的相关技术。 首先,Shell脚本是Unix/Linux操作系统中的一种强大的命令行解释器,它允许用户编写自动化任务,例如执行一系列命令、处理文件或...

    linux-Mysqldumpsecure加密mysqldump脚本

    总的来说,`mysqldump-secure`是一个强大的MySQL备份工具,它不仅提供了基础的数据库备份功能,还增加了加密、压缩、日志和监控集成等高级特性,使得数据库备份更加安全可靠。对于任何重视数据安全的Linux环境,`...

    shell脚本可配置多线程备份mysql5.7.8以后数据库.rar

    针对MySQL 5.7.8及更高版本,我们可以利用shell脚本来实现自动化且可配置的多线程备份,从而提高备份效率。下面将详细讲解如何使用shell脚本进行多线程备份以及相关的技术要点。 首先,理解shell脚本。Shell是Linux...

    mysql运维必须熟练掌握备份和恢复的技术

    shell&gt; mysqldump [options] --database DB1 [DB2,DB3...] // 备份所有数据库 shell&gt; mysqldump [options] --all-database 如果没有指定数据库中的任何表,默认导出所有数据库中的所有表。 示例: 1. 备份所有...

    mysql使用mysqldump备份和还原

    MySQL是世界上最流行的开源关系型数据库管理系统之一,而`mysqldump`是MySQL提供的一款用于数据库备份和恢复的工具。本篇文章将详细讲解如何使用`mysqldump`进行数据库的备份与还原,以及与之相关的`qt`编程中如何...

    mysql mysqldump数据备份和增量备份

    本文将详细介绍如何使用 `mysqldump` 工具进行全量备份和增量备份,以及如何结合shell脚本来实现定时备份。 首先,全量备份是备份数据库的所有数据,不依赖于之前的备份。在MySQL中,我们可以使用 `mysqldump` 命令...

    shell 备份数据库

    在这个场景下,我们讨论的【标题】是“shell备份数据库”,这表明我们将使用Linux或Unix系统的shell命令来创建一个自动备份MySQL数据库的脚本。 【描述】提到了两个关键步骤:首先,编写并运行shell脚本来执行...

    mysql备份shell脚本与备份文件的还原 ,每日和每月备份shell脚本,重要参数说明,还原时的主要问题分析与解决

    本文将详细介绍如何使用`mysqldump`工具创建shell脚本进行自动备份,并解析关键参数,同时探讨还原过程中可能遇到的问题及解决方案。 一、mysqldump简介 `mysqldump`是MySQL提供的一款命令行实用程序,用于导出...

    shell脚本备份

    #/usr/bin/mysqldump 例如专用车的mysqldump就不在此目录下 mysqldump --all-databases -f -uroot -p123123 -h 127.0.0.1&gt; $bakdir/$baksql echo "begin tar: $bakdir/$baksql" tar -jpcv -f $bakdir/$baksql_tar...

    Linxu系统shell脚本备份mysql数据库

    Linxu系统中,通过shell脚本,调用mysqldump,备份mysql数据库

    Linux下mysql数据库备份以及恢复shell脚本

    3. **创建备份**:使用`mysqldump`工具生成SQL文件,如`mysqldump -u [username] -p[password] [database_name] &gt; backup.sql`,这将创建一个包含数据库结构和数据的SQL文件。 4. **可选:压缩备份**:为了节省存储...

    Linux下定时备份MySQL数据库的Shell脚本.pdf

    3. **执行备份**:使用`mysqldump`命令执行备份操作,并将结果保存到指定的文件中。 4. **备份结果处理**: - 如果备份成功,则创建备份文件的压缩包,并记录备份成功的消息到日志文件; - 如果备份失败,则记录...

    mysql自动备份shell脚本

    手动备份虽然可靠,但耗时且容易遗漏,而通过编写shell脚本实现自动化备份则能极大地提高效率,确保数据的安全性。以下是一些关于如何创建和使用MySQL自动备份shell脚本的详细说明: 首先,我们需要一个能够执行...

    使用mysqldump导入数据和mysqldump增量备份(mysqldump使用方法)

    - 创建一个Shell脚本,例如`/backup/backup.sh`,可以自动化整个备份过程,包括移动旧备份到另一个目录,执行mysqldump并将结果保存到特定文件。通过`crontab -e`设置定时运行该脚本。 7. **增量备份与mysqlbinlog...

    使用mysqldump命令导出MYSQL数据库

    `mysqldump`可以结合shell脚本实现自动备份,例如,每天或每周执行一次全量备份,并在其他时间进行增量备份。 `曾经的Mysql.doc`文件可能是关于使用`mysqldump`的更详细指南或教程,它可能涵盖了如何配置备份脚本、...

Global site tag (gtag.js) - Google Analytics