MySQL Server最佳实践

2023-11-08

备份 (backups)

监控 (moitoring)

配置 (configuration)

模式和查询 (schema and queries)

系统 (system)

其他 (other)

Backups (备份)

•       做数据库备份,在系统改变时做数据库备份例如升级前和大量改变数据之前

•       验证数据库备份的有效性,要确保你的备份可以进行数据恢复并且可用

•       备份恢复演练,定期对数据库备份进行恢复,当然建立数据库自动恢复脚本是有必要的

•       考虑开启数据库binlog日志,即使你不需要配置数据库复制功能,开启二进制日志可以做基于时间点的恢复Point-In-Time Recovery (PITR).

 

Monitoring (监控)

•       监控你的系统,包括操作系统,数据库实例,历史数据的监控,对历史数据的监控你可以了解过去一段时间内数据的改变

•       定期检查mysql 错误日志

•       开启mysql 慢日志并设置long_query_time捕获查询时间超过设置值的慢语句可以通过相应的工具对慢日志进行分析mysqldumpslow工具

 

Configuration (配置)

•       每次配置改变都要经过在测试或者工作环境(测试环境要能反应真实环境)进行验证,才能应用到正式生产环境

•       不要过度的调整配置,通常情况下默认的配置可以提供良好的初始值,根据你的需要来确定是否需要进行调整,有些参数的是难以改变的需要重启mysql实例例如innodb_buffer_pool_size,innodb_log_file_size和类似的容量设置以及设置如innodb_undo_tablespaces难以改变之后这些安装时应考虑。

在mysql 5.7.5之后支持动态改变innodb_buffer_pool_size不需要重启mysql

•       更多更大并不一定代表更好的性能例如一些配置增加他们可能造成很糟糕的性能,所以不要因为你有很多可能内存而增加设置,确保你理解你为什么要改变,并测试它是否有帮助•  一些选项需要考虑安全/事物(ACID)与性能(如sync_binlog和innodb_flush_log_at_trx_commit)。确保您了解您的系统需要什么,并相应地设置您的配置

•       一次不要改变很多配置,一次改变一个配置,这样在测试可以看到效果

•       关闭查询缓存的配置,在大多数情况下查询缓存带来很糟糕的性能,这个功能现在还比较鸡肋

•       除非有特定的原因,否则请确保MySQL 5.6和以后启用性能模式。作为起点,默认设置是好的。

 

Schema and Queries (模式和查询)

•       要确保每个表都要有一个主键或者不为空的唯一值

o      所有的innodb 和ndbcluster 引擎的表都要求要有主键,如果你不显式的添加主键系统内部会添加一个隐藏的主键,而隐藏的组件没有显式添加的主键工作的效率高 example InnoDB uses a global auto-increment like counter for allhidden primary key, so it more likely to become a point of contention.

o      如果在每个表上没有显式主键,则基于行的复制也会受到很大的影响。

•       当选择innodb主键时,要考虑如下

o      innodb 二级索引会把主键添加进去,因此大的主键列会增加二级索引的大小

o      innodb内部行排序根据主键值,这就意味着连续的主键(例如自增列)在性能要优于随机主键(例如UUID列)性能

•       多个小事物的性能优于大事物的性能,小事物可以减少锁挣用以及死锁

•       确保大字段类型的值存到数据库外的系统例如text或者blob ,诸如图像之类的数据更好地存储在文件系统中,数据库中保存有一个引用指针。

•       根据需要添加索引移除不使用的索引,索引可以更大的改善查询的性能和锁,但过多索引增加了数据库的大小,影响插入更改删除的速度

 

System (系统)

•       确保您正在考虑整个系统的堆栈:操作系统、MySQL、CPU、磁盘、网络、其他硬件、应用程序等。在一个地方可能出现的问题可能在是另一个问题导致的。这也意味着,如果您检测到应用程序中的查询响应时间很慢,请务必检查是否在MySQL或网络中引入了延迟等。

•       为优化I/O性能确保数据文件,二进制日志,InnoDB UNDO日志等分布在不同的物理磁盘

•       不推荐mysql 放在NFS文件系统中

 Other (其他)

