一.MySQL概述
1.关系型数据库与非关系型数据库
RDBMS(relational database management system),既关系型数据库管理系统。
2.事务
关系型数据库的最大特点就是事务的一致性,所以也在对事物一致性的维护中有很大的开销。
事务由一条或者多条sql语句组成;在事务中的操作,这些sql语句要么都成功执行,要么都不执行,这就是一个事务。
事务特点(ACID)
-
原子性(Atomicity): 事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行。 -
一致性(Consistency): 指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态,不能破坏关系数据的完整性以及业务逻辑上的一致性。 -
隔离性(Isolation): 一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。 -
持久性(Durability): 持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。
3.MySQL版本
MySQL是目前应用最广泛的开源关系数据库。MySQL最早是由瑞典的MySQL AB公司开发,该公司在2008年被SUN公司收购,紧接着,SUN公司在2009年被Oracle公司收购,所以MySQL最终就变成了Oracle旗下的产品。
- 社区版:MySQL Community Edition (GPL)
- 企业版:MySQL Enterprise Edition(commercial)
MySQL 企业版包括最全面的 MySQL 高级特性、管理工具和技术支持。 - 集群版:MySQL Cluster CGE(commercial)
4.MySQL几种安装方式
安装方式 | 优点 | 缺点 |
---|
rpm | 安装卸载简单 | 可定制性差 | glibc | 可定制性相比rpm包灵活 | 安装相比rpm包复杂些,需要手动初始化数据库 | 源码安装 | 可定制性最强,根据需求和功能定制 | 安装麻烦,需要手动初始化数据库 |
5.mysql安装包获取
第一步:进入mysql官网,点击downloads 第二步:点击 MySQL Community(GPL) Downloads 第三步:点击mysql社区版下载 第四步:glibc版安装包下载 第五步:源码包下载
二.glibc版本安装
1.安装及初始化流程
参照MySQL官方文档: https://dev.mysql.com/doc/refman/8.0/en/binary-installation.html
安装配置:
选项 | 值 |
---|
安装路径 | /usr/local/mysql | 数据路径 | /usr/local/mysql/data | 端口号 | 3306 | 错误日志 | /usr/local/mysql/data/主机名.err |
第一步:解压下载好的包(MySQL Server 8.0.12 中压缩算法由 Gzip 改为 XZ;并且通用二进制文件的扩展名从 .tar.gz 更改为 .tar.xz)
tar -Jxf mysql-8.0.29-linux-glibc2.12-x86_64.tar.xz
mv mysql-8.0.29-linux-glibc2.12-x86_64 /usr/local/mysql
第二步:安装依赖
yum install libaio
第三步:创建mysql用户和用户组
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
chown -R mysql.mysql /usr/local/mysql
rm -rf /etc/my.cnf
第四步:建立mysql-files目录
cd /usr/local/mysql
mkdir mysql-files
chown mysql:mysql mysql-files
chmod 750 mysql-files
第五步:初始化
cd /usr/local/mysql
bin/mysqld --initialize --user=mysql
2022-05-14T14:42:40.647560Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: :zr.=4wU6m:I
mysql有没有初始化成功,主要看mysql目录下有没有产生data文件夹且文件夹中至少要有一个mysql的文件夹。
第六步:设置安全加密连接(SSL),数据传输会采用加密形式,适合敏感数据
bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data
第七步:启动数据库
cp support-files/mysql.server /etc/init.d/mysql
vim /etc/init.d/mysql
46行 basedir=/usr/local/mysql
47行 datadir=/usr/local/mysql/data
service mysql start
2.安装完成后的配置
/usr/local/mysql/bin/mysqladmin -uroot password '123' -p
echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile
source /etc/profile
ln -s /usr/local/mysql/bin/mysql /usr/bin
vim /usr/local/mysql/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
service mysql restart
/usr/local/mysql/bin/mysql_secure_installation
chkconfig --add mysql
chkconfig mysql on
3.问题记录
- mysql的日志会写入data目录下的“主机名.err”文件中,mysql的故障问题一般在这个文件中能找到原因。
- 安装前最好将/etc/my.cnf文件删除。数据库在初始化时,首先在自己的安装目录下寻找有没有my.cnf配置文件,如果有,会自动根据里面的配置信息进行初始化。如果找不到,则到/etc目录下寻找my.cnf文件,如果有,依然会按照其内部的配置进行初始化,但是由于/etc目录下的my.cnf文件是mariadb的,这会导致我们的初始化如果按照mariadb的配置,会导致初始化失败。
- 确认是否初始化成功,可以确认一下安装目录下有没有data目录。
- mysql-files主要用于数据文件的导入与导出(备份与还原),MySQL的备份会产生一个文件。mysql-files就是导入与导出时,所指定的默认目录。
三.源码编译安装
1.安装及初始化流程
参照MySQL官方文档 https://dev.mysql.com/doc/refman/8.0/en/source-installation.html
安装配置:
选项 | 值 |
---|
安装目录 | /mysql | 数据目录 | /mysql/data | 端口号 | 3306 | socket文件位置 | /mysql/mysql.sock | 字符集 | utf8mb4 | 配置文件 | /mysql/my.cnf |
第一步:解决依赖
yum remove cmake
tar -zxf cmake-3.23.1-linux-x86_64.tar.gz
mv cmake-3.23.1-linux-x86_64 /opt/cmake-3.23.1
vim /etc/profile
export CMAKE_HOME="/opt/cmake-3.23.1"
export PATH=$PATH:$CMAKE_HOME/bin
source /etc/profile
cmake --version
yum install centos-release-scl
yum install devtoolset-11-gcc*
scl enable devtoolset-11 bash
cd /opt/rh/devtoolset-11
source ./enable
yum install bison gcc-c++ ncurses-devel libaio-devel openssl-devel -y
第二步:编译安装
tar -zxf mysql-boost-8.0.29.tar.gz
cd mysql-8.0.29
mkdir build
cd build
vim myconfig.sh
cmake .. \
-DCMAKE_INSTALL_PREFIX=/mysql \
-DMYSQL_DATADIR=/mysql/data \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/mysql/mysql.sock \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SSL=system \
-DWITH_BOOST=/root/mysql-8.0.29/boost
chmod +x myconfig.sh
./myconfig.sh
make -j2 && make install
第三步:创建mysql用户和用户组
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
chown -R mysql.mysql /mysql
rm -rf /etc/my.cnf
第四步:建立mysql-files目录
cd /mysql
mkdir mysql-files
chown mysql:mysql mysql-files
chmod 750 mysql-files
第五步:初始化
cd /mysql
bin/mysqld --initialize --user=mysql --basedir=/mysql --datadir=/mysql/data
2022-05-15T16:46:13.350247Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: a
第六步:设置安全加密连接(SSL),数据传输会采用加密形式,适合敏感数据
bin/mysql_ssl_rsa_setup --datadir=/mysql/data
第七步:启动数据库
cp support-files/mysql.server /etc/init.d/mysql
service mysql start
2.安装完成后的配置
/mysql/bin/mysqladmin -uroot password '123' -p
echo 'export PATH=$PATH:/mysql/bin' >> /etc/profile
source /etc/profile
ln -s /mysql/bin/mysql /usr/bin
vim /mysql/my.cnf
[mysqld]
basedir=/mysql
datadir=/mysql/data
socket=/mysql/mysql.sock
service mysql restart
/mysql/bin/mysql_secure_installation
chkconfig --add mysql
chkconfig mysql on
3.cmake配置选项
参照: https://dev.mysql.com/doc/refman/8.0/en/source-configuration-options.html
配置选项 | 描述 | 默认值 | 建议值 |
---|
CMAKE_INSTALL_PREFIX | 安装目录(basedir) | /usr/local/mysql | 根据需求 | MYSQL_DATADIR | 数据目录(datadir) | $basedir/data | 根据需求 | SYSCONFDIR | 默认配置文件my.cnf路径 | | /etc | MYSQL_TCP_PORT | TCP/IP端口 | 3306 | 非默认端口 | MYSQL_UNIX_ADDR | 套接字socket文件路径 | /tmp/mysql.sock | $basedir/ | DEFAULT_CHARSET | 默认字符集 | utf8mb4 | utf8mb4 | DEFAULT_COLLATION | 默认校验规则 | utf8mb4_0900_ai_ci | utf8mb4_0900_ai_ci | ENABLED_LOCAL_INFILE | 是否启用本地加载外部数据文件功能 | OFF | 建议开启 | WITH_SSL | SSL支持类型 | system | 建议显式指定 | WITH_BOOST | Boost库源代码的位置 | | Boost库是构建MySQL所必需,建议事先下载 | WITH_FEDERATED_STORAGE_ENGINE | 本地数据库是否可以访问远程mysql数据 | 0 | 1 | WITH_INNOBASE_STORAGE_ENGINE | 将InnoDB存储引擎插件构建为静态模块编译到服务器中 | 0 | 1 | WITH_BLACKHOLE_STORAGE_ENGINE | 黑洞存储引擎,接收数据,但不存储,直接丢弃 | 0 | 1 | WITH_MYISAM_STORAGE_ENGINE | 将MYISAM存储引擎静态编译到服务器中 | 0 | 1 |
|