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")
domysqldump -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")
domysqldump 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")
doBAK_DIR=/db[ -d ${BAK_DIR}/$name ] || mkdir -pv ${BAK_DIR}/$namemysqldump -B $name > ${BAK_DIR}/${name}/${name}_$(date +%F).sqlfor table in $(mysql -N -e "show tables from $name")do mysqldump $name $table > ${BAK_DIR}/${name}/${name}_${table}_$(date +%F).sqldone
done

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PCIE1—快速实现PCIE接口上下位机通信(一)

1.简介 PCI Express(PCIE)是一种高速串行总线标准,广泛应用于计算机系统中,用于连接主板和外部设备。在FPGA领域中,PCIE也被广泛应用于实现高速数据传输和通信。FPGA是一种灵活可编程的集成电路,可以根据需…

猫头虎分享已解决Bug || Web服务故障:WebServiceUnavailable, HTTPServerError

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

ubuntu常见配置

ubuntu各个版本的安装过程大差小不差,可以参考,ubuntu20.04 其它版本换一下镜像版本即可 安装之后需要配置基本的环境,我的话大概就以下内容,后续可能有所删改 sudo apt-get update sudo apt-get install gcc sudo apt-get inst…

vulnhub靶场之Deathnote

一.环境搭建 1.靶场描述 Level - easy Description : dont waste too much time thinking outside the box . It is a Straight forward box . This works better with VirtualBox rather than VMware 2.靶场下载 https://www.vulnhub.com/entry/deathnote-1,739/ 3.启动环…

网络安全“降本增笑”的三大帮手

在网络安全这个快速变化和危机四伏的领域中,通过使用正确的工具和方法,我们可以在工作中取得更高的效率,并降低相关成本。 雷池社区版 雷池社区版—开源Web应用防火墙。这款产品凭借强大的规则引擎,它允许用户自定义安全策略&…

洛谷p1002过河卒

[NOIP2002 普及组] 过河卒 题目描述 棋盘上 A A A 点有一个过河卒,需要走到目标 B B B 点。卒行走的规则:可以向下、或者向右。同时在棋盘上 C C C 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为…

三防平板丨三防工业平板电脑丨三防平板电脑有哪些优势?

三防平板电脑通常使用特殊材料和制造工艺来达到防水、防尘、防摔的目的,这样可以在极端条件下使用,并保证设备的稳定性和可靠性。因此,三防平板电脑适用于各种恶劣环境,如户外野营、物流、工业制造等应用场景。那么相比于普通消费…

Pregnostic®–PE IIp ELISA,用于测量人源ESM-1水平

Pregnostic PE Pregnostic是由IQ Products公司开发的重点关注女性健康的产品线。其中的Pregnostic -PE项目,旨在开发有助于筛查孕期先兆子痫风险的产品,可用于区分早发性和晚发性先兆子痫。 ESM-1 内皮细胞特异性分子(ESM-1)&am…

BabylonJS 6.0文档 Deep Dive 动画(一):动画介绍

1. 动画介绍 无论动画如何实现,它都必须考虑所需的动作、时间、产生所需流动性所需的帧数以及序列中的关键点。这个介绍应该有助于理解Babylon.js是如何进行动画的,以及它们是如何实现的。 动画由一系列图像、帧生成,这些图像、帧一个接一个地…

【Spring底层原理高级进阶】基于Spring Boot和Spring WebFlux的实时推荐系统的核心:响应式编程与 WebFlux 的颠覆性变革

🎉🎉欢迎光临🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟特别推荐给大家我的最新专栏《Spring 狂野之旅:底层原理高级进阶》 &#x1f680…

QT_day2

1.思维导图 2.使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin"&#xff…

幻兽帕鲁1.4.1单机畅玩教程

文章目录 游戏简介游戏背景游戏玩法资源安装和配置教程游戏包的下载和安装Steam客户端下载和配置 毕业存档使用教程第一步:个人存档备份第二步:毕业存档导入 游戏简介 Palworld:一款由日本独立游戏工作室Pocketpair制作发行的动作角色扮演游…

LaunchPad 市场的复苏,Penpad 成新兴生力军

以 Fair Launch 为主要启动方式的铭文市场的爆发,推动了 LaunchPad 市场的复苏,绝多数所铭文项目都能通过 Fairr Launch 的方式筹集资金实现启动,该赛道的爆发不仅推动了数百亿美元的热钱开始在链上不断涌动,同时也进一步形成了新…

【xss跨站漏洞】xss漏洞利用工具beef的安装

安装环境 阿里云服务器,centos8.2系统,docker docker安装 前提用root用户 安装docker yum install docker 重启docker systemctl restart docker beef安装 安装beef docker pull janes/beef 绑定到3000端口 docker run --rm -p 3000:3000 janes/beef …

JS实现根据数组对象的某一属性排序

JS实现根据数组对象的某一属性排序 一、冒泡排序(先了解冒泡排序机制)二、根据数组对象的某一属性排序(引用sort方法排序) 一、冒泡排序(先了解冒泡排序机制) 以从小到大排序为例,冒泡排序的原…

【EI会议征稿通知】第十届能源材料与环境工程国际学术会议(ICEMEE 2024)

第十届能源材料与环境工程国际学术会议(ICEMEE 2024) 2024 10th International Conference on Energy Materials and Environment Engineering 随着前9年的成功,ICEMEE在2024年迎来了第10届。很荣幸地宣布,第十届能源材料与环境…

【rust】vscode下rust-analyzer和Rust Test Lens的Lens

背景 一个粉丝问: 我编辑的launch.json为什么只在按F5的时候工作 按这个debug按钮就不工作? 那在哪改这个插件的配置文档?我一直用的F5 今天上午才注意到这个问题,比如怎么改程序的命令行参数,我意思是如果我非要用…

搭建sql-labs靶机环境

phpstudy(小皮面板) 先下载phpstudy(小皮面板)软件,方便我们快速搭建环境,该软件程序包集成最新的ApachePHPMySQLngix,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境.该程序不仅包括PHP调试…

D1302——高性能、低功耗并附带RAM的涓流充电实时时钟电路芯片,可提供秒、 分、小时、星期、日期、月 份和年等计时数据

D1302是一块高性能、低功耗并附带RAM的涓流充电实时时钟电路。 主要特点: ● 实时时钟可提供秒、 分、小时、星期、日期、月 份和年等计时数据,到2100 年止。一个月小于31天时可自动调整,且具有闰年补偿功能 ● 31X8 位通用暂存RAM ● 采用S…

对话 zkPokerdot | 妙用 ZKP 技术,为链上游戏创造公平竞技场

在数字游戏的领域中,无论是沉浸于传统游戏的虚拟世界,还是探索 Web3 游戏的前沿领域,玩家们都追求拥有一场公平的对决。zkPokerdot 项目应运而生。通过 ZKP 技术,zkPokerdot 为链上游戏提供了一个既去中心化又保障隐私的公平竞技场…