•       当你执行基准测试,确保工作量反映系统的实际工作量 人工的基准测试程序可能不能反映正式环境的量,在这种情况下你不能用测试结果来衡量系统。

•       阅读MySQL和操作系统的发布说明,看看是否有任何更改会影响到您或修复您遇到的bug。MySQL服务器发布说明

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL Server最佳实践 的相关文章

  • Hibernate 可以使用 MySQL 的“ON DUPLICATE KEY UPDATE”语法吗?

    MySQL 支持 INSERT ON DUPLICATE KEY UPDATE 语法允许您 盲目 插入数据库 并回退到更新现有记录 如果存在 当您想要快速事务隔离并且想要更新的值取决于数据库中已有的值时 这非常有用 作为一个人为的示例 假设
  • 当数据表输入来自服务器的 JSON 数据时,更改 Google 图表栏颜色

    我一直在努力使用谷歌图表 API 我在 SO 上发现了这个出色的例子PHP MySQL Google Chart JSON 完整示例 https stackoverflow com questions 12994282 php mysql
  • 如何使PHP中的激活链接过期?

    我有一个 php 脚本 它通过电子邮件向用户发送激活链接 以便他们可以激活他们的帐户 链接是这样的 mysite com activation phpid id 20 如何创建 24 小时后过期的链接 我还没有尝试过任何东西 因为我找不到任
  • MYSQL中收盘价的简单移动平均线计算和更新表

    我可以使用一些帮助 最好是虚拟指南 来更新下表 CREATE TABLE SYMBOL day date NOT NULL open decimal 8 3 DEFAULT NULL high decimal 8 3 DEFAULT NUL
  • MySQL 与 PHP 的连接无法正常工作

    这是我的情况 我正在尝试使用 Apache 服务器上的 PHP 文件连接到 MySQL 数据库 现在 当我从终端运行 PHP 时 我的 PHP 可以连接到 MySQL 数据库 使用 php f file php 但是当我从网页执行它时 它只
  • MySQL 按主键排序

    某些 SQL 服务器允许使用通用语句 例如ORDER BY PRIMARY KEY 我不相信这适用于 MySQL 是否有任何此类解决方法可以允许跨多个表自动选择 或者是否需要查找查询来确定主键 我一直在研究的解决方法包括调用SHOW COL
  • 通过货币换算获取每种产品类型的最低价格

    我想选择每种产品类型中最便宜的 包括运费 价格转换为当地货币 最便宜 产品 价格 产品 运费 seller to aud 我的数据库有如下表 PRODUCTS SELLERS id type id seller id price shipp
  • C#:SQL 查询生成器类

    在哪里可以找到好的 SQL 查询构建器类 我只需要一个简单的类来构建 SQL 字符串 仅此而已 我需要它用于 C 和 MySql 我真的不需要像 Linq 或 NHibernate 这样的东西 谢谢 由于 Google 将我引导至此页面 我
  • PHP 选择后立即删除

    我有一个 PHP 服务器脚本 它从 MySQL 数据库中选择一些数据 一旦我将 mysql query 和 mysql fetch assoc 的结果存储在我自己的局部变量中 我就想删除我刚刚选择的行 这种方法的问题在于 PHP 似乎对我的
  • 将记录分成两列

    我的数据库中有一个 学生 表 其中包含大约 5 000 条记录 我想将这些记录显示在two分区 如何在不执行查询两次的情况下做到这一点 仅使用单个查询 显示示例http www freeimagehosting net uploads f1
  • 社交应用程序的数据库设计和优化注意事项

    通常的情况 我有一个简单的应用程序 允许人们上传照片并关注其他人 因此 每个用户都会有类似 墙 或 活动源 的东西 他或她可以在其中看到他 她的朋友 他或她关注的人 上传的最新照片 大多数功能都很容易实现 然而 当涉及到这个历史活动源时 由
  • ActiveRecord3死锁重试

    Rails 3 或 ActiveRecord 3 是否有任何插件可以复制旧版本死锁重试 http agilewebdevelopment com plugins deadlock retry插入 或者 该插件仍然适用于 Rails 3 吗
  • 当“修复表”查询在 mysql 中不起作用时该怎么办?

    我收到此错误 表的存储引擎不支持修复 当我尝试使用查询修复表时repair table tbl college master 表是 innodb 类型 但我不知道我收到此错误 See 手册 http dev mysql com doc re
  • 无法启动 MySQL 服务器 - 控制进程退出并出现错误代码

    我的 mysql 服务器停止后无法启动 命令使用 sudo etc init d mysql restart Error 重新启动 mysql 通过 systemctl mysql serviceJob for mysql service
  • 查询中列的顺序重要吗?

    当从 MySQL 表中选择列时 与表中的顺序相比 选择列的顺序是否会影响性能 不考虑可能覆盖列的索引 例如 您有一个包含行 uid name bday 的表 并且有以下查询 SELECT uid name bday FROM table M
  • Hibernate 对集合的查询过滤器

    我想执行以下查询 from Item i where i categoryItems catalogId catId 然而 这会产生以下异常 非法尝试取消引用集合 所以我用谷歌搜索 找到了这个 Hibernate 论坛帖子https for
  • Mysql 检索所有有限制的行

    我想检索特定用户的所有行 限制为 0 x 所以我只是想问是否有任何方法可以检索 mysql 中的所有行 而不调用返回 x 的 count id 的方法 而不重载现有函数 该函数在查询中根本没有限制 与我们的 string Relace 功能
  • MYSQL 区分大小写的 utf8 搜索(使用 hibernate)

    我的登录表具有 utf8 字符集和 utf8 排序规则 当我想要检查用户名并检索该特定用户名的其他信息时 hql 查询会为我提供小写和大写相同的结果 我应该如何处理适用于案例的 HQL 查询 我使用 Mysql 5 和 java hiber
  • 为什么我的 if 语句没有按我预期的方式工作?

    我正在尝试实现以下目标 我向我的 SQL 数据库询问使用SELECT FROM subjects 这样做之后我要求使用数组mysqli fetch assoc 在那之前一切都很好 现在的问题是 当我尝试在每个循环中修改 genero 的值
  • 如何在Sequelize中设置查询超时?

    我想看看如何在 Sequelize 中设置查询的超时时间 我查看了 Sequelize 文档以获取一些信息 但我找不到我要找的东西 我发现的最接近的是 pools acquire 选项 但我不想设置传入连接的超时 而是设置正在进行的查询的超

