当前位置: 首页 > news >正文

运维高级--shell脚本完成分库分表

为什么要进行分库分表

     随着系统的运行,存储的数据量会越来越大,系统的访问的压力也会随之增大,如果一个库中的表数据超过了一定的数量,比如说MySQL中的表数据达到千万级别,就需要考虑进行分库分表;
     其次随着表数据的不断增大,会发现查询也随着变得缓慢,如果添加索引的话,会发现影响到了新增和删除的性能,如果我们将数据库分散到不同的表上,单表的索引大小就得到了控制,对索引以及表结构的变更会变得很方便和高效;
      当数据库实例的吞吐量达到性能的瓶颈时,我们需要扩展数据库实例,让每个数据库实例承担其中一部分数据库的请求,分解总体的大请求量的压力;在数据库进行扩容的时候对应用层的配置改变最少, 就需要在每个数据库实例中预留足够的数据库量

什么是分库分表

简而言之就是数据拆分:将一个表结构分为多个表,或者将一个表数据分片后放入多个表,这些表可以放在同一个数据库里,也可以放到不同的数据库中,甚至可以放到不同的数据库实例中数据拆分的方式

使用shell脚本完成分库操作

在这里插入图片描述
以这个数据库为例

#!bin/bash
mysql_cmd='-uroot -p123456'  #数据库账号密码
exclude_db='information_schema|performance_schema|sys|mysql' #不用备份的库(数据库自带的那几个)
bak_path=/backup/db #备份到哪个目录
[ -d ${bak_path} ] || mkdir -p ${bak_path} #如果目录不存在就创建
mysql $mysql_cmd -e 'show databases' -N | egrep -v "${exclude_db}" >dbname #获取要备份的库while read line
do
mysqldump $mysql_cmd --set-gtid-purged=OFF -B $line | gzip > ${bak_path}/${line}_$(date +%F).sql.gz #备
份数据库
done< dbname
rm -f dbname

运行此shell脚本
在这里插入图片描述
tree指令显示目录树形结构
在这里插入图片描述

使用shell脚本完成分表操作

mysql_cmd='-uroot -p123456'  #数据库账号密码
exclude_db='information_schema|performance_schema|sys|mysql' #不需要备份的库
bak_path=/backup/tb  #备份到哪个目录
#获取需要备份的库
mysql ${mysql_cmd} -e 'show databases' -N |egrep -v "${exclude_db}" >dbname while read line
do[ -d ${bak_path}/$line ] || mkdir -p ${bak_path}/$line  #为每个备份的库创建目录#备份库mysqldump $mysql_cmd --set-gtid-purged=OFF -B $line | gzip > ${bak_path}/${line}/${line}_$(date +%F).sql.gz mysql -uroot -p123456 -N -e "show tables from $line" >tbname #将表存放在tbname文件中while read tbdo#备份表mysqldump ${mysql_cmd} --set-gtid-purged=OFF $line $tb | gzip > ${bak_path}/${line}/${line}_${tb}_$(date +%F).sql.gz done <tbname
done< dbname
rm -rf dbname tbname

运行脚本
在这里插入图片描述
使用tree命令查看目录树形结构
在这里插入图片描述

相关文章:

运维高级--shell脚本完成分库分表

为什么要进行分库分表 随着系统的运行&#xff0c;存储的数据量会越来越大&#xff0c;系统的访问的压力也会随之增大&#xff0c;如果一个库中的表数据超过了一定的数量&#xff0c;比如说MySQL中的表数据达到千万级别&#xff0c;就需要考虑进行分库分表&#xff1b; 其…...

Mysql 忘记密码怎么重置密码(详细步骤)

每种方法都有其适用的情况&#xff0c;根据具体情况选择合适的方法。无论选择哪种方法&#xff0c;请务必在重置密码后及时删除临时用户并重新启动 MySQL 服务。 一、使用 mysqladmin 重置密码 停止服务 # systemctl 启动的使用这个停止 $ sudo systemctl stop mysql# mac 本机…...

机器学习深度学习——图像分类数据集

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——softmax回归&#xff08;下&#xff09; &#x1f4da;订阅专栏&#xff1a;机器学习&&深度学习…...

