Bootstrap

数据库服务体系结构

1. 数据库服务应用配置

服务进行配置有什么作用?

         实现服务运行启动

         实现某些功能

应用配置有三种方式?

        利用编译安装进行配置

        编写配置文件信息 ,.默认的配置文件: /etc/my.cnf

        利用启动命令参数配置信息,mysqld_safe --skip-grant-tables --skip-networking &

#配置文件内容 有[]的部分表示对客户端或者服务端的配置区域
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3306/data
port=3306
socket=/tmp/mysql.sock

[client]
socket=/tmp/mysql.sock

 启动数据库服务为什么会有两个进程信息?

一个是 mysqld_safe

一个是 mysqld

知识点补充:数据库服务启动与关闭管理

mysqld_safe   父进程,接受任务信息

mysqld            子进程,处理任务信息,核心

 2. 数据库服务实例创建

1. 在数据库服务运行中,可以存在多实例运行的概念,什么是数据库服务的多实例呢?

一般在一个系统环境中,可以运行多个相同的服务程序信息,并且产生不同的进程和网络端口信息,就可以成为多实例概念。

2. 多实例的作用?

充分利用硬件资源

 2.1 实战多实例

## 1. 环境部署准备
##创建数据目录
mkdir -p /data/330{7..9}/data
chown -R mysql. /data/

## 2. 进行不同实例的初始化
##将默认的配置文件改名或者移走
mv /etc/my.cnf /etc/my.cnf.bak
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3307/data
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3308/data
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3309/data

## 3. 编写配置文件
vim /data/3307/data/my.cnf 
[mysql]
socket=/tmp/mysql3307.sock
[mysqld]
user=mysql
port=3307
basedir=/usr/local/mysql
datadir=/data/3307/data
socket=/tmp/mysql3307.sock

vim /data/3308/data/my.cnf 
[mysql]
socket=/tmp/mysql3308.sock
[mysqld]
user=mysql
port=3308
basedir=/usr/local/mysql
datadir=/data/3308/data
socket=/tmp/mysql3308.sock

vim /data/3309/data/my.cnf 
[mysql]
socket=/tmp/mysql3309.sock
[mysqld]
user=mysql
port=3309
basedir=/usr/local/mysql
datadir=/data/3309/data
socket=/tmp/mysql3309.sock

mysqld_safe --defaults-file=/data/3307/data/my.cnf &
mysqld_safe --defaults-file=/data/3308/data/my.cnf &
mysqld_safe --defaults-file=/data/3309/data/my.cnf &

## 4. 检查端口是否成功
## 5. 指定套接字文件登录
mysql -S /tmp/mysql3307.sock   ##登录
select @@port;   ##sql语句查看端口

 3. 数据库服务版本升级

实现程序功能升级,升级过程中:不能影响数据信息,不能影响业务使用

实现升级的方法:

        本地升级:单台服务器升级

        迁移升级:多台服务器升级   -- 主从结构

注意事项:

先进行小版本升级,在进行大版本升级

3.1 数据库升级实战(5.6---->5.7) 

## 0. 准备环境
systemctl  start mysql56  ##启动5.6数据库
## 创建测试数据
create database oldboy;
create table stu (name varchar(10),age int,gender char(1));
insert into stu values ('oldboy',20,'m');
select * from stu;

## 1. 数据库旧版服务关闭
systemctl stop mysql56.service 

## 2. 数据库服务最新程序启动
## 实现挂库信息配置。 然后跳过授权表和网络的方式启动,新程序加载旧数据
vim /etc/my57.cnf
[mysql]
socket=/tmp/mysql.sock
[mysqld]
user=mysql
basedir=/usr/local/mysql57
datadir=/data/3356/data      ##修改为旧版的数据目录
socket=/tmp/mysql.sock

##启动新版数据库
 /usr/local/mysql57/bin/mysqld_safe --defaults-file=/etc/my57.cnf --skip-grant-tables --skip-networking &

## 3. 进入数据库查看数据
select * from oldboy.stu;
## 4. 数据库服务升级数据结构
/usr/local/mysql57/bin/mysql_upgrade -S /tmp/mysql.sock --force

3.2 数据库升级实战(5.7------>8.0)

## 1. 数据库最新程序安装
## 2. 旧版数据库服务关闭
systemctl  stop mysql57
## 3. 新版数据库服务启动
## 实现挂库信息配置。 然后跳过授权表和网络的方式启动,新程序加载旧数据
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3356/data      ##旧版本的数据目录
socket=/tmp/mysql.sock

## 启动新版数据库
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --skip-grant-tables --skip-networking &
 
## 查看数据是否丢失
mysql
select * from oldboy.stu;
;