大家好,我是云计算磊哥,从业20年的IT老鸟。运维培训15年,总结了一套从入门到精通的全运维开发宝典手册。准备用300天时间写一套博文,手把手从安装软件讲起,从行业到产品,从过去到未来,从理论到操作,从视频到文档工具,一站式。从零基础入门到20k运维开发工程师岗位诸多就业问题。多方位全方面的给你讲清楚云计算这个行业该如何做。关注我。后续AI大模型开发课程更精彩。
开源数据库MySQL DBA运维实战 部署
1 前言
1.1 数据库由来
1 人工管理阶段。(过去)
2 文件系统阶段(近代)
3 数据库系统管理阶段(目前)
1.2 数据库能做什么?
存储数据,会话,账户注册信息。
1.3 阶段概述
1 安装部署(RPM,源码)
2 备份恢复(数据损失最低)
3 主从复制(减轻单点服务器的压力和可靠性)
4 读写分离
5 HA
6 分布式数据库
7 压力测试
8 性能优化
9 自动化运维
专业分类:运维
1.4 分类
关系型
非关系型
1.5 数据库-系统结构
- 数据库系统 DBS
A.数据库管理系统(DataBase Management System, DBMS)
B.DBA:工程师
-
SQL语言(结构化查询语言)
SQL(Structured Query Language 即结构化查询语言)
A. DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程、函数, CREATE DROP ALTER //开发人员
B. DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE //开发人员
C. DQL语句 数据库查询语言: 查询数据 SELECT
D. DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE
-
数据访问技术
A. ODBC PHP <.php>
B. JDBC JAVA <.jsp>
3.ASP.NET<c#>
1.6 版本
5.7.19
2 部署
2.1 地址
2.2 Select Platform
Yum Repository 二进制 rpm mysql57-community-release-el7-9.noarch.rpm
Generic 二进制 预编译 mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz
Source Code 源码包安装 mysql-5.7.19.tar.gz
2.3 YUM安装
特点
1 无需编译,快
2 无法个性化设置
3 无法增删安装的工具
设置资源
a.请适当调整内存空间
b.请关闭selinux
获取软件包,下YUM库



