百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程文章 > 正文

Mysql9.0已发布 来一起安装8.0玩玩吧

qiyuwang 2025-02-17 13:49 9 浏览 0 评论

今年7月1日(2024年),Mysql发布了9.0版本,相信很多友友还停留在mysql5.7的版本。

MySQL 9.0引入了许多新特性,主要包括性能提升、JSON数据处理增强、安全性升级和功能扩展。??

性能提升

MySQL 9.0通过使用更新的库和编译器(如GCC13),在处理效率、内存管理和并发控制方面有了显著的提升,使得编译后的二进制文件运行速度更快,占用资源更少。线程池插件现在能够在MySQL性能模式中提供更多信息,有助于更有效地分析性能。

JSON数据处理增强

MySQL 9.0增强了对JSON数据的处理能力,允许用户将EXPLAIN ANALYZE命令的JSON输出直接保存到用户变量中,极大简化了查询调试和优化流程。此外,MySQL 8.3版本引入了新的系统变量,允许在EXPLAIN FORMAT=JSON命令中选择不同的JSON输出格式,增强了长期使用的便利性。

安全性升级

MySQL 9.0弃用了SHA-1哈希算法,因为SHA-1已经被认为存在安全漏洞,转而使用更安全的哈希算法来增强数据完整性检查和安全性。同时,MySQL 9.0还弃用了mysql_native_password认证插件,进一步加强了MySQL的安全性,并鼓励用户采用更安全的认证方法。

功能扩展

MySQL 9.0引入了向量数据类型,使得数据库能够更高效地存储和操作多维数据,适用于机器学习、数据科学和高性能计算等领域。此外,MySQL 9.0还允许开发者在数据库中直接编写JavaScript存储程序和函数,增加了数据库脚本语言的灵活性,允许更紧密地集成前端应用和数据库逻辑。

友友们是不是对9.0感觉没啥期待,好像没啥让人升级的特性,笔者是也是,向量数据也不完善,有专门的向量数据库,性能也没有大的提升,mysql会不会慢慢的和他的老伙计php一起走下坡路了。

没关系,9.0无感,8.0还是可以试试的,笔者用了多年,8.0的性能比5.7还是有不少提升的,特别的变更表结构,锁表时间明显有变化。那我们一起来安装8.0玩玩吧。

安装MySQL 8.0

MySQL 8.0是目前的最新主要版本,它带来了许多新特性和改进。以下是几种在不同环境中安装MySQL 8.0的方法。

在Debian/Ubuntu 新版本上安装MySQL 8.0

更新包列表

sudo apt update

安装MySQL服务器

sudo apt install mysql-server-8.0

安全配置: 安装完成后,运行以下命令来初始化安全设置:

sudo mysql_secure_installation

按照提示设置root密码,移除匿名用户,禁止root用户远程登录等。

检查服务状态

sudo systemctl status mysql.service

登录MySQL

mysql -u root -p

输入你在安全配置中设置的密码。

使用Docker Compose安装MySQL 8.0

使用Docker Compose安装MySQL可以提供一致的环境,简化配置和部署。首先,确保你已经安装了Docker和Docker Compose。

创建Docker Compose文件: 创建一个名为docker-compose.yml的文件,内容如下:


version: '3.8' 
services: db: 
	image: mysql:8.0 
	command: --default-authentication-plugin=mysql_native_password 
	restart: always 
  environment: 
		MYSQL_ROOT_PASSWORD: my-secret-pw 
	ports: 
		- "3306:3306" 
	volumes: 
		- ./data/db:/var/lib/mysql 
		- ./my.cnf:/etc/mysql/my.cnf

替换my-secret-pw为你自己的强密码,并确保./my.cnf路径在你的主机上是存在的,并且my.cnf文件已经包含了正确的MySQL配置。my.cnf的推荐配置如下。

对于4核8G的服务器配置,以下是一个推荐的my.cnf配置样例:

[mysqld]
# 设置字符集和校对集
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

# 设置最大连接数
max_connections=400

# 设置线程缓存的大小
thread_cache_size=64

# 设置默认存储引擎(mysql8.0默认是InnoDB)
default-storage-engine=InnoDB

# 设置表打开缓存
table_open_cache=400

# 设置最大允许的数据包大小
max_allowed_packet=16M

# 设置InnoDB缓冲池大小,这是最重要的InnoDB设置之一
innodb_buffer_pool_size=4G

# 设置InnoDB日志文件大小
innodb_log_file_size=512M

# 设置InnoDB日志缓冲区大小
innodb_log_buffer_size=16M

# 设置InnoDB刷新日志的方式
innodb_flush_method=O_DIRECT