随机推荐

  • 记一次spark streaming+kafka 运行时间不稳定调优历程

    记一次spark streaming kafka 运行时间不稳定调优历程 问题现象 首次使用spark streaming进行流式计算的时候遇到的一个问题 即spark streaming读取kafka消息进行流式计算 但是在数据量比较大的
  • redis查看所有key和value_Redis介绍和数据类型及单机版安装

    Redis 是完全开源免费的 遵守BSD协议 是一个高性能的key value数据库 Redis 与其他 key value 缓存产品有以下三个特点 Redis支持数据的持久化 可以将内存中的数据保存在磁盘中 重启的时候可以再次加载进行使用
  • 36D杯CTF——mengxinstack

    记录一下36D的mengxinstack题目 下载题目 checksec下分析 开启了很多保护 有canary 64位 IDA分析 知道这个程序先执行了一次read 再把read进去的东西print出来 再read 两次read都会造成栈溢
  • (Java)leetcode-1325 Delete Leaves With a Given Value(删除给定值的叶子节点)

    题目描述 给你一棵以 root 为根的二叉树和一个整数 target 请你删除所有值为 target 的 叶子节点 注意 一旦删除值为 target 的叶子节点 它的父节点就可能变成叶子节点 如果新叶子节点的值恰好也是 target 那么这
  • 苹果11文件夹怎么连接服务器,(11)文件服务器

    要求 编写一个 HTTP 文件 服务器 它用于将每次所请求的文件返回给客户端 服务器需要监听所提供的第一个命令行参数所制定的端口 同时 第二个会提供给程序的参数则是所需要响应的文本文件的位置 在这一题中必须使用fs createReadSt
  • 什么是配置环境?如何配置环境?回答很多计算机入门者都会遇到的问题

    什么是配置环境 如何配置环境 回答很多计算机入门者都会遇到的问题 1 前言 编程入门时往往会遇到各种需要配置环境变量的场景 比如刚开始学习python java等 我也和你们一样经历过在网上找各种配环境的教程 然后按部就班地操作 但重复进行
  • 【卡尔曼滤波器】递归算法

    大家好 我是小政 最近在学习卡尔曼滤波 本篇文章记录一下我学习的卡尔曼滤波器中的递归算法 通过举例子让大家更加清晰理解递归到底是什么 希望与同是卡尔曼滤波研究方向的同学进行一些交流 递归算法 1 为什么要用卡尔曼滤波器 2 公式推导 3 举
  • java.lang.OutOfMemoryError: Java heap space .

    java lang OutOfMemoryError Java heap space 解决方案 1 进入eclipse界面中的servers选项卡 右击 工程配置的tomcat项 单击 Open 如图 2 单击 Open launch co
  • c语言课程设计籍贯流程图,学生籍贯信息记录簿(C语言课程设计)教程解读.doc

    计算机科学与技术系 课程设计报告 2012 2013 学年第1学期 课程C语言课程设计课程设计名称学生籍贯信息记录簿设计学生姓名学号专业班级指导教师 目录 一 绪言 需求分析 二 系统设计 一 设计思想 二 源程序设计 三 设计表示 三 系
  • Linux中的线程(一)-- 线程的创建

    什么是线程 Linux 中的线程被称为 轻量级进程 Lightweight Process LWP 它是在进程内部运行的一种 子进程 与传统的进程不同 线程共享相同的虚拟地址空间和其他资源 例如打开的文件 信号处理程序和用户 ID 等 线程
  • hello world C C++ Python Java Go

    碎碎念念 hello world是程序设计语言必打 入门小白都会在学习之初来这么一手 C include
  • 项目介绍star原理_简历中、面试中,怎么描述你的工作/项目经历?

    简历中一般会包括工作经历和项目经历这两个模块 面试官也会注重针对这两个模块进行提问 对于这两部分 我们都会面临一个如何描述与表达的问题 一 如何写好简历中的工作 项目经历 1 工作 项目经历描述法则 STAR法则 STAR法则的四个关键词的
  • 云监控系统 HertzBeat v1.1.0 发布,一条命令开启监控之旅!

    官网 hertzbeat com tancloud cn 大家早上好 HertzBeat v1 1 0 发布啦 这个版本我们支持了SNMP协议 并使用SNMP协议监控支持了windwos操作系统的应用监控 SNMP协议支持自定义监控 欢迎贡
  • java的imageicon用法详解_javaimageicon用法

    import java awt BorderLayout import java awt GridLayout import java awt event ActionEvent import javax swing ImageIcon i
  • Media Player播放视频只有声音没有图像

    今天在播放学生信息管理系统的时候发现视频播放后只有声音 却没有图像 这是什么原因呢 一 什么是media player播放器 Windows Media Player 是微软公司出品的一款播放器 通常简称 WMP 通常在Windows操作系
  • 系统架构设计专业技能 · 软件工程之软件测试与维护

    系列文章目录 系统架构设计专业技能 网络规划与设计 三 系统架构设计师 系统架构设计专业技能 系统安全分析与设计 四 系统架构设计师 系统架构设计高级技能 软件架构设计 一 系统架构设计师 系统架构设计高级技能 系统质量属性与架构评估 二
  • PostGreSQL数据库有的为啥找不到数据类型(比如Double)

    今天用NavCate建立PostGreSql建标 使用Double发现居然没有这个类型 百度各种博客都表示有Double类型 但是我测试就没了 后来发现 这里面居然有别名 名字 别名 描述 bigint int8 有符号 8 字节整数 bi
  • 蓝牙PHY6222添加OTA升级功能

    主要步骤 1 代码添加 ota app service 2 keil软件添加ota app代码 3 烧录软件添加ota设置 4 手机ota app升级 准备 奉加微电子官网下载6222的代码SDK V3 0以上 下载官网的PhyPlusKi
  • 谷歌浏览器打开时为桔梗网

    右击 gt 打开文件所在位置 然后将桌面的快捷方式删除 重新创建快捷方式
  • MySQL Server最佳实践

    备份 backups 监控 moitoring 配置 configuration 模式和查询 schema and queries 系统 system 其他 other Backups 备份 做数据库备份 在系统改变时做数据库备份例如升级前