【PWN · 栈迁移】[BUUCTF]ciscn_2019_es_2

第一道栈迁移题目&#xff0c;跌跌撞撞理解了 前言 当前溢出可用空间比较少时&#xff08;极端情况下仅能覆写ebp和ret&#xff09;&#xff0c;可以通过栈迁移的方式&#xff0c;扩大shellcode的容纳空间&#xff0c;其核心是将esp移动到一段shellocode开头。而esp总是由ebp赋…...

网络编程(13): 网络通信常用命令(后续待补充)

ifconfig 一般用于查看网卡信息 ping 一般用于侦测本机到目标网络主机的网络是否通常: ping ip/域名 telnet 可以用于指定ip地址和端口的侦听服务是否存在&#xff1a;telnet ip port, 也可以模拟客户端给服务器发数据 netstat 用于查看网络连接状态 -a: 显示所有选项 -t&#…...

flask创建数据库连接池

flask创建数据库连接池 在Python中&#xff0c;您可以使用 Flask-SQLAlchemy 这个扩展来创建一个数据库连接池。Flask-SQLAlchemy 是一个用于 Flask 框架的 SQLAlchemy 操作封装&#xff0c;实现了 ORM(Object Relational Mapper)。ORM 主要用于将类与数据库中的表建立映射关系…...

C语言手撕顺序表

目录 一、概念 1、静态顺序表&#xff1a;使用定长数组存储元素。 2、动态顺序表&#xff1a;使用动态开辟的数组存储 二、接口实现 1、对顺序表的初始化 2、对数据的销毁 3、对数据的打印 4、检查是否需要扩容 5、尾插 6、头插 7、尾删 8、头删 9、在pos位置插入x …...

常见的排序算法

常见的排序算法 常见的排序算法包括&#xff1a; 冒泡排序&#xff08;Bubble Sort&#xff09;&#xff1a;依次比较相邻的元素&#xff0c;将较大的元素交换到右侧&#xff0c;逐步将最大元素移动到末尾。插入排序&#xff08;Insertion Sort&#xff09;&#xff1a;将数组…...

C#如何使用SQLite数据库?

文章目录 0.引言1.SQLite工具准备2.创建窗体项目并添加SQLite的命名空间3.编写使用SQLite代码4.结果展示 0.引言 SQLite是一个轻量级的嵌入式数据库&#xff0c;它的库文件非常小巧&#xff0c;不需要独立的服务器进程或配置。这使得它非常适合在资源受限的环境中使用&#xff…...

如何将表格中的状态数据转换为Tag标签显示

考虑到系统前端页面的美观程度&#xff0c;通常通过Tag标签来代替某条数据中的状态信息。仅通过一点操作&#xff0c;便能够使得页面美观程度得到较大提升&#xff0c;前后对比如下所示。代码基于Vue以及Element-ui组件实现。 修改前&#xff1a; 修改后&#xff1a; 修改前…...

centos中修改防火墙端口开放配置

1、直接进入文件修改 vim /etc/sysconfig/iptables 2、添加需要开放的端口 &#xff08;1&#xff09;添加需要开放的单个端口 4001 -A INPUT -m state --state NEW -m tcp -p tcp --dport 4001 -j ACCEPT &#xff08;2&#xff09;添加需要开放的某个网段端口 4001:4020 …...

程序设计 算法基础

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…...

【数据结构】之十分好用的“链表”赶紧学起来!(第一部分单向链表)

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …...

ubuntu开机自启动

ubuntu开机自启动 1、建一个test.sh脚本&#xff0c;并写入 #!/bin/sh gnome-terminal -x bash -c ‘cd /home/文件路径/;python3 main.py’ exit 0 2、:wq!保存 3、创建rc-local.service文件&#xff08;sudo vim /etc/systemd/system/rc-local.service&#xff09;&#xf…...

Git将其他分支合并至主分支

主要思想&#xff1a; 把分支代码合并到master&#xff0c;合给谁&#xff0c;就先切换到谁的分支 1. 当前分支是dev&#xff0c;开发完成后&#xff0c;需要合并到master分支 先把该提交的提交&#xff0c;需要push的push完成后&#xff0c;再切换分支。 否则也会告诉你要提交…...

