一. 运维DBA工作内容
1.1 初级DBA
- 安装配置
- 数据库基本使用
- 基本故障处理
1.2 中级DBA
- 体系结构
- 备份策略设计
- 故障恢复
- 基础高可用的运维(搭建、监控、故障处理、架构演变)
- 基础优化(索引、执行计划、慢日志)
1.3 高级DBA
- 高可用架构(设计、实施、运维)
- 高性能架构(读写分离、分库、分表、分布式)
- 整体数据库库优化(基于业务的SQL优化)
二. DBA运维人员的职业素养
- 人品
- 严谨
- 细心
- 心态
- 熟悉操作系统
- 熟悉业务(产品功能/用户行为)
- 熟悉行业
- 喜欢数据库
三. 数据库管理系统
3.1 数据
数据是指对客观事件进行记录并可以鉴别的符号,是对客观事务的性质、状态以及相互关系等进行记载的物理符号或这些物理符号的组合。他是可识别的、抽象的符号。
3.2 数据库管理系统
为了更好地存储数据,管理数据
3.3 数据库管理系统类型
- RDBMS(关系型数据库)
- NOSQL(非关系型数据库)
- NewSQL(分布式数据库)
3.4 笔试(列举熟悉的数据库产品)
RDBMS
Oracle,MySQL,mssql(SQL Server),PG(postgresql)
数据安全性较高的应用场景
二维表的形式组织存储数据(有清楚的行列结构)
NOSQL: redis键值
name:zhangsan
mongodb(文档)
json {
id:1
name:zhangsan
}
例如有memcache,ES,Hbase,neo4j
NewSQL
略
3.5 面试
3.5.1 流程
问:你们公司用了哪些数据库
答:MySQL,redis......(具体情况具体分析)
说出你公司应用的数据库版本
说出你公司的数据库架构
说出你公司的备份策略
以及公司遇到的故障与性能问题,怎么解决的
最后可以补充其他
3.5.2 举例说明
(1)为什么选择MySQL新老版本
5.6.34 5.6.36 5.6.38
答:当前版本应用了二年了,没有出现由于版本原因造成的不稳定情况。升级是由风险的,所以暂时没有升级
5.7.18 5.7.20
答:公式的新项目使用了5.7.20这个版本的高可用架构(MGR)
四. MySQL获取与安装方式介绍
4.1 安装方式
- (1)RPM、Yum(Red Hat Enterprise Linux/Oracle Linux):安装方便,安装速度快,无法定制
- (2)二进制(Linux Generic):不需要安装,解压即可使用,不能定制功能
- (3)编译安装/源码安装(Source Code):可定制,安装man
5.5版本之前:./configure , make , make install
5.5版本之后:cmake , gmake
先编译,然后制作rpm,制作yum库,然后yum安装
这种方法简单、速度快、可定制,就是比较复杂制作时间长
4.2 企业选择安装方式
- (1) 中小企业:以上方式都可以,运维偏向编译,DBA偏向二进制
- (2)大型企业:可以选择制作yum库的安装方式
4.3 MySQL软件分支
- (1)Oracle MySQL
- (2)MariaDB
- (3)PerconaDB
- (4)RDS MySQL,腾讯DB)云数据库
4.3 MySQL的企业版本选择
- (1)3.6.1:企业主流版本
- (2)5.6版:(5.6.34, 5.6.36, 5.6.38, 5.6.40)
- (3)5.7版:(5.7.18, 5.7.19, 5.7.20, 5.7.24)
注意:MySQL RC、apl、beta版本都不要选,一定要选择GA版(稳定版)
4.4 关于版本的GA时间
- 尽量记住两个版本的具体GA时间(面试用)
- 5.6.38与5.7.20这两个版本的GA时间都是2017.09.13
- 企业版本新环境建议5.7版,GA时间在6---12月之间的版本,偶数版
- 官方网站路径(dev.mysql.com与support.oracle.com)
https://downloads.mysql.com/archives/community/
五. MySQL 5.7.26版本二进制规划与部署
5.1 部署规划
5.1.1 硬件环境
- DELL , R720 , CPU28 , MEM128G , RAID108*600G SAS
5.1.2 OS规划 - CentOS7.6.1810 , kernel , 3.10.0-957.el7.x86_64
5.1.3 网络规划 - eth0:10.0.0.51/24 hostname:db01
5.1.4 存储规划 - /dev/sdb 20G
5.2 实例实施过程
(1)mkdir /application #创建软件存放目录
(2)mkdir /data/3306/data -p #创建数据存放目录
(3)useradd -s /sbin/nologin -M mysql #创建数据库实例用户
(4)上传二进制软件包到软件存放目录
(5)tar xf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz #进行解压
(6)mv mysql-5.7.26-linux-glibc2.12-x86_64 mysql #对解压后的目录进行重命名
(7)rpm -qa|grep maria #进行查询安装软件
- mariadb-libs-5.5.60-1.el7_5.x86_64
(8)yum remove mariadb-libs-5.5.60-1.el7_5.x86_64 -y #若出现上述包裹则进行移除
(9)vim /etc/profile #修改环境变量,增加下方一行
- export PATH=/application/mysql/bin:$PATH
(10)mysql -V #查询目前数据库版本
**yum install -y libaio-devel下载初始化支持软件**
(11)mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/3306/data #数据初始化,生成数据到数据存放目录
(12)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
(13)chown -R mysql.mysql /data/* /application/mysql/* #修改上诉所有目录权限为用户mysql
(14)cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld #复制脚本启动文件
(15)/etc/init.d/mysqld start #利用复制过来的启动路径启动数据库
5.3 使用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
注意:将原来模式启动的数据库先关闭,再用systemd管理
5.4 数据库简单操作命令
1. 设置密码
- mysqladmin -uroot -p password 072411命令之后输入老密码,之前没有所以不用输入
2. 测试登录 - mysql -uroot -p之后输入密码072411即可
六. MySQL 5.7版本编译安装
七. 源码编译安装MySQL
八. 同主机版本升级
8.1 具体过程
第一:备份原库数据
- 后期利用专门的备份工具进行备份
第二:安装新版本软件(8.0版)到新位置 - mv mysql-8.0.16-linux-glibc2.12-x86_64 mysql8
第三:停止运行原库 - systemctl stop mysqld
第四:修改环境变量(/etc/profile) - export PATH=/application/mysql8/bin:$PATH
第五:进行激活环境变量 - source /etc/profile
第六:查看当前mysql数据库版本 - mysql -V
第七:修改配置文件(/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]>
第八:修改systemd管理脚本
[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/mysql8/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
第九:启动数据库
- systemctl start mysqld
报错
Warning: mysqld.service changed on disk. Run 'systemctl daemon-reload' to reload units.
执行一遍:systemctl daemon-reload即可
再systemctl start mysqld
第十:升级数据
- mysql_upgrade
此步骤在8.0以前版本需要进行,8.0版本则不需要