每天
上午: 提出一个自己学的最好的知识点 1个, 最不好的1个
晚上: 提出一个自己学的最好的知识点 1个, 最不好的1个
每天4个问题:
2个学的好的
2个学的弱的
- DBA职业规划
2.1 需要学习的内容
(1)MySQL 5.7 安装部署(二进制)解压即可*****
方式二:编译方式,在本文最下方
(2)MySQL升级步骤扩展 ***
(3)MySQL5.7 体系结构原理 *****
(4)MySQL基础管理 *****
(5)基础SQL语句使用 *****
(6)SQL高级应用 ***
(7)Information_schema获取元数据 ***
(8)索引、执行计划管理(基础优化)*****
(9)存储引擎 *****
(10)日志管理 *****
(11)备份与恢复 ******
(12)主从复制及架构演变 ******
(13)传统的高可用及读写分离(MHA&Atlas)****
(14)传统分布式架构设计与实现-扩展(Mycat—>DBLE,DRDS)**
(15)MySQL 5.7 高可用及分布式架构-扩展(MGR,InnoDB Cluster)***
(16)MySQL优化(安全、性能) ****
(17)MySQL 监控(zabbix、Open-falcon) ****
(18) RDS(阿里云课程) *****
额外要会的(NoSQL):
Redis
mongodb
ES
了解:
PG
Oracle
RDBMS : 关系型数据库 管理系统
NoSQL : 非关系型的
NewSQL : 新型的分布式解决方案
RDBMS —> NOSQL+RDBMS —> NoSQL(RDBMS),RDBMS(NoSQL)----> NewSQL (spanner TiDB PDB)
3、DBA职业素养
3.1、人品
责任-----权利
3.2
3.2.1 严谨
磁带库----->备份软件-----17楼
数据库修改\删除类的命令时 再三考虑,而且要有理论或者实践的支撑
3.2.2 请收起你的好奇心!!!!!
注意规范:
脱库? 华住网(ip root 密码),“脱敏”!!!。
学会保护自己!!!
3.3、细心
把最简单的事情做的最漂亮,最专业。
3.4、心态
别惹事,出事别怕事
职业技能有关:
3.5、熟悉操作系统(精通)
3.6、熟悉公司业务
业务?
产品的功能
用户的行为(热功能,热数据)
3.7、熟悉行业
熟悉行业发展趋势
版本
数据库产品类型
https://db-engines.com/en/ranking
定期参加数据库大会
3.8、喜欢数据库
体验很重要
其实成功的门槛并不拥挤,因为大部分人在路上就放弃了。
—oldguo
- 数据库产品
4.1 什么是数据?
4.2 DBMS 数据库管理系统
RDBMS : Oracle ,MySQL ,PG,MSSQL
NoSQL : MongoDB ,Redis ,ES
NEWSQL (分布式): TiDB,Spanner ,AliSQL(RDS+DRDS) ,OB ,PolarDB
4.3 MySQL 企业版本GA选择
5.6 : 5.6.34 5.6.36 5.6.38(2017913) 5.6.40
5.7 : 5.7.18 ,20(2017913) ,24 ,(上课版本:5726)
8.0 : 8014, 8015 ,8016
4.4 关于数据库版本面试
你们公司用的什么版本的MySQL? 你在公司干几年了?
4.5 MySQL 5.7.26 二进制版本安装
CentOS7.6
4.5.1 下载并上传软件至/server/tools
或者直接在linux上下载 wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.26-linux-glibc2.12-i686.tar.gz
[root@db01 ~]# mkdir -p /server/tools
[root@db01 ~]# cd /server/tools/
[root@db01 /server/tools]# yum install -y lrzsz
[root@db01 /server/tools]# ls
mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
4.5.2 解压软件
[root@db01 /server/tools]# tar xf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
[root@db01 ~]# mkdir /application
[root@db01 /server/tools]# mv mysql-5.7.26-linux-glibc2.12-x86_64 /application/mysql
4.5.3 用户的创建处理原始环境
[root@db01 ~]# yum remove mariadb-libs-5.5.60-1.el7_5.x86_64 -y
[root@db01 ~]# rpm -qa |grep mariadb
[root@db01 ~]# useradd -s /sbin/nologin mysql
4.5.4 设置环境变量
vim /etc/profile
export PATH=/application/mysql/bin:$PATH
[root@db01 ~]# source /etc/profile
[root@db01 ~]# mysql -V
mysql Ver 14.14 Distrib 5.7.26, for linux-glibc2.12 (x86_64) using EditLine wrapper
4.5.5 创建数据路径并授权
- 添加一块新磁盘模拟数据盘
- 格式化并挂载磁盘
[root@db01 ~]# fdisk -l
[root@db01 ~]# mkfs.ext4 /dev/sdb
[root@db01 ~]# mkdir /data
[root@db01 ~]# blkid
[root@db01 ~]# vim /etc/fstab
[root@db01 ~]# UUID=1ec2fd76-d6f3-4710-a80d-26c4fa871fa7 /ext4 defaults 0 0
[root@db01 ~]# mount /dev/sdb /data
[root@db01 ~]# df -h
/dev/sdb - 授权
chown -R mysql.mysql /application/*
chown -R mysql.mysql /data
4.5.6 初始化数据(创建系统数据)
5.6 版本 初始化命令
编译版:/usr/bin/mysql_install_db
压缩版:/application/mysql/scripts/mysql_install_db
5.7 版本
[root@db01 ~]# mkdir /data/mysql/data -p
[root@db01 ~]# chown -R mysql.mysql /data
[root@db01 ~]# mysqld --initialize --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data
说明:
–initialize 参数:
- 对于密码复杂度进行定制:12位,4种
- 密码过期时间:180
- 给root@localhost用户设置临时密码
报错:
mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
解决:
[root@db01 ~]# yum install -y libaio-devel
[root@db01 ~]# mysqld --initialize --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data
2019-06-13T04:21:27.706564Z 1 [Note] A temporary password is generated for root@localhost: =mrV)_16is4U
–initialize-insecure 参数:
无限制,无临时密码
[root@db01 /data/mysql/data]# \rm -rf /data/mysql/data/*
[root@db01 ~]# mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data
4.5.7 配置文件的准备
cat >/etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/application/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock
server_id=6
port=3306
[mysql]
socket=/tmp/mysql.sock
EOF
4.5.8 启动数据库
- sys-v
[root@db01 /etc/init.d]# cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@db01 /etc/init.d]# service mysqld restart
-
systemd
注意: sysv方式启动过的话,需要先提前关闭,才能以下方式登录
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 -
如何分析处理MySQL数据库无法启动
5.1 without updating PID 类似错误
查看日志:
在哪?
/data/mysql/data/主机名.err
[ERROR] 上下文
可能情况:
/etc/my.cnf 路径不对等
/tmp/mysql.sock文件修改过 或 删除过
数据目录权限不是mysql
参数改错了
6.管理员密码的设定(root@localhost)
[root@db01 ~]# mysqladmin -uroot -p password oldboy123
Enter password:
- 管理员用户密码忘记了?
–skip-grant-tables #跳过授权表
–skip-networking #跳过远程登录
7.1 关闭数据库
[root@db01 ~]# /etc/init.d/mysqld stop
Shutting down MySQL… SUCCESS!
7.2 启动数据库到维护模式
[root@db01 ~]# mysqld_safe --skip-grant-tables --skip-networking &
7.3 登录并修改密码
mysql> alter user root@‘localhost’ identified by ‘1’;
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> flush privileges;
mysql> alter user root@‘localhost’ identified by ‘1’;
Query OK, 0 rows affected (0.01 sec)
7.4 关闭数据库,正常启动验证
番外篇: MySQL源码版安装方式:
在此之前确保已经安装文件上传系统lrzsz,安装过的可跳过该步骤:
1.手动编译安装
1、下载安装包,wget https://ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz 或者是 上传已经下载好的安装包
2、cd /usr/local/src/
3、mkdir lrzsz
4、cd lrzsz/
5、解压:tar -xvf lrzsz-0.12.20.tar.gz
6、cd lrzsz-0.12.20
7、执行配置:./configure
a)会提示 configure: error: no acceptable cc found in $PATH,意思是缺少gcc命令,需要安装gcc
b)手动安装gcc比较麻烦,所有选择使用yum安装
c)yum install gcc
8、编译:make
9、安装:make install
10、cd /usr/bin
11、ln -s /usr/local/bin/lrz rz
12、ln -s /usr/local/bin/lsz sz
13、输入命令:rz
a)随便选择 一个文件
b)安装成功!
2.使用yum安装
yum -y install lrzsz
进入正题
下载:http://dev.mysql.com/downloads/mysql/
或者使用wget下载:
wget http://dev.mysql.com/get/D
ownloads/MySQL-5.6/MySQL-5.6.22-1.el6.i686.rpm-bundle.tar
2.安装
2.1.检测是否已经安装了mysql
rpm -qa | grep mysql
如果已经安装了,将其卸载,如:
rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64
2.2.安装mysql
1、mkdir /usr/local/src/mysql
2、cd /usr/local/src/mysql
3、tar -xvf MySQL-5.6.22-1.el6.i686.rpm-bundle.tar
4、安装server
rpm -ivh MySQL-server-5.6.22-1.el6.i686.rpm
出错:
安装依赖:yum -y install libaio.so.1 libgcc_s.so.1 libstdc++.so.6
需要升级libstdc+±4.4.7-4.el6.x86_64
yum update libstdc+±4.4.7-4.el6.x86_64
5、安装中:
6、安装client
安装依赖:yum -y install libncurses.so.5 libtinfo.so.5
7、查询mysq服务运行状态
服务未启动。
8、启动mysql服务
service mysql start
9、使用root账号登录mysql
提示:
在安装mysql server时有句提示:
注意:这个密码是不安全的,所有需要修改初始密码。
10、使用密码登录mysql账号:mysql -uroot -p
11、修改root密码:SET PASSWORD = PASSWORD(‘123456’);
2.3.系统启动时自动启动mysql服务
加入到系统服务:
chkconfig --add mysql
自动启动:
chkconfig mysql on
查询列表:
chkconfig
说明:都没关闭(off)时是没有自动启动。
2.4.开启远程访问
登录:
mysql -uroot –p123456
设置远程访问(使用root密码):
grant all privileges on . to ‘root’ @’%’ identified by ‘123456’;
flush privileges;
防火墙打开3306端口
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
/etc/rc.d/init.d/iptables save
/etc/init.d/iptables status
扩展之卸载MySQL
**
如何在Linux下卸载MySQL数据库呢? 下面总结、整理了一下Linux平台下卸载MySQL的方法。 MySQL的安装主要有三种方式:二进制包安装(Using Generic Binaries)、RPM包安装、源码安装。对应不同的安装方式,卸载的步骤有些不同。文章中如有不足或不对的地方,敬请指出或补充!
RPM包安装方式的MySQL卸载
1: 检查是否安装了MySQL组件。
[root@DB-Server init.d]# rpm -qa | grep -i mysql
MySQL-devel-5.6.23-1.linux_glibc2.5
MySQL-client-5.6.23-1.linux_glibc2.5
MySQL-server-5.6.23-1.linux_glibc2.5
clip_image001
如上所示,说明安装了MySQL 5.6.23这个版本的client、server、devel三个组件。
2: 卸载前关闭MySQL服务
2.1 方法1
[root@DB-Server init.d]# service mysql status
MySQL running (25673)[ OK ]
[root@DB-Server init.d]# service mysql stop
Shutting down MySQL…[ OK ]
[root@DB-Server init.d]# service mysql status
MySQL is not running[FAILED]
clip_image002
2.2 方法2
[root@DB-Server init.d]# ./mysql status
MySQL running (26215)[ OK ]
[root@DB-Server init.d]# ./mysql stop
Shutting down MySQL…[ OK ]
[root@DB-Server init.d]# ./mysql status
MySQL is not running[FAILED]
[root@DB-Server init.d]#
clip_image003
[root@DB-Server init.d]# chkconfig --list | grep -i mysql
mysql 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@DB-Server init.d]#
- 收集MySQL对应的文件夹信息
[root@DB-Server init.d]# whereis mysql
mysql: /usr/bin/mysql /usr/include/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz
最好实用find命令查看MySQL数据库相关的文件,方便后面彻底删除MySQL。
[root@DB-Server init.d]# find / -name mysql
/etc/rc.d/init.d/mysql
/etc/logrotate.d/mysql
/var/lock/subsys/mysql
/var/lib/mysql
/var/lib/mysql/mysql
/usr/include/mysql
/usr/include/mysql/mysql
/usr/bin/mysql
/usr/share/mysql
/usr/lib64/mysql
clip_image004
4: 卸载删除MySQL各类组件
[root@DB-Server init.d]#
[root@DB-Server init.d]# rpm -ev MySQL-devel-5.6.23-1.linux_glibc2.5
[root@DB-Server init.d]# rpm -ev MySQL-server-5.6.23-1.linux_glibc2.5
You have new mail in /var/spool/mail/root
[root@DB-Server init.d]# rpm -ev MySQL-client-5.6.23-1.linux_glibc2.5
[root@DB-Server init.d]#
clip_image005
5:删除MySQL对应的文件夹
检查各个MySQL文件夹是否清理删除干净。
[root@DB-Server init.d]# whereis mysql
mysql:
[root@DB-Server init.d]# find / -name mysql
/var/lib/mysql
/var/lib/mysql/mysql
/usr/lib64/mysql
[root@DB-Server init.d]# rm -rf /var/lib/mysql
[root@DB-Server init.d]# rm -rf /var/lib/mysql/mysql
[root@DB-Server init.d]# rm -rf /usr/lib64/mysql
[root@DB-Server init.d]#
6:删除mysql用户及用户组
如果有必要,删除mysql用户以及mysql用户组。
[root@DB-Server ~]# more /etc/passwd | grep mysql
mysql❌101:501::/home/mysql:/bin/bash
[root@DB-Server ~]# more /etc/shadow | grep mysql
mysql:!!:16496::::::
[root@DB-Server ~]# more /etc/group | grep mysql
mysql❌501:
[root@DB-Server ~]# userdel mysql
[root@DB-Server ~]# groupdel mysql
groupdel: group mysql does not exist
[root@DB-Server ~]#
7:确认MySQL是否卸载删除
[root@DB-Server init.d]# rpm -qa | grep -i mysql
二进制包/源码安装方式的MySQL卸载
如果是采用二进制包安装的MySQL,那么你用下面命令是找不到任何MySQL组件的。所以如果你不知道MySQL的安装方式,千万不要用下面命令来判别是否安装了MySQL
[root@DB-Server init.d]# rpm -qa | grep -i mysql
1: 检查MySQL服务并关闭服务进程。
首先通过进程查看是否有MySQL的服务的状态, 如下所示,MySQL服务是启动的。
[root@DB-Server init.d]# ps -ef | grep mysql
root 4752 4302 0 22:55 pts/1 00:00:00 more /etc/init.d/mysql.server
root 7176 1 0 23:23 pts/1 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/DB-Server.localdomain.pid
mysql 7269 7176 15 23:23 pts/1 00:00:01 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/data/DB-Server.localdomain.err --pid-file=/usr/local/mysql/data/DB-Server.localdomain.pid
root 7321 4302 0 23:23 pts/1 00:00:00 grep mysql
[root@DB-Server init.d]# /etc/init.d/mysql.server status
MySQL running (7269)[ OK ]
[root@DB-Server init.d]# /etc/init.d/mysql.server stop
Shutting down MySQL…[ OK ]
[root@DB-Server init.d]# /etc/init.d/mysql.server status
MySQL is not running[FAILED]
[root@DB-Server init.d]#
clip_image006
2: 查找MySQL的安装目录并彻底删除
[root@DB-Server init.d]# whereis mysql
mysql: /usr/local/mysql
[root@DB-Server init.d]# find / -name mysql
/var/spool/mail/mysql
/usr/local/mysql-5.7.5-m15-linux-glibc2.5-x86_64/include/mysql
/usr/local/mysql-5.7.5-m15-linux-glibc2.5-x86_64/bin/mysql
/usr/local/mysql-5.7.5-m15-linux-glibc2.5-x86_64/data/mysql
/usr/local/mysql
clip_image007
[root@DB-Server init.d]# rm -rf /usr/local/mysql-5.7.5-m15-linux-glibc2.5-x86_64/
[root@DB-Server init.d]# rm -rf /usr/local/
[root@DB-Server init.d]# rm -rf /var/spool/mail/mysql
[root@DB-Server init.d]#
3: 删除一些配置文件
配置文件一般有/etc/my.cnf 或/etc/init.d/mysql.server,视具体安装配置情况而定。
4:删除MySQL用户以及用户组
[root@DB-Server ~]# id mysql
uid=101(mysql) gid=501(mysql) groups=501(mysql) context=root:system_r:unconfined_t:SystemLow-SystemHigh
[root@DB-Server ~]# userdel mysql
参考资料
http://blog.itblood.com/completely-uninstall-the-mysql-under-linux-graphic-tutorials.html