Python+request+pytest 接口自动化测试框架入门(与unittest的比较)

1. Pythonrequestpytest 接口自动化测试框架入门 - 简书 pytest和unittest的比较&#xff1a; pytest是一个非常成熟的全功能的Python测试框架&#xff0c;主要有以下几个特点&#xff1a; 简单灵活&#xff0c;容易上手支持参数化能够支持简单的单元测试和复杂的功能测试&a…...

数据结构——复杂度

总有一天你要一个人&#xff0c;再暗夜中&#xff0c;向那座桥走过去 文章目录 一、算法的复杂度 考察形式范例 二、算法的时间复杂度 大O的渐进表示法 常见的复杂度对比 例题&#xff1a;消失的数字 题目的三种思路 1.排序遍历 2.减法 3.单身狗思想 三、空间复杂度…...

使用goldengate 迁移Oracle到postgresql

环境&#xff1a; --源端&#xff1a; IP&#xff1a;10.0.4.16 hostname&#xff1a;tencent Oracle数据库版本&#xff1a;12.2.0.1.0 ogg for oracle版本&#xff1a;19.1.0.0.4 SID&#xff1a;orcl --目标端&#xff1a; IP&#xff1a;10.0.4.16 hostname&#…...

ESP-C3入门20. CentOS开发环境及Jenkins流水线

一、准备环境 CentOS8已经正常安装Jenkins 二、升级 cmake cmake 升到 3.16以上。 cmake --version # 安装 g sudo yum install gcc-c export CXXg# 安装 CMake 的依赖项 sudo yum install -y openssl-devel# 下载 CMake 源码并进行编译安装 wget https://github.com/Kitwa…...

服务器被爬虫恶意攻击怎么办?

在有预算的情况可以采购第三方服务防火墙&#xff0c;没钱就使用开源的WAF进行防护。 # WAF防火墙的基本防护原理 WAF&#xff08;Web 应用防火墙&#xff09;可以使用多种技术来防止恶意爬虫攻击&#xff0c;例如&#xff1a; 1. 黑名单&#xff1a;WAF 可以使用黑名单技术来…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

Ubuntu Cursor升级成v1.0

0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开&#xff0c;快捷键也不好用&#xff0c;当看到 Cursor 升级后&#xff0c;还是蛮高兴的 1. 下载 Cursor 下载地址&#xff1a;https://www.cursor.com/cn/downloads 点击下载 Linux (x64) &#xff0c;…...

LangFlow技术架构分析

&#x1f527; LangFlow 的可视化技术栈 前端节点编辑器 底层框架&#xff1a;基于 &#xff08;一个现代化的 React 节点绘图库&#xff09; 功能&#xff1a; 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...

GraphQL 实战篇:Apollo Client 配置与缓存

GraphQL 实战篇&#xff1a;Apollo Client 配置与缓存 上一篇&#xff1a;GraphQL 入门篇&#xff1a;基础查询语法 依旧和上一篇的笔记一样&#xff0c;主实操&#xff0c;没啥过多的细节讲解&#xff0c;代码具体在&#xff1a; https://github.com/GoldenaArcher/graphql…...

结构化文件管理实战:实现目录自动创建与归类

手动操作容易因疲劳或疏忽导致命名错误、路径混乱等问题&#xff0c;进而引发后续程序异常。使用工具进行标准化操作&#xff0c;能有效降低出错概率。 需要快速整理大量文件的技术用户而言&#xff0c;这款工具提供了一种轻便高效的解决方案。程序体积仅有 156KB&#xff0c;…...

云原生安全实战:API网关Envoy的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关 作为微服务架构的统一入口&#xff0c;负责路由转发、安全控制、流量管理等核心功能。 2. Envoy 由Lyft开源的高性能云原生…...

大数据驱动企业决策智能化的路径与实践

&#x1f4dd;个人主页&#x1f339;&#xff1a;慌ZHANG-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 一、引言&#xff1a;数据驱动的企业竞争力重构 在这个瞬息万变的商业时代&#xff0c;“快者胜”的竞争逻辑愈发明显。企业如何在复杂环…...