vlambda博客
学习文章列表

02-mysql高级篇-再叙mysql架构及环境准备

点击蓝色“潭时录”关注我丫

每天和小潭一起快乐的学习~

    你好,我是在学mysql的小潭。在基础篇部分,我们已经了解过mysql架构方面的知识,现在我们将在此篇推文中做一个简单的回顾,同时也将对linux下的mysql做安装和配置。


  • mysql概述

1.mysql是一个关系型数据库管理系统,由瑞典mysql ab公司开发,目前属于Oracle公司

2.mysql是一种关联数据库管理系统,将数据保存在不同的表中,而不是将所有数据放在一个大仓库中,这样就增加了速度并提高了灵活性

3.mysql是开源的,所以不需要支付额外的费用
4.mysql支持大型的数据库,可以处理拥有上千万条记录的大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大支持4GB,64位系统支持最大表文件为8TB
5.mysql使用标准的sql数据语言形式
6.mysql可以允许于多个系统上,并且支持多种语言,这些编程语言包括 c,c++,java,python,php等
7.mysql对php有很好的支持
8.mysql可以定制,采用GPL协议,可以修改源码来开发自己的mysql系统


mysql高阶的知识储备需求:

1.mysql内核的编码,优化和改写2.mysql的优化3.mysql服务器的优化4.各种参数常量的设定5.查询语句的优化6.主从复制7.软硬件升级8.容灾备份9.sql编程


  • mysql的linux版安装

    基础篇的学习中,我们接触到的是windows版本的mysql安装及使用,而在实际工作场景中,基本是将数据库的使用场景转移到linux系统上,因此高级篇我们将更多偏向于实际应用,在此将介绍mysql的linux版安装方法。

    linux版本的mysql,主流的有rpm和二进制源码安装方式。我们将使用rpm的安装方式进行介绍,其中mysql版本选用5.7版本。

linux:

mysql:

http://dev.mysql.com/downloads/mysql

02-mysql高级篇-再叙mysql架构及环境准备

02-mysql高级篇-再叙mysql架构及环境准备

  • 检查当前系统是否安装过mysql,如有已安装的有关mysql的软件或依赖,先做清除处理

可将物理pc下载的rpm包复制到共享文件夹下(共享文件夹设置可参看虚拟机教程文档末尾部分)

02-mysql高级篇-再叙mysql架构及环境准备

02-mysql高级篇-再叙mysql架构及环境准备

root用户切换: su - root查询命令:rpm -qa|grep -i mysql删除命令:rpm -e --nodeps RPM软件包名(该名字是查询命令获取到的名字)或使用yum命令(会自动删除/etc/my.cnf文件):yum remove mysql-libs
补充:有些系统可能存在mariadb-libs的依赖包,可以使用以下命令进行查询确认和删除:rpm -qa|grep -i mariadbyum remove mariadb-libs

02-mysql高级篇-再叙mysql架构及环境准备

  • 安装mysql依赖包(可使用tab键自动补全文件名称)

    整体安装顺序依次为common->libs->client->server

    补充:ivh中, i-install安装;v-verbose进度条;h-hash哈希校验

rpm -ivh mysql-community-common-xxxx.rpmrpm -ivh mysql-community-libs-xxxx.rpm

02-mysql高级篇-再叙mysql架构及环境准备

  • 安装mysql客户端

rpm -ivh MySQL-client-xxx-xxx.linux.xxx.rpm

02-mysql高级篇-再叙mysql架构及环境准备

  • 安装mysql服务端

rpm -ivh MySQL-server-xxx-xxx.linux.xxx.rpm

02-mysql高级篇-再叙mysql架构及环境准备


  • 查看mysql是否安装成功及其版本

查看版本:mysqladmin --version


02-mysql高级篇-再叙mysql架构及环境准备

  • 查看mysql安装时创建的mysql用户和mysql组

cat /etc/passwd|grep mysqlcat /etc/group|grep mysql


02-mysql高级篇-再叙mysql架构及环境准备

  • mysql服务的启动和停止

查看mysql服务:ps -ef|grep mysql启动服务:service mysqld start停止服务:service mysqld stop


02-mysql高级篇-再叙mysql架构及环境准备

启动报错处理方法:

1)以上截图的报错信息提示配置文件中mysql数据库文件的存放路径下不为空,我们先查看下配置文件中的数据文件存放路径:

cat /etc/my.cnf


02-mysql高级篇-再叙mysql架构及环境准备

2)对datadir下的文件做清空处理,后手动初始化数据库,最后重试重启mysql服务

