MySQL教程(1)MySQL 版本介绍与安装部署

MySQL教程(1)MySQL 版本介绍与安装部署

一、MySQL 主要发行版介绍

由于MySQL是一款免费开源的数据库软件,随着开源许可、商业需求、性能优化和功能扩展的差异,诞生了许多不同的发行版,以下是一些主流发行版的介绍

· Oracle MySQL:官方正统版本,MySQL被Oracle收购后就分为了社区版和企业版,社区版可免费使用,也是目前使用最多的发行版。产品迭代速度很快,几乎每三个月就会发行一个小版本。该发行版使用MGR实现集群

· Percona:在MySQL官方社区版的基础上做了性能优化,是最接近MySQL企业版的发行版,提供了一些MySQL管理工具。由于其属于二次开发,在版本上可能会稍落后官方版。该发行版使用MGR或PXC实现集群

· MariaDB:MySQL原作者在MySQL被收购后所开发的新的发行版,基本兼容MySQL,也存在版本稍微落后的问题。该发行版使用Galera Cluster实现集群

· PolarDB、TDSQL:基于 MySQL 的云原生数据库,主要是一些云厂商为了适配自身基础设施、提供差异化服务所开发。

二、MySQL 主要版本


mysql5.5
mysql5.6mysql5.7mysql8.0
索引全局读写锁,并发一般    全局读写锁,并发一般
锁优化,并发性能提升

进一步锁优化

数据一致性半同步半同步无损复制支持组复制
多线程复制不支持基于库的多线程复制基于组提交的多线程复制
基于事务的并行复制
事务组提交不支持支持支持优化二进制日志组提交
半结构化数据    BLOBBLOBJSON增强JSON支持

截止2024年12月,使用率最多的是MySQL 5.7版本,而8.0版本则是未来的趋势,可自行选择

三、MySQL 安装部署

MySQL 支持编译安装、二进制安装、YUM安装等多种安装方式,可以灵活选择,不同的安装方式各有优缺点,适用于不同的场景。RPM包通常命名为 mysql57-community-release-el7-9.noarch.rpm(如果是bundle包表示将 MySQL 所有包整合在了一起);二进制包归类为Generic类别下,包名通常为mysql-5.7.16-linux-glibc2.5-x86_64.tar;源码包归类为Source分类,包名通常为mysql-5.7.16.tar.gz

1、二进制安装(推荐方法)

这是最常用、最推荐的MySQL数据库安装方式,只需要下载二进制包以后并配置好参数文件就可以直接完成数据库的安装,非常灵活

· 下载二进制安装包

在选择 MySQL 二进制安装包时,需要注意分为了不同的glibc版本,如glibc 2.17 与 glibc 2.28 。它们的区别在于所使用的操作系统版本。通常glibc 2.17 适用于CentOS 7,glibc 2.28 则是CentOS 8 以及更高版本

#查看glibc版本
ldd --version

#下载安装包,根据实际情况调整
wget https://cdn.mysql.com//Downloads/MySQL-8.4/mysql-8.4.10-linux-glibc2.17-x86_64-minimal.tar

· 配置环境变量

tar xf mysql-8.4.10-linux-glibc2.17-x86_64-minimal.tar
mv mysql-8.4.10-linux-glibc2.17-x86_64-minimal /usr/local/
ln -s /usr/local/mysql-5.4.10-linux-glibc2.12-x86_64 /usr/local/mysql

grep -qxF 'PATH=/usr/local/mysql/bin:$PATH' /etc/profile || echo 'PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
source /etc/profile

· 安装libaio库依赖,MySQL 的 InnoDB 存储引擎依赖它做异步 IO

yum install -y libaio

· 创建用户和数据目录

#创建用户和数据目录
useradd mysql
mkdir /data/mysql3306/{log,data,tmp} -p
mkdir /data/mysql3306/log/{slowlog,binlog,relaylog} -p
chown -R mysql. /data/mysql3306

· 创建MySQL配置文件

配置文件可以通过复制support-files/my-default.cnf作为模板,但是生产环境是远远不够的,本站提供了一个详细的配置模板可直接使用,参考《MySQL教程(2)MySQL 生产环境配置文件模板及参数详解》

· 初始化MySQL

MySQL 5.7开始使用bin/mysqld脚本进行初始化(5.7之前是bin/mysql_install_db)。初始化完成后在DATADIR下会创建MySQL的4个默认数据库和相关文件。要重新初始化的话需要先停止服务并删掉数据目录下的所有文件。如果初始化失败可以查看错误日志检查原因,在没配置错误日志时,错误日志默认会在databasedir以主机名为名,如server1.err。如果发现启动后参数和配置的my.cnf存在差异,需要检查下是否在其它路径存在my.cnf覆盖了/etc/my.cnf的配置

#初始化并设置root密码
mysqld --defaults-file=/etc/my3306.cnf  --initialize --user=mysql

#初始化不设置root密码
mysqld --defaults-file=/etc/my3306.cnf  --initialize-insecure --user=mysql

