MySQL 介绍和安装
什么是数据?
网站的图片,文章视频等都可以称之为数据
数据库管理系统(DBMS)
RDBMS :关系型
NoSQL :非关系型
NewSQL:分布式型
笔试 : 请你列举熟悉的数据库产品?
RDBMS : Oracle ,MySQL ,MSSQL ,PG
NoSQL : Redis ,Mongo ,ES
NewSQL : TiDB (PingCap), Spanner(Google),OceanBase(Alibaba),PolarDB(aliyun)
面试 : 你们公司用了哪些数据库产品?
MySQL,Redis,MongoDB,ES
引出 版本 MySQL 5.7.20
引出 公司 数据库架构
引出 公司 备份策略
引出 公司 遇到的故障和性能问题
总结: ....
MySQL 软件分支
Oracle MySQL
MariaDB
PerconaDB
云数据(RDS MySQL 腾讯DB等)
MySQL的企业版本选择
企业主流版本
5.6==5.6.34 5.6.36 5.6.38 5.6.40
5.7==5.7.18 5.7.19 5.7.20 5.7.24
MySQL RC apl beta 不要选择,一定选择的是GA
关于版本GA时间
尽量记录两个版本的具体GA时间
5.6.38, 5.7.20 , 20170913
企业版本新环境建议
5.7 版本 GA 6-12 月版本 偶数版
MySQL 5.7.26 二进制版规划和部署
规划:
硬件环境
服务器型号 | cpu核心数 | 内存大小 | 硬盘大小 |
---|---|---|---|
DELL R720 | CPU28 | MEM*128G, | RAID108600G SAS |
系统环境 | Centos 7.6.1810 , kernel 3.10.0-957.el7.x86_64 |
网络规划
eth0 : 10.0.0.51/24
Hostname: db01
存储规划
/dev/sdb 20G
实施
创建相关目录
[root@db01 ~]# mkdir /application ----> 软件的存放目录
[root@db01 /]# mkdir /data/3306/data -p ----> 数据的存放位置
创建用户
[root@db01 /]# useradd -s /sbin/nologin -M mysql
上传软件并解压处理
上传解压(略.)
[root@db01 /application]# mv mysql-5.7.26-linux-glibc2.12-x86_64 mysql
数据初始化(创建系统数据)
[root@db01 ~]# rpm -qa|grep maria
mariadb-libs-5.5.60-1.el7_5.x86_64
[root@db01 ~]# yum remove mariadb-libs-5.5.60-1.el7_5.x86_64 -y
[root@db01 ~]# vim /etc/profile
export PATH=/application/mysql/bin:$PATH
[root@db01 ~]# mysql -V
[root@db01 ~]# mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/3306/data
书写配置文件
cat >/etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/application/mysql
datadir=/data/3306/data
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock
prompt=oldguo[\\d]>
EOF
准备启动脚本
# chown -R mysql.mysql /data/* /application/mysql/*
# cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@db01 ~]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/data/3306/data/db01.err'.
SUCCESS!
使用systemd管理mysql
cat > /etc/systemd/system/mysqld.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=/application/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
EOF
注意:将原来模式启动mysqld先关闭,然后再用systemd管理。
systemctl start/stop/restart/status mysqld
安装过程中的细节说明
初始化命令
[root@db01 ~]# mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/3306/data
作用: 生成系统数据到/data/3306/data中
-rw-r----- 1 mysql mysql 56 Aug 5 12:33 auto.cnf
-rw-r----- 1 mysql mysql 3159 Aug 5 12:38 db01.err
-rw-r----- 1 mysql mysql 6 Aug 5 12:38 db01.pid
-rw-r----- 1 mysql mysql 419 Aug 5 12:33 ib_buffer_pool
-rw-r----- 1 mysql mysql 12582912 Aug 5 12:38 ibdata1
-rw-r----- 1 mysql mysql 50331648 Aug 5 12:38 ib_logfile0
-rw-r----- 1 mysql mysql 50331648 Aug 5 12:33 ib_logfile1
-rw-r----- 1 mysql mysql 12582912 Aug 5 12:38 ibtmp1
drwxr-x--- 2 mysql mysql 4096 Aug 5 12:33 mysql
drwxr-x--- 2 mysql mysql 8192 Aug 5 12:33 performance_schema
drwxr-x--- 2 mysql mysql 8192 Aug 5 12:33 sys
参数说明:
--initialize-insecure # 启用非安全模式,进行数据初始化
--initialize # 启用安全模式,进行数据初始化
5.7 版本以后,加强了用户密码安全管理的功能
(1) 密码长度
(2) 密码复杂度
(3) 初始化时自动生成密码
扩展:
5.6 在初始化的方式
/application/mysql/scripts/mysql_install_db --user=mysql --basedir=/application/mysql --datadir=/data/3306/data
启动方式说明
systemd (centos7)
cat > /etc/systemd/system/mysqld.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=/application/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
EOF
sys-V (centos6)
service xxx start stop restart status
同主机版本升级(扩展)
备份
略.
安装8.0软件到新位置
[root@db01 /application]# mv mysql-8.0.16-linux-glibc2.12-x86_64 mysql8
停原库
[root@db01 /application]# systemctl stop mysqld
修改已有配置
环境变量
[root@db01 ~]# vim /etc/profile
export PATH=/application/mysql8/bin:$PATH
source /etc/profile
[root@db01 ~]# mysql -V
配置文件
[root@db01 ~]# vim /etc/my.cnf
[mysqld]
user=mysql
#basedir=/application/mysql
basedir=/application/mysql8
datadir=/data/3306/data
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock
prompt=oldguo[\\d]>
启动脚本
[root@db01 ~]# vim /etc/systemd/system/mysqld.service
8.0以前版本,需要进行数据升级(此步骤在8.0版本可省略)
mysql_upgrade
恢复原环境
简单的管理操作
[root@db01 ~]# mysqladmin -uroot -p password 123
[root@db01 ~]# mysql -uroot -p
5.7 以前:
oldguo[mysql]>select user,host ,password from mysql.user;
5.7 以后:
oldguo[mysql]>select user,host ,authentication_string from mysql.user;
MySQL安装报错整理
错误1:
mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
报错原因:缺少libao-devel包
解决方法:yum install -y libaio-devel
错误2:
[root@mysql /data/mysql/data]# mysqld --initialize --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data
2019-07-25T13:17:21.338642Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2019-07-25T13:17:21.341533Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.
2019-07-25T13:17:21.341574Z 0 [ERROR] Aborting
报错原因:/data/mysql/data下目录下有文件(mysql的保护措施)
解决办法:清空/data/mysql/data !!!只在全新环境情况,
错误3:
[root@mysql /application/mysql/support-files]# ./mysql.server start
Starting MySQL.sed: -e expression #1, char 19: unknown option to `s'
Logging to '/data/mysql/data/mysql.err'.
.... ERROR! The server quit without updating PID file (/data/mysql/data/mysql.pid).
解决方法:查看错误日志/data/mysql/data/mysql.err
/etc/my.cnf配置文件编写错误(参数改错了)
导致MySQL数据库无法启动的原因
without updating PID 类似错误
查看日志:data/mysql/data/主机名.err 找[ERROR] 中括号是ERROR的
可能原因:
/etc/my.cnf 路径不对等
/tmp/mysql.sock 文件修改过 或 删除过
数据目录权限不是mysql
参数改错了
`