1 通过下载库得到的RPM包或者地址,使用RPM命令安装即可。
shell
rpm -ivh https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
2 刷新YUM仓库
shell
# yum makecache
3 校验rpm完整性
shell
# md5sum mysql57-community-release-el7-11.noarch.rpm
shell
[root@localhost ~]# md5sum mysql57-community-release-el7-11.noarch.rpm
c070b754ce2de9f714ab4db4736c7e05 mysql57-community-release-el7-11.noarch.rpm
4 YUM安装mysql-server
shell
[root@localhost ~]# yum list | grep mysql-community-server
mysql-community-server.x86_64 5.7.20-1.el7 mysql57-community
shell
[root@localhost ~]# yum install -y mysql-community-server.x86_64
5 启动
shell
[root@localhost ~]# systemctl start mysqld
shell
[root@localhost ~]# systemctl enable mysqld
6 登陆mysql
shell
[root@localhost ~]# grep 'password' /var/log/mysqld.log
2017-08-13T15:14:31.176905Z 1 [Note] A temporary password is generated for root@localhost: k12zPB1r;2Ta
[root@localhost ~]# mysql -u root -p'k12zPB1r;2Ta'
修改密码
shell
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'QianFeng@123';
2.4 预编译
特点
a 通用性强
b 可以调整部分设置
基础环境
shell
[root@localhost ~] #yum install libaio
软件包 libaio-0.3.109-13.el7.x86_64 已安装并且是最新版本
用户组
shell
[root@localhost ~]# groupadd mysql
[root@localhost ~]# useradd -r -g mysql -s /bin/false mysql
[root@localhost ~]# cd /usr/local
安装
shell
[root@mysql1 local]# tar xf mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz
[root@mysql1 local]# ln -s mysql-5.7.19-linux-glibc2.12-x86_64 mysql
初始化
shell
设置mysql的启动参数:用户、组、权限、工作目录、配置文件
# cd mysql
# mkdir mysql-files
# chmod 750 mysql-files
# chown -R mysql.mysql .
# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
注意保留初始密码,如遗忘密码,可观察后续操作(重新初始化步骤) SiZt#ueiP3*%
# bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data
# chown -R root .
# chown -R mysql data mysql-files
建立MySQL配置文件my.cnf(如果有,请备份)
shell
[root@mysql1 mysql]# vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
启动MySQL
shell
# cp support-files/mysql.server /etc/init.d/mysqld
# chkconfig --add mysqld
# chkconfig mysqld on
# service mysqld start
# ps aux |grep mysqld
# bin/mysql -uroot -p'SiZt#ueiP3*%'
2.5 源码包
特点
源码安装
与二进制发行版本相比,如果我们选择了通过源代码进行安装,那么在安装过程中我们能够对MySQL
所做的调整将会更多更灵活一些。因为通过源代码编译我们可以:
a) 针对自己的硬件平台选用合适的编译器来优化编译后的二进制代码;
b) 根据不同的软件平台环境调整相关的编译参数;
c) 针对我们特定应用场景选择需要什么组件不需要什么组件;
d) 根据我们的所需要存储的数据内容选择只安装我们需要的字符集;
e) 同一台主机上面可以安装多个MySQL;
f) 等等其他一些可以根据特定应用场景所作的各种调整。
在源码安装给我们带来更大灵活性的同时,同样也给我们带来了可能引入的隐患:
a) 对编译参数的不够了解造成编译参数使用不当可能使编译出来的二进制代码不够稳定;
b) 对自己的应用环境把握失误而使用的优化参数可能反而使系统性能更差;
c) 还有一个并不能称之为隐患的小问题就是源码编译安装将使安装部署过程更为复杂,所花费的时间更长;
基础环境
shell
# yum -y install ncurses ncurses-devel openssl-devel bison gcc gcc-c++ make cmake
# wget http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
安装mysql
# groupadd mysql
# useradd -r -g mysql -s /bin/false mysql
# tar xvf mysql-5.7.19.tar.gz 注意目录权限
# cd mysql-5.7.19
[root@mysql3 mysql-5.7.19]# pwd
/root/mysql-5.7.19
[root@mysql3 mysql-5.7.19]# tar xf boost_1_59_0.tar.gz 注意包的位置
配置
shell
[root@mysql-5.7.17 ~]# cmake . \
-DWITH_BOOST=boost_1_59_0/ \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DSYSCONFDIR=/etc \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DINSTALL_MANDIR=/usr/share/man \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1
编译
shell
# make 等待
安装
shell
# make install
初始化
# cd /usr/local/mysql
# mkdir mysql-files
# chown -R mysql.mysql . 注意目录名称
# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 保存临时密码。
x/dwiQ2<l:hb
# bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data
建立MySQL配置文件my.cnf
shell
[root@mysql1 mysql]# vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
启动MySQL
shell
# cp support-files/mysql.server /etc/init.d/mysqld
# chkconfig --add mysqld 添加mysql服务
# chkconfig mysqld on 开机自动启动mysql服务
# service mysqld start
# ps aux |grep mysqld
#/usr/local/mysql/bin/mysql -u root -p'x/dwiQ2<l:hb' 临时密码
配置新密码
shell
/usr/local/mysql/bin/mysqladmin -u root -p 'x/dwiQ2<l:hb' password 'QinFeng@123'
3 存储引擎
3.1 什么是存储引擎
Storage Engine的存在,能解决并发访问等问题,也能提高数据增删改查、数据压缩存储的效率。
3.2 MySQL常用存储引擎
在MySQL中使用"show engines"命令,能看到MySQL常用的Storage Engine有"InnoDB","MEMORY","MyISAM"等。缺省用"InnoDB"。 MySQL中每个表都能设置自己的Storage Engine。
不同的Storage Engine,对数据的组织方式不一样,下表简单列举了他们的区别
(1)MyISAM:选择密集型(筛选大量数据时非常迅速)、插入密集型的表(管理邮件或Web服务器日志数据);
(2)MEMORY:数据量小,且被频繁访问,内存型数据库RAM;
(3)InnoDB:需要事务支持,并且有较高的并发读取频率。默认类型。
创建 3 张表,分别用 3 种引擎
sql
-- 1. 用户表(必须安全、支持事务)→ InnoDB(默认)
CREATE TABLE user (
id INT PRIMARY KEY,
name VARCHAR(20)
) ENGINE=InnoDB;
-- 2. 日志表(只插入、大量查询)→ MyISAM
CREATE TABLE log (
id INT PRIMARY KEY,
content TEXT
) ENGINE=MyISAM;
-- 3. 临时缓存表(速度快、重启消失)→ MEMORY
CREATE TABLE temp_cache (
id INT PRIMARY KEY,
info VARCHAR(50)
) ENGINE=MEMORY;
查看表用了什么引擎
SHOW TABLE STATUS LIKE 'user';
SHOW TABLE STATUS LIKE 'log';
SHOW TABLE STATUS LIKE 'temp_cache';
最关键的区别演示:事务(只有 InnoDB 支持)
-
InnoDB 可以回滚(撤销操作)
START TRANSACTION; -- 开始事务 INSERT INTO user VALUES(1,'张三'); ROLLBACK; -- 撤销! SELECT * FROM user; -- 数据没了 ✅ -
MyISAM 不支持事务
START TRANSACTION; INSERT INTO log VALUES(1,'测试日志'); ROLLBACK; SELECT * FROM log; -- 数据还在!无法撤销 ❌
这就是引擎最核心的区别。
真实业务怎么选?
| 表用途 | 推荐引擎 |
|---|---|
| 用户、订单、支付 | InnoDB |
| 日志、统计报表 | MyISAM |
| 临时缓存、会话 | MEMORY |
99% 的业务直接用 InnoDB 就够了。
总结
- 存储引擎 = 表的存储方式 / 底层规则
- InnoDB:支持事务、并发强、默认
- MyISAM:只读快、不支持事务
- MEMORY:内存存储、重启消失
- 一个库里不同表可以用不同引擎
mysql阶段csdn配套视频 https://edu.csdn.net/course/detail/40864