# 设置InnoDB刷新邻接页
innodb_flush_neighbors=0

# 设置InnoDB I/O线程数
innodb_read_io_threads=4
innodb_write_io_threads=4

# 设置InnoDB并发读写线程数
innodb_thread_concurrency=4

# 设置时区为北京时间
default-time-zone='+08:00'

# 禁用查询缓存,MySQL 8.0默认关闭查询缓存,查询缓存有时候反而降低性能
query_cache_type=0
query_cache_size=0

# 其他性能相关的配置
innodb_buffer_pool_instances=4
innodb_lru_scan_depth=2048
innodb_adaptive_hash_index=ON
innodb_file_per_table=ON
innodb_open_files=600
innodb_stats_on_metadata=OFF

# 网络和连接相关配置
back_log=80
table_definition_cache=1400
thread_stack=256K

# 二进制日志配置(用于复制和恢复)
log_bin=mysql-bin
binlog_format=row
expire_logs_days=10
sync_binlog=1

# 错误日志配置
log_error=/var/log/mysql/error.log

# 慢查询日志配置
slow_query_log=ON
slow_query_log_file=/var/log/mysql/mysql-slow.log
long_query_time=2

说明:

  1. 字符集和校对集:设置为utf8mb4和utf8mb4_unicode_ci,支持更广泛的Unicode字符。
  2. 最大连接数:设置为400,根据服务器的负载和需求进行调整。
  3. 线程缓存:设置为64,根据服务器的负载和需求进行调整。
  4. InnoDB缓冲池大小:设置为4G,这是最重要的InnoDB设置之一,用于缓存数据和索引。
  5. InnoDB日志文件大小:设置为512M,用于控制事务日志的大小。
  6. InnoDB日志缓冲区大小:设置为16M,用于缓存日志数据。
  7. InnoDB刷新日志的方式:设置为O_DIRECT,直接写入磁盘,减少文件系统缓存的影响。
  8. InnoDB刷新邻接页:设置为0,禁用邻接页的刷新。
  9. InnoDB I/O线程数:设置为4,用于控制读写线程数。
  10. InnoDB并发读写线程数:设置为8,根据CPU核心数进行调整。
  11. 时区:设置为+00:00,根据实际需求进行调整。
  12. 查询缓存:禁用查询缓存,因为MySQL 8.0默认关闭查询缓存。
  13. 二进制日志配置:用于复制和恢复,设置日志格式为row,并设置日志过期天数。
  14. 错误日志和慢查询日志配置:设置日志文件路径和慢查询时间。

启动MySQL容器

在docker-compose.yml文件所在的目录下,运行以下命令来启动MySQL容器:

docker-compose up -d

连接到MySQL: 使用MySQL客户端连接到MySQL容器。

docker exec -it  mysql -uroot -p

其中是Docker Compose自动分配的容器名称,通常是_db_1,或者你可以通过docker ps命令查看。

通过以上步骤,你可以在Debian/Ubuntu系统上直接通过apt源或使用Docker Compose安装并配置MySQL 8.0。这为你提供了开始使用MySQL进行数据库操作的基础。接下来,你可以开始创建数据库、表,以及执行SQL查询来管理你的数据。

接下来我们一起看下一些基础概念吧。

数据库基础概念

在深入MySQL的安装之前,理解一些数据库的基本概念是非常重要的。数据库是一种系统,它允许你存储、管理和检索数据。数据库可以是关系型的,也可以是非关系型的。关系型数据库(如MySQL)使用表格的形式来存储数据,并通过关系模型来组织数据。

关键术语:

  • 数据库(Database):数据的集合,通常针对特定的应用场景。
  • 表(Table):数据库中存储特定类型数据的结构,由行和列组成。
  • 行(Row):表中的单个记录。
  • 列(Column):表中的一个字段,所有行中相同位置的数据。
  • SQL(Structured Query Language):用于管理和操作关系数据库的标准编程语言。
  • 索引(Index):提高数据库检索速度的数据结构。

NoSQL数据库概念及与MySQL的优缺点对比

NoSQL数据库是指不使用传统的行列结构来存储数据的数据库。NoSQL通常分为以下几种类型:

  • 键值数据库:例如Redis,适合缓存和会话管理。
  • 文档数据库:例如MongoDB,数据存储在文档中,适合半结构化或非结构化的数据。
  • 列族数据库:例如Cassandra,适合列存储模式的高性能查询。
  • 图数据库:例如Neo4j,适合存储复杂关系网络。
  • 分布式数据库:例如TiDB, OceanBase,兼具MySQL的关系查询优点和列式数据库/KV存储的高性能

