企业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 $

最新文章

  1. 【夯实Nginx基础】Nginx工作原理和优化、漏洞
  2. 坎坷路:ASP.NET Core 1.0 Identity 身份验证(中集)
  3. Entity Framework 教程——EF体系结构
  4. web前端面试试题总结---html篇
  5. iOS小Tip之查看FPS
  6. 使用mvc时,在视图view中使用强类型视图,在web.config文件中添加命名空间namespace的引用不起作用,解决方法
  7. IOS开发基础知识--碎片22
  8. C 语言学习的第 05 课:C 语言基础(01)
  9. leetcode 198
  10. ASP.NET页面之间传递值的几种方式
  11. (七)中介者模式-C++实现
  12. Xcode安装的推送证书所在目录
  13. struts2学习笔记之一:基本简介
  14. 基于visual Studio2013解决C语言竞赛题之0509杨辉三角
  15. iOS项目的命名规范
  16. bzoj 4006: [JLOI2015]管道连接
  17. Python基础语法 系统学习
  18. Oracle初级优化sql
  19. nagios系列(一)centos6.5环境部署nagios服务端
  20. 在HTML中导入外部的css

热门文章

  1. Java实现文件MD5加密
  2. Media-媒介(媒体、介质)【译】
  3. POJ 3122-Pie(二分+精度)
  4. MVC入门教程二[第一个小Demo](转载)
  5. 常用HTML标签的全称及描述
  6. MPEG2 PS和TS流格式
  7. linux内核及其模块的查询,加载,卸载 lsusb等
  8. 疯狂java学习路线图
  9. java异常处理Exception
  10. Https与Http,SSL,DevOps, 静态代码分析工具,RFID, SSH, 非对称加密算法(使用最广泛的一种是RSA), 数字签名, 数字证书