企业Shell面试题6:MySQL数据库分表备份

请实现对MySQL数据库进行分表备份,用脚本实现。

解答:

[root@db01 scripts]# cat fenbiao.sh
#!/bin/bash
#. /etc/rc.d/init.d/functions start_db () {
if [ -e /etc/init.d/mysqld ]
then
M_ST=$(/etc/init.d/mysqld status|awk '{print $3}')
[ "${M_ST}" != "running" ]&&/etc/init.d/mysqld start
sleep
M_ST=$(/etc/init.d/mysqld status|awk '{print $3}')
[ "${M_ST}" != "running" ]||exit
else
echo "start up file not exits,error"
exit fi
} dump_db () {
for db in `mysql -u root -poldboy123 -e "show databases;"|sed '1,2d'`
do
for tb in `mysql -u root -poldboy123 -e "use $db;show tables;"|sed '1d'`
do
mkdir -p /server/dbbackup/$(date +%F)/$db
/application/mysql/bin/mysqldump --lock-tables= -uroot -poldboy123 $db $tb >/server/dbbackup/$(date +%F)/${db}/${db}.${tb}$(date +%F).sql done
done
} main() {
M_ST=$(/etc/init.d/mysqld status|awk '{print $3}')
if [ "${M_ST}" != "running" ]
then
echo "to start db"
start_db
sleep fi
dump_db >/dev/null >& } main

方法二:之分库备份:

[root@db01 scripts]# cat fenku_backup.sh
#!/bin/bash
#gaobo 40team @qq.com
#
#
#对数据库进行启动二次检查
function checkdb() {
if [ -f /etc/init.d/mysqld ]
then
db_stat=$(/etc/init.d/mysqld status|awk '{print $3}')
if [ "${db_stat}" != "running" ]
then
/etc/init.d/mysqld start
sleep
db_stat=$(/etc/init.d/mysqld status|awk '{print $3}')
echo $db_stat
[ "${db_stat}" != "running" ] && /etc/init.d/mysqld start
sleep
db_stat=$(/etc/init.d/mysqld status|awk '{print $3}')
echo $db_stat
[ "${db_stat}" != "running" ] && {
echo "启动失败,请检查数据库"
exit ;
} fi else
echo "数据库启动文件不存在请检查" fi } # 按照库进行分库不同的文件备份
# -e 不进入数据库执行命令
function seperate_db() {
for db in $(mysql -uroot -poldboy123 -e "show databases;"|awk 'NR>1{print $0}')
do
/application/mysql/bin/mysqldump --lock-tables= -uroot -poldboy123 $db >/server/dbbackup/$(date +%F)/${db}$(date +%F).sql done } #按照数据库的表为不同文件进行备份
#
seperate_tb () {
for db in `mysql -u root -poldboy123 -e "show databases;"|sed '1,2d'`
do
for tb in `mysql -u root -poldboy123 -e "use $db;show tables;"|sed '1d'`
do
mkdir -p /server/dbbackup/$(date +%F)/$db
/application/mysql/bin/mysqldump --lock-tables= -uroot -poldboy123 $db $tb >/server/dbbackup/$(date +%F)/${db}/${db}.${tb}$(date +%F).sql done
done
} function main() {
checkdb case $ in
seperate_db)
seperate_db >/dev/null >&
;;
seperate_tb)
seperate_tb >/dev/null >&
;;
*)
echo "Usage fenku_backup.sh {seperate_db|seperate_tb}"
;;
esac
} main $

