1,DBA行业介绍

2,典型互联网电商平台数据库架构

3,DBA的职业素养

4,数据库产品和MySQL版本选择

5,二进制方式安装MySQL

6,MySQL的启动与关闭

7,启动故障分析

8,本地管理员密码


1,DBA行业介绍

Database Administrator,数据库管理员。职业发展路线:数据库技术专家、数据库业务专家、数据库内核专家、数据库架构师、数据库产品经理

课程介绍,掌握这些就可以达到中级DBA的水平

(1)MySQL 5.7的二进制安装部署*****

(2)MySQL升级步骤***

(3)MySQL 5.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


数据库三大产品:

RDBMS:关系型数据库管理系统 Oracle、MySQL、PG、MSSQL

NoSQL:非关系型数据库管理系统 MongoDB、Redis、ES

NewSQL:新型的分布式解决方案 TiDB、Spanner、AliSQL


2,典型互联网电商平台数据库架构

阿里数据库架构,前端LNMT支持用户访问,生成的订单信息到达后端,原来是Oracle集群支撑业务,经过8年去IOE(IBM、Oracle、EMC),用自主研发的产品oceanbase代替,前端的MySQL用二次开发的AliSQL代替,搜索类功能放到ES,商品索引信息放到MongoDB,Tair缓存集群将数据放在内存,用来支持热点产品的秒杀功能,类似Redis集群

01-DBA职业介绍及安装MySQL_初始化

3,DBA的职业素养

无论多大多小的公司,都要有备份数据的操作和意识,也要测试备份是否起作用,一旦数据丢失,对公司的打击是非常大的

作为DBA,人品很重要,不能以公司的数据换取个人利益

态度要严谨,不要乱改参数,数据库修改删除操作要再三考虑,且要有理论和实践的支持

不要告诉别人自己公司的用户名密码,或是用别人提供他们公司的账号密码登录系统

找别人解决问题时登录进系统后要录屏,方便以后看,也能作为证据证明没有做错误的操作

把最简单的事做的最漂亮,最专业

别惹事,不是自己的事最好不要插手,出事别怕事,如果误删了数据库,要及时上报,不要试图自己解决问题,以免造成二次伤害

数据库产品类型,https://db-engines.com/en/ranking,定期参加数据库大会,一线大厂分享数据库使用


4,MySQL版本选择

以下是MySQL的GA版,GA版是MySQL发布的可以在生产上使用的稳定版本

5.6:5.6.34 5.6.36 5.6.38(20170913) 5.6.40

5.7:5.7.18 5.7.20(20170913) 5.7.24 5.7.26

8.0:8014 8015 8016


5,CentOS 7.6安装二进制版本mysql 5.7.26

1,在mysql官网下载mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz,传到linux的/server/tools目录下

01-DBA职业介绍及安装MySQL_初始化_02

2,安装到/application/目录下——将压缩包解压后移动到该目录下,改名为mysql

01-DBA职业介绍及安装MySQL_数据_03

3,将/application/mysql/bin/添加到PATH中,编辑用户环境配置文件

01-DBA职业介绍及安装MySQL_sql_04

01-DBA职业介绍及安装MySQL_初始化_05

4,删除7.6自带的mariadb,yum remove mariadb-libs-5.5.60-1.el7_5.x86_64 -y

01-DBA职业介绍及安装MySQL_mysql_06

5,MySQL分为两个部分,第二步安装的为MySQL的软件部分,还需要单独为数据部分提供一个存储目录,新添加一块磁盘,挂载到/data目录下,MySQL数据存放在/data/mysql/data下。先生成MySQL系统数据,MySQL的启动依赖系统数据

查看磁盘信息

01-DBA职业介绍及安装MySQL_初始化_07

格式化新磁盘,创建挂载目录

01-DBA职业介绍及安装MySQL_数据库_08
    设置开机自动挂载

01-DBA职业介绍及安装MySQL_数据_09

手动挂载

01-DBA职业介绍及安装MySQL_数据库_10

6,新建MySQL用户和组,useradd -s /sbin/nologin mysql,MySQL的管理是使用这个用户,然后将软件目录和数据目录的所属用户和组都改为mysql

01-DBA职业介绍及安装MySQL_数据_11

7,初始化系统数据,即维持mysql正常启动运行的数据。5.6和5.7版本的初始化命令有区别,以上面为例,5.6中用/application/mysql/scripts/mysql_install_db进行初始化,5.7中先创建数据存放目录

01-DBA职业介绍及安装MySQL_初始化_12

安装依赖包,yum install libaio-devel -y否则报错,再执行mysqld --initialize --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data

01-DBA职业介绍及安装MySQL_初始化_13

若改为--initialize-insecure则为不需要密码登录mysql,若需要重新初始化,再次初始化之前需要先删除/data/mysql/data下的所有数据

执行结果的最后一行显示了root@localhost用户的登录密码rxV*d/=k%8oi,初始化操作是在/data/mysql/data目录下生成数据库启动必需的数据

01-DBA职业介绍及安装MySQL_mysql_14

6,MySQL的启动与关闭

1,启动mysql之前的配置,编写MySQL的配置文件/etc/my.cnf

01-DBA职业介绍及安装MySQL_数据_15

2,将/application/mysql/support-files/mysql.server复制到/etc/init.d/mysqld,就可以用service的方式管理MySQL

启动并查看mysql进程

01-DBA职业介绍及安装MySQL_数据_16

3,使用systemctl方式管理,则需要修改/etc/systemd/system/mysqld.service文件,执行命令

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

systemctl方式启动

01-DBA职业介绍及安装MySQL_sql_17

7,启动故障分析

修改数据目录下一个文件的属性,就会导致mysql启动不了

01-DBA职业介绍及安装MySQL_初始化_18

报错信息说明不了什么,因为只要是MySQL启动不了,就会报这个错误。查看错误日志文件,该文件默认在数据路径下扩展名为主机名.err,图中为oldboyDBA.err

01-DBA职业介绍及安装MySQL_mysql_19

MySQL不能正常启动也不会在屏幕上输出具体错误,如果此时日志文件也没有写入错误信息,/application/mysql/bin/mysqld --defaults-file=/etc/my.cnf的启动方式会将启动的错误信息输出到屏幕,正常启动的情况下也会将信息输出到屏幕

将文件属性改回来,chown mysql.mysql /data/mysql/data/ibdata1


8,本地管理员密码

启动mysql后只有一个用户,即root@localhost

若是以不需要密码登录的方式初始化,执行命令mysqladmin -uroot -p password oldboy123并回车修改密码,再次修改时使用这条命令(password后面是新密码)并输入旧密码

若是以第一次登录需要密码的方式,启动MySQL后执行mysql -uroot -p,用初始化后生成的密码rxV*d/=k%8oi登录。修改密码set password=password("XRmysql123#");,用户的密码字段为user表的authentication_string

01-DBA职业介绍及安装MySQL_mysql_20

忘记管理员用户密码的处理

维护模式启动MySQL(如果MySQL在运行则需要先停止),执行mysqld_safe --skip-grant-tables --skip-networking &。两个选项的作用分别是跳过授权表的检查(关闭密码验证功能),跳过其他用户远程登录(即为不允许用户远程登录),因为前面关闭了密码验证,如果不关闭远程登录,则任何用户都能不用密码登录MySQL。执行mysql就能直接登录

01-DBA职业介绍及安装MySQL_数据_21

先要加载授权表才能使用修改密码的命令,flush privileges;,grant all on *.* to root@'localhost' identified by '123456';

01-DBA职业介绍及安装MySQL_mysql_22