NoSQL数据库的优点

  • 灵活性:NoSQL数据库通常具有更灵活的数据模型,可以更容易地适应不断变化的数据需求。
  • 可扩展性:NoSQL数据库通常设计为分布式,易于水平扩展,适合处理大量数据。

NoSQL数据库的缺点

  • 查询能力有限:许多NoSQL数据库不支持复杂的查询,如多表连接。
  • 缺乏标准化:NoSQL数据库之间差异较大,缺乏统一的标准。

MySQL的优点

  • ACID事务支持:MySQL支持原子性、一致性、隔离性、持久性的ACID事务,适合需要严格数据一致性的应用。
  • 强大的查询能力:MySQL支持复杂的SQL查询,适合进行复杂的数据分析。

MySQL的缺点

  • 扩展性:MySQL的扩展性相对较弱,尤其是在水平扩展方面。
  • 性能瓶颈:在处理非常大的数据集时,MySQL可能会遇到性能瓶颈。

如果你安装中遇到什么问题,也可以在评论区留言讨论。

关于笔者:笔者是一个从业20年程序员,做过一线研发,做过技术总监,熟练掌握前后端、运维等各种技术,如果你觉得笔者给带了有用的知识,那关注笔者吧,你的关注,是笔者创作的粮食,感谢友友的支持。

相关推荐

10款最出色的免费数据库管理工具(免费数据库客户端)

OpenKeyValOpenKeyval是一款免费、开源的键值数据库管理工具,基于Web,并且基于PHP开发,其目标是用最简单的方法来管理Web应用程序数据。用户只需要发送一个POST请求就可以存储...

主流数据库的不同点在哪?MySQL和SQL Server的区别介绍

在本教程中,树懒君介绍了两种最普遍应用的RDBMS—MySQL和MicrosoftSQLServer。通过介绍MySQL和SQLServer的几个关键区别,希望大家能在这两者之间做出最适合自己的...

【推荐】一个开源免费、AI 驱动的智能数据管理系统,支持多数据库

如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!.前言...

MySQL原理介绍(mysql原理简述)

一、Mysql中有哪几种锁?1)表级锁开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。...

免费的sql工具,SQLynx有哪些优势?

1.免费且功能全面无成本负担:对于个人用户来说,SQLynx个人版完全免费,无需支付任何使用费用或订阅费用,降低了个人开发者的经济成本。...

免费mysql服务器,mySQL云数据库产品优势?

mysql免费服务器,免费mysql服务器。云数据库MySQL(TencentDBforMySQL)是一种稳定可靠、可弹性扩展和便于管理的关系型数据库服务。云数据库MySQL提供备份恢复、监...

结合我们公司的需求,看了ORACLE的收费,决定弃购!

今天向ORACLE的销售人员,确认了他们的报价,每套ORACLE按CPU付费,一个CPU报价约26万,如果你一台服务器有4个CPU,则26*4=104万(一台服务器)。我们有10台服务器,经费不够的情...

一起免费考 MySQL OCP 认证啦(mysql ocp考试大纲)

前言:在1995年,首个MySQL版本发布,为庆祝MySQL诞辰30周年,OracleUniversity在限定期间内推出了多个MySQL的免费培训课程与认证,其中也包括My...

Navicat推出免费数据库管理软件Premium Lite

IT之家6月26日消息,Navicat推出一款免费的数据库管理开发工具——NavicatPremiumLite,针对入门级用户,支持基础的数据库管理和协同合作功能。▲Navicat...

Linux服务器配置DNS解析(linux dns配置服务器)

环境说明CentOS等Linux操作系统基本是一样的...

搭建内网的DNS服务器(搭建内网dns解析服务器)

1.安装dnsmasq#centosyum-yinstalldnsmasq...

# 更换手机热点后secureCRT无法连接centOS7系统

#更换手机热点后secureCRT无法连接centOS7系统##一、问题描述某些情况下,我们可能使用手机共享热点而给电脑联网。本来用一个手机热点共享网络时,SecureCRT可以正常连接到Cent...

VMware与CentOS安装配置指南(vmware workstation安装centos7)

以下是一份详细的VMware虚拟机安装、配置及CentOS系统安装配置的指南,适合新手逐步操作:一、VMware虚拟机安装与配置...

CentOS7安全加固的一份整理规划建议

◆更新系统:及时更新CentOS7操作系统版本和安全补丁,确保系统以最新状态运行。◆关闭不必要的服务:在运行系统时,应关闭不需要的服务和端口,以减少系统暴露的攻击面。◆安装防火墙:使用iptables...

DNS从入门到放弃系列(3)(dns f1)

见字如面,我是小斐,今天文章展开说明bind9中named.conf...

取消回复欢迎 发表评论: