学习参考博客:https://www.jianshu.com/nb/36336961
1 学习大纲
- MySQL 5.7安装部署(二进制),编译自己扩展
- MySQL升级步骤扩展
- MySQL5.7 体系结构原理
- MySQL基础管理
- 基础SQL语句使用
- SQL高级应用
- Information_schema获取元数据
- 索引、执行计划管理(基础优化)
- 存储引擎
- 日志管理
- 备份与恢复
- 主从复制及架构演变
- 传统的高可用及读写分离(MHA&Atlas)
- 传统分布式架构设计与实现-扩展(Mycat—>DBLE,DRDS)
- MySQL 5.7高可用及分布式架构-扩展(MGR,InnoDB Cluster)
- MySQL优化(安全、性能)
- MySQL监控(zabbix、Open-falcon)
- RDS(阿里云课程)
2 基础知识
数据库分类
RDBMS: 关系型数据库管理系统
NOSQL: 非关系型的
NewSQL:新型的分布式解决方案
数据库发展路径
RDBMS—->NOSQL+RDBMS—->NOSQL(RDBMS),RDBMS(NOSQL)——>NewSQL(spanner TiDB PDB)
全球数据库排名网站
https://db-engines.com/en/ranking
MySQL企业版本GA选择
5.6:5.6.34 5.6.36 5.6.38(2017.09.13) 5.6.40
5.7:5.7.18 5.7.20(2017.09.13) 5.7.24 5.7.26
8.0:8.0.14 8.0.15 8.0.163 安装部署
3.1 解压软件
1)创建一个目录用于存放mysql安装包以及安装目录
[root@db01 ~]# mkdir /server/tools /application
2)对上传的mysql安装包进行解压
[root@db01 tools]# tar -zxvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
3)将解压的文件移动并重命名为mysql至程序安装目录/application下
[root@db01 tools]# mv mysql-5.7.26-linux-glibc2.12-x86_64 /application/mysql3.2 添加用户并设置环境变量
1)创建mysql用户
[root@db01 ~]# useradd -s /sbin/nologin mysql
2)设置环境变量
[root@db01 ~]# vim /etc/profile
export PATH=/application/mysql/bin/:$PATH
[root@db01 ~]# source /etc/profile
3)验证命令是否可用
[root@db01 ~]# mysql -V3.3 挂载数据盘
生产环境建议将数据盘单独挂载,此处lab环境可以忽略
1)格式化磁盘
[root@db01 ~]# mkfs.xfs /dev/sdb
2)创建挂载目录
[root@db01 ~]# mkdir /data
3) 查看UUID
[root@db01 ~]# blkid | grep sdb
/dev/sdb: UUID=”e2e80666-2ead-40fe-9d27-021375c1271e” TYPE=”xfs”
4) 编辑挂载文件
[root@db01 ~]# vim /etc/fstab
UUID=e2e80666-2ead-40fe-9d27-021375c1271e /data xfs defaults,nofail,noatime 0 0
5)挂载
[root@db01 ~]# mount -a
6)查看挂载情况
[root@db01 ~]# df -Th | grep sdb
/dev/sdb xfs 20G 33M 20G 1% /data3.4 修改目录权限
[root@db01 ~]# chown -R mysql.mysql /application/*
[root@db01 ~]# chown -R mysql.mysql /data3.5 MySQL初始化
初始化用于生成系统原始数据
5.6版本:初始化命令 /application/mysql/scripts/mysql_install_db
5.7版本:采用以下方式
[root@db01 ~]# mkdir /data/mysql/data -p
[root@db01 ~]# chown -R mysql.mysql /data/mysql/data/
[root@db01 ~]# mysqld —initialize —user=mysql —basedir=/application/mysql —datadir=/data/mysql/data
备注1:通常在初始化时会提示缺少依赖库,需要安装一下依赖文件
[root@db01 ~]# yum install -y libaio-devel
备注2:这种初始化方法会有默认密码,且对密码做了如下限制,一般不这样进行初始化
1、对于密码复杂度进行定制:12位,4种
2、密码过期时间,180
3、给root@localhost用户设置临时密码
采用以下初始化方式,完成之后无初始密码
[root@db01 ~]# rm -rf /data/mysql/data/*
[root@db01 ~]# mysqld —initialize-insecure —user=mysql —basedir=/application/mysql —datadir=/data/mysql/data —explicit_defaults_for_timestamp
—initialize-insecure 参数:无密码复杂度限制,无临时密码3.6 配置文件
生成配置文件[root@db01 ~]# vim /etc/my.cnf[mysqld]
user=mysql
basedir=/application/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock
server_id=6
port=3306
[mysql]
socket=/tmp/mysql.sock
3.7 启动数据库
3.7.1 sys-v方式
[root@db01 ~]# cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@db01 ~]# service mysqld restart3.7.2 systemd方式
[root@db01 ~]# cat /etc/systemd/system/mysqld.service[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
4 密码管理
4.1 设置密码
此为第一次设置密码
[root@db01 ~]# mysqladmin -uroot -p password abc123..4.2 修改密码
[root@db01 ~]# mysqladmin -uroot -p password abc123..
Enter password: 此处输入旧密码即可5 常见问题处理
5.1 without updating PID 类似错误
查看日志信息
cat /data/mysql/data/主机名.err
[ERROR] 上下文
可能情况:
/etc/my.cnf 路径不对等
/tmp/mysql.sock文件修改过或删除过
数据目录权限不是mysql
参数改错了5.2 管理员密码忘记处理
—skip-grant-tables 跳过授权表
—skip-networking 跳过远程登录
1)关闭数据库
/etc/init.d/mysqld stop
2)启动数据库进入维护模式
mysqld_safe —skip-grant-tables —skip-networking &
3)登录并修改密码
mysql> alter user root@’localhost’ identified by ‘123456’;
ERROR 1290 (HY000): The MySQL server is running with the —skip-grant-tables option so it cannot execute this statement
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> alter user root@’localhost’ identified by ‘123456’;
Query OK, 0 rows affected (0.00 sec)
4)关闭重启数据库即可恢复