- 浏览: 2538814 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (676)
- linux运维 (157)
- php (65)
- mysql (78)
- nginx (27)
- apche (18)
- framework (6)
- windows (9)
- IDE工具 (23)
- struts2 (7)
- java (13)
- 移动互联网 (14)
- memcache redis (23)
- shell基础/命令/语法 (37)
- shell (50)
- puppet (4)
- C (11)
- python (9)
- 产品经理 (27)
- Sphinx (4)
- svn (12)
- 设计构建 (12)
- 项目管理 (44)
- SEO (1)
- 网站架构 (26)
- 审时度势 (42)
- 网络 (14)
- 激发事业[书&视频] (81)
- 其它 (12)
- 摄影 (8)
- android (21)
最新评论
-
zhongmin2012:
原文的书在哪里
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
renzhengzhi:
你好,请问个问题,从master同步数据到slave的时候,s ...
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
ibc789:
你好,看了你的文章,我想请教个问题, 我在用 redis的时候 ...
redis 的两种持久化方式及原理 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器
======================= 内网测试环境代码
----------------------- 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
发表评论
-
设置sudo为不需要密码
2015-04-17 09:04 10510有时候我们只需要执 ... -
mysql表修复
2015-04-07 10:16 102861.1命令myisamchk(必须停掉mysql服务,或者所操 ... -
haproxy 安装配置和负载实例
2015-03-27 11:49 11531一、环境说明实验环境 OS CentOS5.4 192.1 ... -
/dev/mapper/VolGroup00-LogVol00 100% 如何处理
2015-03-03 10:51 8209服务器磁盘跑满了, 命令查看 如下 [root@lo ... -
Table_locks_immediate
2014-08-25 15:46 3062Table_locks_immediate表示立即释放表锁数 ... -
Tsar开源:淘宝内部大量使用的系统监控工具
2014-08-07 09:51 971Tsar是淘宝的一个用来收集服务器系统和应用信息的采集报告 ... -
mysql分区
2014-02-21 10:38 1847mysql自5.1开始支持分区 ... -
InnoDB 引擎独立表空间 innodb_file_per_table
2013-02-25 11:14 1309http://deeplyloving.iteye.com ... -
Linux运维常用命令 (转载)
2013-01-31 10:23 25241 删除0字节文件find-type f - ... -
[汇总]shell笔试
2013-01-24 17:32 3363http://president.blog.51cto.co ... -
linux恢复 rm -rf 删除的文件:extundelete
2013-01-24 15:47 8910http://blog.csdn.net/pang6013 ... -
网站排障分析常用的命令
2013-01-21 18:17 1397------------------------------- ... -
mysql监测工具tuning-primer.sh
2013-01-21 17:57 2654【转】http://www.dbasky.net ... -
mysql主从日志的定期清理
2013-01-21 16:24 1153[转]http://wangwei007.blog.51 ... -
迁移vmware服务器后Device eth0 does not seem to be present
2013-01-21 10:58 2249用VMware 安装 linux 6.0 ... -
[转]Mysql报错:Result consisted of more than one row
2013-01-09 16:25 15862Error Code : 1172 Result consi ... -
根据bin log 分析管理员被莫名删除问题
2013-01-04 17:04 1161============== 根据bin log 分析管理 ... -
检测 mysql 的sleep进程数
2013-01-04 14:13 1661#!/bin/sh 注:这个脚 ... -
mysql中select * for update锁表的问题
2013-01-04 14:07 2508先前介绍过SELECT ... FOR UPDATE的用法 ... -
LoadRunner如何监控Linux系统资源 : rpc.rstatd
2012-12-17 14:49 10294一 简述:LoadRunner监控Linux资源时弹出如下错误 ...
相关推荐
本资源提供了一个专为MySQL 5.7.8及以前版本设计的shell脚本,它允许用户进行自定义配置,方便快捷地执行数据库备份操作。 首先,我们需要了解`shell`脚本。Shell是Unix或Linux操作系统中的命令解释器,它允许用户...
2. **编写备份脚本**:编写一个shell脚本,例如`bak.sh`,用于执行mysqldump备份。脚本应包含合适的参数,如数据库用户名、密码、主机IP和数据库名。例如:`mysqldump -u 用户名 -p 密码 -h 数据库ip test > /tmp/...
为了自动化这个过程,可以编写shell脚本,例如`backup_mysql.sh`,该脚本会每天自动执行一次,删除旧的备份,创建新的数据拷贝,并记录日志。通过设置cron定时任务,可以确保备份按照设定的时间执行。 **二、使用`...
MySQL是世界上最流行的关系型数据库管理系统之一,而mysqldump工具是MySQL提供的一个命令行实用程序,用于备份数据库或导出数据。在这个5.6.12版本中,我们可以利用它进行远程数据库备份,这对于数据库管理和维护至...
在shell脚本中,我们可以使用`mysqldump`命令来实现这两种类型的备份。 **全量备份**: 使用`mysqldump`进行全量备份的基本语法如下: ```bash mysqldump -u [username] -p[password] [database_name] > [backup_...
本文将详细讲解如何使用Shell脚本实现对数据库的定时备份,以及涉及到的相关技术。 首先,Shell脚本是Unix/Linux操作系统中的一种强大的命令行解释器,它允许用户编写自动化任务,例如执行一系列命令、处理文件或...
总的来说,`mysqldump-secure`是一个强大的MySQL备份工具,它不仅提供了基础的数据库备份功能,还增加了加密、压缩、日志和监控集成等高级特性,使得数据库备份更加安全可靠。对于任何重视数据安全的Linux环境,`...
针对MySQL 5.7.8及更高版本,我们可以利用shell脚本来实现自动化且可配置的多线程备份,从而提高备份效率。下面将详细讲解如何使用shell脚本进行多线程备份以及相关的技术要点。 首先,理解shell脚本。Shell是Linux...
shell> mysqldump [options] --database DB1 [DB2,DB3...] // 备份所有数据库 shell> mysqldump [options] --all-database 如果没有指定数据库中的任何表,默认导出所有数据库中的所有表。 示例: 1. 备份所有...
MySQL是世界上最流行的开源关系型数据库管理系统之一,而`mysqldump`是MySQL提供的一款用于数据库备份和恢复的工具。本篇文章将详细讲解如何使用`mysqldump`进行数据库的备份与还原,以及与之相关的`qt`编程中如何...
本文将详细介绍如何使用 `mysqldump` 工具进行全量备份和增量备份,以及如何结合shell脚本来实现定时备份。 首先,全量备份是备份数据库的所有数据,不依赖于之前的备份。在MySQL中,我们可以使用 `mysqldump` 命令...
在这个场景下,我们讨论的【标题】是“shell备份数据库”,这表明我们将使用Linux或Unix系统的shell命令来创建一个自动备份MySQL数据库的脚本。 【描述】提到了两个关键步骤:首先,编写并运行shell脚本来执行...
本文将详细介绍如何使用`mysqldump`工具创建shell脚本进行自动备份,并解析关键参数,同时探讨还原过程中可能遇到的问题及解决方案。 一、mysqldump简介 `mysqldump`是MySQL提供的一款命令行实用程序,用于导出...
#/usr/bin/mysqldump 例如专用车的mysqldump就不在此目录下 mysqldump --all-databases -f -uroot -p123123 -h 127.0.0.1> $bakdir/$baksql echo "begin tar: $bakdir/$baksql" tar -jpcv -f $bakdir/$baksql_tar...
Linxu系统中,通过shell脚本,调用mysqldump,备份mysql数据库
3. **创建备份**:使用`mysqldump`工具生成SQL文件,如`mysqldump -u [username] -p[password] [database_name] > backup.sql`,这将创建一个包含数据库结构和数据的SQL文件。 4. **可选:压缩备份**:为了节省存储...
3. **执行备份**:使用`mysqldump`命令执行备份操作,并将结果保存到指定的文件中。 4. **备份结果处理**: - 如果备份成功,则创建备份文件的压缩包,并记录备份成功的消息到日志文件; - 如果备份失败,则记录...
手动备份虽然可靠,但耗时且容易遗漏,而通过编写shell脚本实现自动化备份则能极大地提高效率,确保数据的安全性。以下是一些关于如何创建和使用MySQL自动备份shell脚本的详细说明: 首先,我们需要一个能够执行...
- 创建一个Shell脚本,例如`/backup/backup.sh`,可以自动化整个备份过程,包括移动旧备份到另一个目录,执行mysqldump并将结果保存到特定文件。通过`crontab -e`设置定时运行该脚本。 7. **增量备份与mysqlbinlog...
`mysqldump`可以结合shell脚本实现自动备份,例如,每天或每周执行一次全量备份,并在其他时间进行增量备份。 `曾经的Mysql.doc`文件可能是关于使用`mysqldump`的更详细指南或教程,它可能涵盖了如何配置备份脚本、...