[MySQL]-01MySQL简介及安装
本课件内容来自老男孩教育DBA专家郭导
第1章 课程介绍
1.DBA工作内容
1.1 初级DBA
安装配置
基本使用
基本故障处理
1.2 中级DBA
体系结构
备份策略
故障恢复
基础优化(索引,执行计划,慢日志)
高可用架构(搭建,监控,故障处理,架构演变)
1.3 高级DBA
高可用架构(设计,实施,运维)
高性能架构(读写分离,分库,分表,分布式)
整体数据库优化(基于业务的SQL优化)
2.课程框架
2.1 初级DBA
MySQL介绍及安装
MySQL基础管理
SQL应用
2.2 中级DBA
MySQL索引及执行计划
MySQL存储引擎
MySQL日志管理
MySQL备份与恢复
MySQL主从复制及架构演变
2.3 高级DBA
MySQL高可用架构
MySQL高性能架构
MySQL优化
MySQL8.0新特性
3.数据库产品演变
第一代数据库架构:
RDBMS 关系型数据库时代 : 合的时代
代表产品 :Oracle 、MSSQL 、MySQL
第二代数据库架构:拆的时代
NoSQL 非关系型数据库时代: Not Only SQL 时代
代表产品: Redis、MongoDB、Elasticsearch
第三代数据库架构:合的时代
NewSQL :新型数据库架构时代
代表产品:
阿里系列: OB 、PolarDB
Pincap : TiDB
google : spanner
4.常见数据库产品介绍
RDBMS: MySQL 、Oracle 、PG、 MSSQL
NoSQL: Redis 、MongoDB 、Elasticsearch
云数据库:RDS
第2章 MySQL介绍
1.为什么选择MySQL
MySQL性能卓越,服务稳定,很少出现异常宕机的情优。
MySQL开放源代码且无版权制约,自主性强,使用成本低。
MySQL历史悠久,社区及用户非常活跃,遇到问题,可以寻求帮助。
MySQL软件体积小,安装使用简单,并且易于维护,安装及维护成本低。
MySQL品牌口碑效应好,使得企业无须考虑即可直接用之。
LAMP、LNMP、LNMT (tomcat)等流行Web架构都含有MySQL。
MySQL支持多种操作系统,提供了多种API,支持多种开发语言,特别是对流行的Java、Python、PHP等语言都有很好的支持。
2.MySQL产品分支
Oracle MySQL :C版 、 E版 、Cluster版
Percona MySQL :最接近于Oracle MySQL
MariaDB :从5.5+ 以后,10.x +版本
阿里: RDS for MySQL
腾讯: TDSQL
3.MySQL版本选择
5.6 : GA 6-12月之间的版本
5.7 : 一般选择最新GA版本 5.7.26 5.7.28
8.0 : 一般选择最新GA版本 8.0.17+
3. MySQL获取与安装方式
下载地址:
https://downloads.mysql.com/archives/
安装方式:
1.编译安装
2.二进制安装
3.RPM安装
第3章 MySQL安装启动
1.下载地址
https://downloads.mysql.com/archives/community/
https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
2.创建目录
mkdir -p /data/soft
mkdir -p /data/mysql_3306/
3.下载并解压软件
cd /data/soft
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
tar zxf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz -C /opt/
mv /opt/mysql-5.7.28-linux-glibc2.12-x86_64 /opt/mysql-5.7.28
ln -s /opt/mysql-5.7.28 /opt/mysql
4.设置环境变量
echo 'export PATH=$PATH:/opt/mysql/bin' >>/etc/profile
source /etc/profile
mysql -V
5.清除遗留环境
rpm -qa|grep mariadb
yum remove mariadb-libs -y
rm -rf /etc/my.cnf
6.安装mysql依赖包
yum install -y libaio-devel
7.创建mysql普通用户并授权
useradd -s /sbin/nologin -M mysql
chown -R mysql.mysql /data/
chown -R mysql.mysql /opt/mysql*
8.初始化数据库
mysqld --initialize-insecure --user=mysql --basedir=/opt/mysql --datadir=/data/mysql_3306/
9.编辑mysql配置文件
cat> /etc/my.cnf <<EOF
[mysqld]
port=3306
user=mysql
basedir=/opt/mysql
datadir=/data/mysql_3306
socket=/tmp/mysql_3306.sock
[mysql]
socket=/tmp/mysql_3306.sock
EOF
10.准备启动脚本并启动数据库
后台启动
cp /opt/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
systemctl start mysqld
netstat -lntup|grep 3306
前台启动
mysqld_safe --defaults-file=/etc/my.cnf
11.配置root密码
mysqladmin password -S /tmp/mysql_3306.soc
12.登陆MySQL
mysql -uroot -p123456
第4章 MySQL多实例
1.MySQL多实例介绍
多实例是指一台服务器上运行多个Mysql实例
每个实例可以拥有自己的配置文件和独立的数据目录
每个实例可以单独的被管理,比如启动,关闭,登陆等操作
2.创建数据目录并更改授权
mkdir -p /data/mysql_3307/
mkdir -p /data/mysql_3308/
chown -R mysql.mysql /data/
3.初始化多实例数据
mysqld --initialize-insecure --user=mysql --basedir=/opt/mysql --datadir=/data/mysql_3307/
mysqld --initialize-insecure --user=mysql --basedir=/opt/mysql --datadir=/data/mysql_3308/
4.创建配置文件
cat > /data/mysql_3307/my.cnf <<EOF
[mysqld]
basedir=/opt/mysql/
datadir=/data/mysql_3307/
socket=/data/mysql_3307/mysql.sock
log_error=/data/mysql_3307/mysql.log
port=3307
EOF
cat > /data/mysql_3308/my.cnf <<EOF
[mysqld]
basedir=/opt/mysql/
datadir=/data/mysql_3308/
socket=/data/mysql_3308/mysql.sock
log_error=/data/mysql_3308/mysql.log
port=3308
EOF
5.创建多实例启动脚本
cat >/etc/systemd/system/mysqld_3307.service <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/opt/mysql/bin/mysqld --defaults-file=/data/mysql_3307/my.cnf
LimitNOFILE = 5000
EOF
cat >/etc/systemd/system/mysqld_3308.service <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/opt/mysql/bin/mysqld --defaults-file=/data/mysql_3308/my.cnf
LimitNOFILE = 5000
EOF
6.启动多实例
systemctl daemon-reload
systemctl start mysqld_3307.service
systemctl start mysqld_3308.service
7.检查多实例
[root@db-51 ~]# netstat -lntup|grep mysqld
tcp6 0 0 :::3307 :::* LISTEN 17019/mysqld
tcp6 0 0 :::3308 :::* LISTEN 17053/mysqld
8.多实例创建密码
mysqladmin -S /data/mysql_3307/mysql.sock password
mysqladmin -S /data/mysql_3308/mysql.sock password
9.登陆多实例
mysql -S /data/mysql_3307/mysql.sock -uroot -p123456
mysql -S /data/mysql_3308/mysql.sock -uroot -p123456