shell脚本实现Mysql分库分表备份

一.数据库的分库分表?

12张图把分库分表讲的明明白白!阿里面试:我们为什么要分库分表icon-default.png?t=N7T8https://mp.weixin.qq.com/s?__biz=MzU0OTE4MzYzMw==&mid=2247547792&idx=2&sn=91a10823ceab0cb9db26e22783343deb&chksm=fbb1b26eccc63b784879f90540c8ab1731e635b30e5f4fd41de67f87a4fe055473039206f09d&scene=27

二.为什么需要分库分表?

 三.如何分库分表?

四.配置分库分表的准备工作 

4.1.创建三个数据库:compay,jiaowu,goods

#创建“company”数据库
MariaDB [(none)]> create database company character set utf8;
Query OK, 1 row affected (0.001 sec)
MariaDB [(none)]> use company
Database changed

#在‘company’中创建“emp”表
MariaDB [company]> CREATE TABLE `emp`  (
    ->   `empno` int(4) NOT NULL,
    ->   `ename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
    ->   `job` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
    ->   `mgr` int(4) NULL DEFAULT NULL,
    ->   `hiredate` date NOT NULL,
    ->   `sai` int(255) NOT NULL,
    ->   `comm` int(255) NULL DEFAULT NULL,
    ->   `deptno` int(2) NOT NULL,
    ->   PRIMARY KEY (`empno`) USING BTREE
    -> );
Query OK, 0 rows affected (0.015 sec)

#在‘emp’中插入数据
INSERT INTO `emp` VALUES (1001, '甘宁', '文员', 1013, '2000-12-17', 8000, NULL, 20);
INSERT INTO `emp` VALUES (1002, '黛绮丝', '销售员', 1006, '2001-02-20', 16000, 3000, 30);
INSERT INTO `emp` VALUES (1003, '殷天正', '销售员', 1006, '2001-02-22', 12500, 5000, 30);
INSERT INTO `emp` VALUES (1004, '刘备', '经理', 1009, '2001-04-02', 29750, NULL, 20);
INSERT INTO `emp` VALUES (1005, '谢逊', '销售员', 1006, '2001-09-28', 12500, 14000, 30);
INSERT INTO `emp` VALUES (1006, '关羽', '经理', 1009, '2001-05-01', 28500, NULL, 30);
INSERT INTO `emp` VALUES (1007, '张飞', '经理', 1009, '2001-09-01', 24500, NULL, 10);
INSERT INTO `emp` VALUES (1008, '诸葛亮', '分析师', 1004, '2007-04-19', 30000, NULL, 20);
INSERT INTO `emp` VALUES (1009, '曾阿牛', '董事长', NULL, '2001-11-17', 50000, NULL, 10);
INSERT INTO `emp` VALUES (1010, '韦一笑', '销售员', 1006, '2001-09-08', 15000, 0, 30);
INSERT INTO `emp` VALUES (1011, '周泰', '文员', 1006, '2007-05-23', 11000, NULL, 20);
INSERT INTO `emp` VALUES (1012, '程普', '文员', 1006, '2001-12-03', 9500, NULL, 30);
INSERT INTO `emp` VALUES (1013, '庞统', '分析师', 1004, '2001-12-03', 30000, NULL, 20);
INSERT INTO `emp` VALUES (1014, '黄盖', '文员', 1007, '2002-01-23', 13000, NULL, 10);
INSERT INTO `emp` VALUES (1015, '张三', '保洁员', 1001, '2013-05-01', 80000, 50000, 50);

#在‘company’数据库中建立‘dept’表
MariaDB [company]> CREATE TABLE `dept` (
    -> `deptno`  int NOT NULL ,
    -> `dname`  char(9) NOT NULL ,
    -> `loc`  char(6) NOT NULL 
    -> );
Query OK, 0 rows affected (0.055 sec)

#在‘dept’中插入数据
MariaDB [company]> INSERT INTO `dept` VALUES (10, '教研部', '北京');
Query OK, 1 row affected (0.003 sec)

MariaDB [company]> INSERT INTO `dept` VALUES (20, '学工部', '上海');
Query OK, 1 row affected (0.001 sec)

MariaDB [company]> INSERT INTO `dept` VALUES (30, '销售部', '广州');
Query OK, 1 row affected (0.003 sec)

MariaDB [company]> INSERT INTO `dept` VALUES (40, '财务部', '武汉');
Query OK, 1 row affected (0.002 sec)


#上传jiaowu数据库及表
MariaDB [jiaowu]> source /root/jiaowu.sql

#上传goods数据库及表
MariaDB [jiaowu]> source /root/goods.sql

4.2.查看数据库及表

 

-e 后面跟上要执行的SQL语句

-N 参数是不显示表头  

五.分库分表备份

mysqldump命令备份数据的原理:就是把数据从MySQL库里以逻辑的sql语句形式直接输出或者生成备份的文件的过程。

-B: 用于备份多个数据库

grep的主要作用是根据关键字检索内容,egrep是grep的拓展,egrep包含grep所有的功能

-v 取反(显示不包含关键词的行)

在bash中,$( )` `(反引号)都是用来作命令替换的

一般情况下,$var与${var}是没有区别的,但是用${ }会比较精确的界定变量名称的范围

5.1.分库备份

#编写脚本
#!/bin/bash
BAK_DIR=/db
[ -d ${BAK_DIR} ] || mkdir ${BAK_DIR} -pv
for name in $(mysql -N -e "show databases" | egrep -v "information_schema|mysql|performance_schema")
do
	mysqldump -B $name > ${BAK_DIR}/${name}_$(date +%F).sql
done
#执行脚本
[root@server ~]# bash creat_db.sh

 

5.2.分表备份

[root@server ~]# cat create_table.sh
#!/bin/bash
BAK_DIR=/db
[ -d ${BAK_DIR} ] || mkdir ${BAK_DIR} -pv
for name in $(mysql -N -e "show tables from jiaowu")
do
	mysqldump jiaowu $name > ${BAK_DIR}/jiaowu_${name}_$(date +%F).sql
done

5.3.分库分表备份

[root@server ~]# cat create_db_tb.sh
#!/bin/bash
for name in $(mysql -N -e "show databases" | egrep -v "information_schema|mysql|performance_schema")
do
	BAK_DIR=/db
	[ -d ${BAK_DIR}/$name ] || mkdir -pv ${BAK_DIR}/$name
	mysqldump -B $name > ${BAK_DIR}/${name}/${name}_$(date +%F).sql
	for table in $(mysql -N -e "show tables from $name")
	do 
		mysqldump $name $table > ${BAK_DIR}/${name}/${name}_${table}_$(date +%F).sql
	done
done

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/403070.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于ORB-SLAM2与YOLOv8剔除动态特征点(三种方法)

基于ORB-SLAM2与YOLOv8剔除动态特征点(三种方法) 写上篇文章时测试过程比较乱,写的时候有些地方有点失误,所以重新写了这篇 本文内容均在RGB-D环境下进行程序测试 本文涉及到的动态特征点剔除速度均是以https://cvg.cit.tum.de/data/datasets/rgbd-dat…

c++ 到底是什么呢。需要学的太多了!

如谷歌,苹果,微软,造硬件的更是如此,如amd的,英传达,英特尔,他们都有C加速库。 C难就难在你如果达到顶峰,像些公司一样,是非常难的。因为这些公司已经垄断了市场。 C编译…

Android 圆环带刻度条进度动画效果实现

效果图 需求是根据传感器做一个重力球效果,先实现了动画后续加上跟传感器联动. 又是摆烂的一天, 尚能呼吸,未来可期啊 View源码 package com.android.circlescalebar.view;import android.content.Context; import android.content.res.Typ…

LabVIEW高效核磁测井仪器多线程优化

LabVIEW高效核磁测井仪器多线程优化 为提高核磁测井仪器的测试效率与性能,开发了基于LabVIEW的多线程优化模型。该研究针对传统的核磁测井仪器软件,在多任务调度测试和并行技术需求上存在的效率不高和资源利用率低的问题,提出了一个多线程优…

智慧公厕管理系统:让城市智慧驿站更加智慧舒适

智慧公厕管理系统是城市智慧驿站中不可或缺的一部分,它通过全方位的信息化解决方案,为公共厕所的使用、运营和管理提供了一种智能化的方式。作为城市智慧驿站的重要组成部分,智慧公厕管理系统发挥着重要的作用,为城市社会民生提供…

数字化转型导师坚鹏:数字政府技术、业务、数据融合发展路径探索

数字政府建设与发展研究 ——技术、业务、数据融合发展路径探索 课程背景: 很多政府存在以下问题: 不清楚数字政府建设内涵 不清楚数字政府建设现状 不清楚数字政府融合路径 课程特色: 有实战案例 有原创观点 有精彩解读 学…

基于Android的大学生足球赛事管理系统的设计与实现

足球是世界范围内广受欢迎的一种体育运动,国内有中超、中甲及大学生联赛等各级别的赛事,中超和中甲基本上都有专业的球队在运营,而大学生联赛属于校园级别的赛事,其重视程度较为有限,使得其信息化水平不高,…

【2024软件测试面试必会技能】python(5):python读取excel数据

python读取excel数据 xlrd参考:https://www.cnblogs.com/dream66/p/12572007.html openpyxl参考:https://www.cnblogs.com/dream66/p/12599627.html xlrd/xlwt模块简介: python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读…

《最新出炉》系列初窥篇-Python+Playwright自动化测试-20-处理鼠标拖拽-下篇

1.简介 上一篇中,宏哥说的宏哥在最后提到网站的反爬虫机制,那么宏哥在自己本地做一个网页,没有那个反爬虫的机制,谷歌浏览器是不是就可以验证成功了,宏哥就想验证一下自己想法,其次有人私信宏哥说是有那种…

嵌入式培训机构四个月实训课程笔记(完整版)-Linux ARM驱动编程第八天-高级驱动framebuffer(物联技术666)

链接:https://pan.baidu.com/s/1cd7LOSAvmPgVRPAyuMX7Fg?pwd1688 提取码:1688 帧缓冲(framebuffer)设备应用于linux显示技术方面。因为linux的显示平台已经全部基于framebuffer,所以目前在linux环境下开发图形化界面、…

了解JSON的作用及其方法

什么是json JSON(JavaScript Object Notation)是一种轻量级的数据交换格式采用完全独立编程语言的文本格式存储和表示数据(就是字符串)。它基于JavaScript语法,但可以被多种编程语言使用和解析。JSON以键值对的形式存…

Stable Diffusion 绘画入门教程(webui)-ControlNet(深度Depth)

上篇文章介绍了线稿约束,这篇文章介绍下深度Depth 文章目录 一、选大模型二、写提示词三、基础参数设置四、启用ControlNet 顾名思义,就是把原图预处理为深度图,而深度图可以区分出图像中各元素的远近关系,那么啥事深度图&#xf…

鸿蒙开源!OpenHarmony——手机的CPU信息应用

1.应用安装步骤 应用下载地址与源码开源如下: CPU_device_information 2.实现功能 完成了开发者手机以下信息的获取 - CPU核心数 - SOC型号 - GPU温度 - 主板温度 - 系统运行时间 - RAM总内存 - RAM可用内存 - RAM空闲内存 - 缓存使用内存 - Swaps交换分区 - 系…

JavaScript在web自动化测试中的应用

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 &#x1…

契约锁与400多家软件厂商实现集成应用

契约锁电子签及印控产品具备200多种功能接口,拥有400多家管理软件厂商集成对接经验,覆盖ERP、OA、业务系统、移动APP应用、低代码平台、BPM、小程序等42种软件类型,在帮助组织落实印章管理制度的同时,按需构建业务电子签场景&…

【计算机网络】一些乱七八糟内容

MAC Media Access Control 用于在局域网(LAN)或广域网(WAN)中实现设备自动接入网络 "载波侦听多路访问"(Carrier Sense Multiple Access) CSMA/CD 是CSMA的升级版本,加入了序列号检测机制。 CSMA/CA 是CSM…

旅游分享系列之:福建旅游攻略

旅游分享系列之:福建旅游攻略 一、漳州1.福建土楼2.云水谣3.四菜一汤景点 二、厦门1.园林博览苑2.海上自行车道3.山海步道4.海滩5.闽南菜6.落日 三、泉州1.衙口沙滩2.海上日出3.珞珈寺4.海滩烟花 一、漳州 游玩2个景点:云水谣,四菜一汤可以住…

图形系统开发实战课程:进阶篇(上)——6.图形交互操作:拾取

图形开发学院|GraphAnyWhere 课程名称:图形系统开发实战课程:进阶篇(上)课程章节:“图形交互操作:拾取”原文地址:https://www.graphanywhere.com/graph/advanced/2-6.html 第六章 图形交互操作:拾取 \quad 在图形系统…

Avalonia 初学笔记(2):简单了解与WPF的区别

文章目录 相关链接前言Avalonia相对于WPF的新特性简单介绍ChatGPT推荐Avalonia Demo案例Avalonia 开始使用Avalonia 文件扩展名Avalonia Toolkit 扩展安装修改.net core版本Avalonia对WPF的修改类CSS选择器Style的定义简单代码 数据绑定直接绑定UserControl.DataContext和Desig…

128.乐理基础-五线谱-纯四度、纯五度

内容参考于:三分钟音乐社 上一个内容:127.乐理基础-五线谱-纯一度、纯八度-CSDN博客 上一个内容里练习的答案: 纯四度、纯五度的结论 纯四度例子: 例子1: 例子2: 纯四度两个条件,音数是2.5&a…