6:7 题一起MySQL数据库分库备份的更多相关文章

  1. mysql数据库分库备份脚本

    mysql数据库分库备份脚本 版本1 for dbname in `mysql -uroot -poldboy123 -e "show databases;" |grep -Evi ...

  2. Mysql数据库分库备份,分表备份

    分库备份 #!/bin/sh DBPATH=/server/backup MYUSER=root MYPASS=oldboy123 SOCKET=/data/3306/mysql.sock MYCMD ...

  3. mysql数据库的备份和恢复

    Mysql数据库的备份和恢复 1.备份单个数据库 mysql数据库自带了一个很好用的备份命令,就是mysqldump,它的基本使用如下: 语法:mysqldump –u <用户名> -p ...

  4. MySQL数据库入门备份数据库

    MySQL数据库入门——备份数据库   一提到数据,大家神经都会很紧张,数据的类型有很多种,但是总归一点,数据很重要,非常重要,因此,日常的数据备份工作就成了运维工作的重点中的重点的重点....... ...

  5. 如何用SQL语句实现Mysql数据库的备份与还原

    以前一直做android客户端的项目,根本没有开发asp.net mvc的开发,现阶段做了一个模块,参数设置,以及数据库的备份与还原.其需求如下: 参数设置 本项参数设置为对自动数据备份进行设置,管理 ...

  6. mysqldump常用于MySQL数据库逻辑备份

    mysqldump常用于MySQL数据库逻辑备份. 1.各种用法说明 A. 最简单的用法: mysqldump -uroot -pPassword [database name] > [dump ...

  7. MYSQL数据库增量备份

    MySQL数据库增量备份,在这之前修改我们的数据库配置文件/etc/my.cnf开启bin-log日志功能即可.接下来是我参考了下网上的一些方法,自己写的,主要还是要能学到他的一些思路和方法. #fu ...

  8. [知了堂学习笔记]_Java代码实现MySQL数据库的备份与还原

    通常在MySQL数据库的备份和恢复的时候,多是采用在cmd中执行mysql命令来实现. 例如: mysqldump -h127.0.0.1 -uroot -ppass test > d:/tes ...

  9. mysql数据库的备份和还原的总结

    mysql数据库的备份和还原的总结 (来自一运维同事的总结) 1. 备份方式: 热备:数据库在线进行备份,不影响读和写的在线备份方式! 温备:数据库在线进行备份,对表备份时先锁定写操作,仅可以执行读操 ...

随机推荐

  1. UVa 164 - String Computer

    题目:编辑距离.给你两个串,将已知串转化成目标串,能够增.删.改字母,求最小操作次数. 分析:dp,编辑距离.同最大公共子序列. 注意操作位置是实时变化的. (前面都已经处理好了)           ...

  2. LINUX 下编译不通过解答

    在linux下编译android源码或者webkit等程序源码时,不论在源码下加什么错误,编译器都默认正确,检索不到错误,此时,可能是之前编译的生成文件默认编译器不再检索编译新修改过的文件,只是发现修 ...

  3. JAVA NIO 之ByteBuffer的mark、position、limit、flip、reset,get方法介绍

    参考博客:http://blog.csdn.net/sunzhenhua0608/article/details/31778519 先来一个demo: import java.nio.ByteBuff ...

  4. Android fragment 切换载入数据卡顿问题

    接着上一篇项目的进度.上一篇讲了怎样利用fragment来实现下拉菜单.公用菜单,以实现切换主界面数据的功能,这时候遇到的问题是:使用了fragment的切换界面方法.但载入的数据太多.用户从一个界面 ...

  5. Android 如何增大开机铃声 M

    前言          欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处:          CSDN:http://www.csdn.net        ...

  6. 一步一步实现iOS微信自己主动抢红包(非越狱)

    前言:近期笔者在研究iOS逆向project,顺便拿微信来练手,在非越狱手机上实现了微信自己主动抢红包的功能. 题外话:此教程是一篇严肃的学术探讨类文章,只用于学习研究,也请读者不要用于商业或其它非法 ...

  7. 浅谈Volatile与多线程

        标题:浅谈Volatile与多线程 2011-04-19 22:49:17 最近看的比较杂,摘了一些人的笔记!随着多核的日益普及,越来越多的程序将通过多线程并行化的方式来提升性能.然而,编写正 ...

  8. 全排列算法 --javascript 实现

    var Ann = function a(arr){ if(arr.length == 1){return arr;} var rr = new Array(); for(var i = 0; i&l ...

  9. Failure to transfer org.apache.maven.plugins:maven-resources-plugin:pom:2.7

    导入maven项目时,pom.xml文件报错如下: Failure to transfer org.apache.maven.plugins:maven-resources-plugin:pom:2. ...

  10. Laravel 5 教程 - 文件上传

    一.简介 Laravel 有很棒的文件系统抽象层,是基于 Frank de Jonge 的 Flysystem 扩展包. Laravel 集成的 Flysystem 提供了简单的接口,可以操作本地端空 ...