rm -rf /var/lib/mysql/*mysqld --initialize --user=mysqlservice mysqld start

02-mysql高级篇-再叙mysql架构及环境准备


  • mysql服务启动后的连接操作

首次登录mysql时需要使用mysql提供的临时密码查看及获取临时密码:cat /var/log/mysqld.log|grep 'temporary password'使用临时密码登录并做密码修改:mysql -u root -p修改mysql登录密码:ALTER USER USER() IDENTIFIED BY '123456';


02-mysql高级篇-再叙mysql架构及环境准备

区别于基础篇的密码重设方法,此处需要使用ALTER USRE方式

02-mysql高级篇-再叙mysql架构及环境准备


  • 设置自启动mysql服务

chmod +x /etc/init.d/mysqld  # 确保mysqld有可执行权限  chkconfig --add mysqld # 设置开机自启动mysqlchkconfig --list|grep mysql   # 0:关闭 1:关闭 2:关闭 3:启用 4:启用 5:启用 6:关闭  0-6代表含义可以使用cat /etc/inittab查看含义ntsysv   # t图形界面,可以翻到mysql这一行查看到[*]即表示开机后会自动启动mysql


02-mysql高级篇-再叙mysql架构及环境准备

  • 查看mysql数据库文件的位置(类似Windows环境的mysql配置的data文件夹)

ps -ef|grep mysql   # 获取到的信息中 --datadir=xxxx
路径
含义
备注
/var/lib/mysql
mysql数据库文件的存放路径
/var/lib/mysql/atguigu.cloud.pid
/usr/share/mysql
配置文件目录
mysql.server命令及配置文件
/usr/bin
相关命令目录
mysqladmin, mysqldump等命令
/etc/init.d/mysqld
启动和停止相关脚本


  • 配置文件的说明

    在安装mysql-community-server-xxxx.rpm组件,即服务端后,会自动生成以下配置文件或文件夹:

1)/etc/下:my.cnf文件和my.cnf.d文件夹

2)/var/lib/下:mysql文件夹,mysql-files文件夹和mysql-keyring文件夹

3)/var/log/下:mysql.log文件

4)/var/run/下:mysqld目录


  • 修改字符集和数据存储路径

字符集相关:1.查看字符集(登录mysql):show variables like 'character%';           或 show variables like '%char%';  默认字符集客户端和服务器端都用了latin1,会对存储的中文造成乱码现象。2.修改字符集:vim /etc/my.cnf  编辑模式:i  保存退出:esc + :wq  配置内容(其他内容可以在后续逐步添加):  [client] # 需要添加的设置  #password = your_password  port = 3306  socket = /var/lib/mysql/mysql.sock  default-character-set=utf8 # 需要添加的设置  # The MySQL server [mysqld]  port = 3306 # start 需要添加的部分  character-set-server=utf8  # 需要添加的设置  collation-server=utf8_general_ci # 需要添加的设置  # end 需要添加的部分  socket = /var/lib/mysql/mysql.sock  skip-external-locking  key_buffer_size = 384M  max_allowed_packet = 1M  table_open_cache = 512  sort_buffer_size = 2M  # 排序缓冲池大小,order by/group by  read_buffer_size = 2M    read_rnd_buffer_size = 8M  myisam_sort_buffer_size = 64M  thread_cache_size = 8  query_cache_size = 32M   thread_concurrency = 8
[mysql] # 需要添加的设置  no-auto-rehash  default-character-set=utf8 # 需要添加的设置
3.重启mysql服务,重新连接后重新建库建表,可以正常插入中文字符 service mysqld stop  service mysqld start  或  service mysqld restart

02-mysql高级篇-再叙mysql架构及环境准备

02-mysql高级篇-再叙mysql架构及环境准备

02-mysql高级篇-再叙mysql架构及环境准备


  • mysql的配置文件介绍

主要配置文件:

  • 二进制日志log-bin

主要用于主从复制# Replication Master Server(default)# binary logging is required for replicationlog-bin=mysql-bin


  • 错误日志log-error

默认关闭记录严重的警告和错误信息、每次启动和关闭的详细信息等


  • 查询日志log

默认关闭记录查询的sql语句,如果开启会降低mysql的整体性能,因为记录日志需要消耗系统资源


  • 数据文件

两类系统  windows下:mysql安装位置下的data目录可以挑选很多库    linux下:默认路径 /var/lib/mysql           可以先查看当前系统中全部的库后再进去  frm文件 存放表结构myd文件 存放表数据myi文件 存放表索引


  • 如何配置

windows下:my.ini 文件linux下:/etc/my.cnf 文件


  • mysql架构介绍

  • 总体概述


    和其他数据库相比,mysql有些与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。

主要体现在存储引擎的架构上:

    插件式的存储引擎架构将查询处理和其他的系统任务以及数据的提取分离开来。可以根据实际需求和业务选择合适的存储引擎。


1.连接层

    最上层是一些客户端和连接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类似tcp/ip的通信。主要完成一些类似于连接处理、授权认证及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。

2.服务层

    第二层架构主要完成大多数的核心服务功能,如SQL接口、完成缓存的查询、SQL的分析和优化及部分内置函数的执行。所有跨存储引擎的功能也在这一层实现。

如过程、函数等,在该层,服务器会解析查询并创建相应的内部解析树,并对其完成相应的优化,如确定查询表的顺序、是否利用索引等,最后生成相应的执行操作。

如果是select语句,服务器还会查询内部的缓存。缓存空间足够大,在解决大量读操作的环境中能够很好的提升系统的性能。

3.引擎层

    存储引擎层,存储引擎真正的负责了mysql中数据的存储和提取,服务器通过API与存储引擎进行通信,不同的存储引擎具有的功能不同,可以根据实际需要进行选取

4.存储层

    数据存储层,主要是将数据存储在运行于裸设备的文件系统上,并完成与存储引擎的交互。

  • mysql存储引擎

  • 查看命令

1.使用命令查看存储引擎mysql> show engines;  # 查看mysql已提供的存储引擎mysql> show variables like '%storage_engine%';  # 查看mysql当前默认的存储引擎
  • MyISAM和InnoDB引擎的对比

对比项
MyISAM
InnoDB
主外键
不支持
支持
事务
不支持 支持
行表锁
表锁,即使操作一条记录也会锁住整个表,不适合高并发操作

行锁,操作时只锁住某一行,不对其它行产生影响,适合高并发操作

缓存
只缓存索引,不缓存真实数据
缓存索引和真实数据,对内存要求较高,而且内存大小对性能有决定性影响
表空间
关注点
性能 事务
默认安装
Y
Y




                            

下期预告:索引优化分析




如果你喜欢本文,
请长按二维码,关注 潭时录 .
转发至朋友圈,是对我最大的支持。

点个 在看 
喜欢是一种感觉
在看是一种支持
↘↘↘