· 正确启停MySQL服务

安装完成后使用mysqld_safe脚本来启动服务,相比使用mysqld启动它会多运行一个监控进程,当mysql服务异常退出时会自动拉起。如果要停止服务的话则是使用mysqladmin的shutdown功能

mysqld_safe --defaults-file=/etc/my3306.cnf &
mysqladmin -udba -pHzdba666#@888 -S /tmp/mysql3306.sock shutdown

· 修改默认密码

错误日志中记录了root临时密码(在5.6版本是空密码),使用该密码运行bin/mysql_secure_installation脚本可以进行一些安全相关配置,或者登陆到MySQL后修改root的密码,否则无法进行其他操作。如果遇到使用临时密码提示Your password has expired密码过期的问题,大概率是因为系统自带的mysql命令行工具与当前安装的MySQL版本不一致,使用绝对路径即可

alter user 'root'@'localhost' identified by '123456';
create user 'dba'@'localhost' identified by '123456';
create user 'dba'@'%' identified by '123456';
grant all privileges on *.* to 'dba'@'localhost'  with grant option;
grant all privileges on *.* to 'dba'@'%'  with grant option;


2、编译安装 MySQL

· 安装cmake

MySQL通过cmake工具进行编译安装,所以首先要通过yum来安装cmake工具

yum -y install ncurses ncurses-devel cmake gcc gcc-c++ openssl-devel bison cmake

· 编译安装

进入MySQL源码包目录后使用cmake命令即可直接开始编译安装。但是通常情况下还需要使用-D选项自定义参数,比如指定安装路径等,cmake支持的参数和具体作用可以参考官方文档(http://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html)。编译过程中如果遇到 remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel,需要先安装ncurses-devel,安装好了后删除CMakeCache.txt再重新执行编译

# cmake . 按照默认配置安装
cmake . \-DDOWNLOAD_BOOST=1 或者 -DWITH_BOOST=/usr/local/boost
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DSYSCONFDIR=/etc \
-DMYSQL_DATADIR=/mysql_data \
-DMYSQL_TCP_PORT=3306  \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DEXTRA_CHARSETS=all 
make && make install

· 创建配置文件和脚本

安装完成后会在安装路径生成一系列脚本和配置文件,support-files目录提供了配置文件和启动脚本的模板

cp mysql.server /etc/init.d/mysqld 
cp my-default.cnf /etc/my.cnf

· 数据库初始化

初始化完成后会生成默认库表,如果初始化失败,可在错误日志中查看相关原因

mysqld --defaults-file=/etc/my3306.cnf  --initialize --user=mysql

· 启动服务

systemctl start mysql

3、YUM安装MySQL

在官方选择Red Hat Enterprise Linux / Oracle Linux时可以看到一个Yum Repository的下载链接,通过该链接可以下载YUM仓库的安装包,然后就可以通过包管理工具快速安装数据库。该方法通常只用于快速安装一个数据库进行测试,不推荐用于生产环境。

文章评论

猜你喜欢

Oracle教程(6)SGA\PGA\REDO核心参数调优

MySQL | Oracle Oracle教程(6)SGA\PGA\REDO核心参数调优

一、Oracle核心参数介绍1、SGASGA(System Global Area)是 Oracle 实例启动时分配的共享内存区域,所有连接到该实例的会话都共用这块内存,是整个数据库实例对外提供服务的...

Oracle教程(5)数据泵备份教程与实战

MySQL | Oracle Oracle教程(5)数据泵备份教程与实战

一、数据泵介绍数据泵(Data Pump)是 Oracle 10g 开始引入的命令行逻辑备份与恢复工具。通过 expdp / impdp ,可以对所有数据库对象(模式、表数据、表空间等)进行高效导出和...

MySQL教程(13)基于Position或GTID实现主从复制

MySQL | Oracle MySQL教程(13)基于Position或GTID实现主从复制

一、MySQL主从复制概述主从复制是MySQL高可用与横向扩展的基础方案,其核心依赖于 MySQL 自身的 Binlog 机制。主节点的 Binlog 记录了数据库上所有的 DDL 与 DML 操作(...

MySQL教程(12)锁的原理与常见锁问题处理

MySQL | Oracle MySQL教程(12)锁的原理与常见锁问题处理

一、数据库锁的作用数据库锁主要用于解决并发问题,当并发操作发生时,数据库依靠锁来控制这些并发请求对资源(锁是针对资源而非事务)的访问规则,因为被上锁的资源不会被其他事务修改,因为可以保证事务之间的隔离...

【MySQL 8.0】MySQL 8.0新特性介绍与升级方法

MySQL | Oracle 【MySQL 8.0】MySQL 8.0新特性介绍与升级方法

一、MySQL 8.0主要新特性截至2023年12月,MySQL官方发布的稳定版为8.0.35,另有一个MySQL8.2为创新版,所以暂不做考虑· 快速新增/删除列虽然 MySQL 在8.0 以前就已...