企业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. Razor语法(二)

    I:ASP.NET MVC3在Visual Studio 2010中的变化 在VS2010中新建一个MVC3项目可以看出与以往的MVC2发生了很明显的变化. 1.ASP.NET MVC3必要的运行环境 ...

  2. 编译安装mysql-5.6.40

    编译安装mysql-5.6.40 环境说明 系统版本     CentOS 7.2 x86_64 软件版本     mysql-5.6.40 [root@db01 ~]# mkdir -p /serv ...

  3. java 获取进程的processId

    package us.mine.demo.jvm.util; import java.lang.management.ManagementFactory; import java.lang.manag ...

  4. STL_算法_区间的比較(equal、mismatch、 lexicographical_compare)

    C++ Primer 学习中.. . 简单记录下我的学习过程 (代码为主) //全部容器适用 equal(b,e,b2)       //用来比較第一个容器[b,e)和第二个容器b2开头,是否相等 e ...

  5. Android微信支付V3版

    由于公司需求做微信APP支付,在集成过程中也遇到各种问题,比如说签名错误,body编码必须为UTF-8.APP端无法调用支付页面直接到支付结果页面.结果为null,code=-1等等: 1.签名错误问 ...

  6. sublime text 2中“ctrl + `”快捷键无效

    之前sublime 使用正常,这次在装插件的时候,发现ctrl + `快捷键失效了,无法调出控制台. 然后就一直按这两个键,肯定是被别的占用了,所以就像看看有啥反应,看了半天都没有见到什么神奇的窗口跳 ...

  7. unicode 编码在线转换工具

    字符串 unideo的16进制值  

  8. Eleven puzzle_hdu_3095(双向广搜).java

    Eleven puzzle Time Limit: 20000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  9. Android中的线程池概述

    线程池 Android里面,耗时的网络操作,都会开子线程,在程序里面直接开过多的线程会消耗过多的资源,在众多的开源框架中也总能看到线程池的踪影,所以线程池是必须要会把握的一个知识点; 线程运行机制 开 ...

  10. 两种方法连接MySql数据库

    .用MySQLDriverCS连接MySQL数据库 先下载和安装MySQLDriverCS,在安装文件夹下面找到MySQLDriver.dll,然后将MySQLDriver.dll添加引用到项目中. ...