大家好我是云计算磊哥从业20年的IT老鸟。运维培训15年总结了一套从入门到精通的全运维开发宝典手册。准备用300天时间写一套博文手把手从安装软件讲起从行业到产品从过去到未来从理论到操作从视频到文档工具一站式。从零基础入门到20k运维开发工程师岗位诸多就业问题。多方位全方面的给你讲清楚云计算这个行业该如何做。关注我。后续AI大模型开发课程更精彩。开源数据库MySQL DBA运维实战 部署1 前言1.1 数据库由来1 人工管理阶段。过去2 文件系统阶段近代3 数据库系统管理阶段目前1.2 数据库能做什么存储数据会话账户注册信息。1.3 阶段概述1 安装部署RPM源码2 备份恢复数据损失最低3 主从复制减轻单点服务器的压力和可靠性4 读写分离5 HA6 分布式数据库7 压力测试8 性能优化9 自动化运维专业分类运维1.4 分类关系型非关系型1.5 数据库-系统结构数据库系统 DBSA.数据库管理系统DataBase Management System DBMSB.DBA:工程师SQL语言结构化查询语言SQLStructured Query Language 即结构化查询语言A. DDL语句 数据库定义语言 数据库、表、视图、索引、存储过程、函数 CREATE DROP ALTER //开发人员B. DML语句 数据库操纵语言 插入数据INSERT、删除数据DELETE、更新数据UPDATE //开发人员C. DQL语句 数据库查询语言 查询数据 SELECTD. DCL语句 数据库控制语言 例如控制用户的访问权限GRANT、REVOKE数据访问技术A. ODBC PHP .phpB. JDBC JAVA .jsp3.ASP.NETc#1.6 版本5.7.192 部署2.1 地址www.mysql.comwww.oracle.com2.2 Select PlatformYum Repository 二进制 rpm mysql57-community-release-el7-9.noarch.rpmGeneric 二进制 预编译 mysql-5.7.19-linux-glibc2.12-x86_64.tar.gzSource Code 源码包安装 mysql-5.7.19.tar.gz2.3 YUM安装特点1 无需编译快2 无法个性化设置3 无法增删安装的工具设置资源a.请适当调整内存空间b.请关闭selinux获取软件包下YUM库1 通过下载库得到的RPM包或者地址使用RPM命令安装即可。rpm-ivhhttps://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm2 刷新YUM仓库# yum makecache3 校验rpm完整性# md5sum mysql57-community-release-el7-11.noarch.rpm[rootlocalhost ~]# md5sum mysql57-community-release-el7-11.noarch.rpmc070b754ce2de9f714ab4db4736c7e05 mysql57-community-release-el7-11.noarch.rpm4 YUM安装mysql-server[rootlocalhost ~]# yum list | grep mysql-community-servermysql-community-server.x86_645.7.20-1.el7 mysql57-community[rootlocalhost ~]# yum install -y mysql-community-server.x86_645 启动[rootlocalhost ~]# systemctl start mysqld[rootlocalhost ~]# systemctl enable mysqld6 登陆mysql[rootlocalhost ~]# grep password /var/log/mysqld.log2017-08-13T15:14:31.176905Z1[Note]A temporary password is generatedforrootlocalhost: k12zPB1r;2Ta[rootlocalhost ~]# mysql -u root -pk12zPB1r;2Ta修改密码mysqlALTERUSERrootlocalhostIDENTIFIED BYQianFeng123;2.4 预编译特点a 通用性强b 可以调整部分设置基础环境[rootlocalhost ~]#yum install libaio软件包 libaio-0.3.109-13.el7.x86_64 已安装并且是最新版本用户组[rootlocalhost ~]# groupadd mysql[rootlocalhost ~]# useradd -r -g mysql -s /bin/false mysql[rootlocalhost ~]# cd /usr/local安装[rootmysql1 local]# tar xf mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz[rootmysql1 local]# ln -s mysql-5.7.19-linux-glibc2.12-x86_64 mysql初始化设置mysql的启动参数用户、组、权限、工作目录、配置文件# cd mysql# mkdir mysql-files# chmod 750 mysql-files# chown -R mysql.mysql .# bin/mysqld --initialize --usermysql --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如果有请备份[rootmysql1 mysql]# vim /etc/my.cnf[mysqld]basedir/usr/local/mysqldatadir/usr/local/mysql/data启动MySQL# 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 -pSiZt#ueiP3*%2.5 源码包特点源码安装 与二进制发行版本相比如果我们选择了通过源代码进行安装那么在安装过程中我们能够对MySQL 所做的调整将会更多更灵活一些。因为通过源代码编译我们可以 a) 针对自己的硬件平台选用合适的编译器来优化编译后的二进制代码 b) 根据不同的软件平台环境调整相关的编译参数 c) 针对我们特定应用场景选择需要什么组件不需要什么组件 d) 根据我们的所需要存储的数据内容选择只安装我们需要的字符集 e) 同一台主机上面可以安装多个MySQL f) 等等其他一些可以根据特定应用场景所作的各种调整。 在源码安装给我们带来更大灵活性的同时同样也给我们带来了可能引入的隐患 a) 对编译参数的不够了解造成编译参数使用不当可能使编译出来的二进制代码不够稳定 b) 对自己的应用环境把握失误而使用的优化参数可能反而使系统性能更差 c) 还有一个并不能称之为隐患的小问题就是源码编译安装将使安装部署过程更为复杂所花费的时间更长基础环境# 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 [rootmysql3 mysql-5.7.19]# pwd /root/mysql-5.7.19 [rootmysql3 mysql-5.7.19]# tar xf boost_1_59_0.tar.gz 注意包的位置配置[rootmysql-5.7.17 ~]# cmake . \-DWITH_BOOSTboost_1_59_0/\-DCMAKE_INSTALL_PREFIX/usr/local/mysql\-DSYSCONFDIR/etc\-DMYSQL_DATADIR/usr/local/mysql/data\-DINSTALL_MANDIR/usr/share/man\-DMYSQL_TCP_PORT3306\-DMYSQL_UNIX_ADDR/tmp/mysql.sock\-DDEFAULT_CHARSETutf8\-DEXTRA_CHARSETSall\-DDEFAULT_COLLATIONutf8_general_ci\-DWITH_READLINE1\-DWITH_SSLsystem\-DWITH_EMBEDDED_SERVER1\-DENABLED_LOCAL_INFILE1\-DWITH_INNOBASE_STORAGE_ENGINE1编译# make 等待安装# make install初始化# cd /usr/local/mysql # mkdir mysql-files # chown -R mysql.mysql . 注意目录名称 # bin/mysqld --initialize --usermysql --basedir/usr/local/mysql --datadir/usr/local/mysql/data 保存临时密码。 x/dwiQ2l:hb # bin/mysql_ssl_rsa_setup --datadir/usr/local/mysql/data建立MySQL配置文件my.cnf[rootmysql1 mysql]# vim /etc/my.cnf[mysqld]basedir/usr/local/mysqldatadir/usr/local/mysql/data启动MySQL# 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 -px/dwiQ2l:hb 临时密码配置新密码/usr/local/mysql/bin/mysqladmin-uroot-px/dwiQ2l:hbpasswordQinFeng1233 存储引擎3.1 什么是存储引擎Storage Engine的存在能解决并发访问等问题也能提高数据增删改查、数据压缩存储的效率。3.2 MySQL常用存储引擎在MySQL中使用“show engines”命令能看到MySQL常用的Storage Engine有“InnoDB”“MEMORY”“MyISAM”等。缺省用“InnoDB”。 MySQL中每个表都能设置自己的Storage Engine。不同的Storage Engine对数据的组织方式不一样下表简单列举了他们的区别1MyISAM选择密集型筛选大量数据时非常迅速、插入密集型的表管理邮件或Web服务器日志数据2MEMORY数据量小且被频繁访问内存型数据库RAM3InnoDB需要事务支持并且有较高的并发读取频率。默认类型。创建 3 张表分别用 3 种引擎-- 1. 用户表必须安全、支持事务→ InnoDB默认CREATETABLEuser(idINTPRIMARYKEY,nameVARCHAR(20))ENGINEInnoDB;-- 2. 日志表只插入、大量查询→ MyISAMCREATETABLElog(idINTPRIMARYKEY,contentTEXT)ENGINEMyISAM;-- 3. 临时缓存表速度快、重启消失→ MEMORYCREATETABLEtemp_cache(idINTPRIMARYKEY,infoVARCHAR(50))ENGINEMEMORY;查看表用了什么引擎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临时缓存、会话MEMORY99% 的业务直接用 InnoDB 就够了。总结存储引擎 表的存储方式 / 底层规则InnoDB支持事务、并发强、默认MyISAM只读快、不支持事务MEMORY内存存储、重启消失一个库里不同表可以用不同引擎mysql阶段csdn配套视频 https://edu.csdn.net/course/detail/40864