数据库服务体系结构

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. 在数据库服务运行中,可以存在多实例运行的概念,什么是数据库服务的多实例呢?

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

  1. 多实例的作用?

充分利用硬件资源

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;
相关推荐
parafeeee2 小时前
程序人生-Hello’s P2P
数据库·后端·asp.net
欲买桂花同载酒5822 小时前
程序人生-Hello’s P2P
运维·服务器·数据库
iPadiPhone2 小时前
流量洪峰下的数据守护者:InnoDB MVCC 全实现深度解析
java·数据库·mysql·面试
NineData2 小时前
AI时代的数据对比:DBA还需要盯着屏幕看差异吗?
运维·数据库
Javatutouhouduan2 小时前
SpringBoot整合reids:JSON序列化文件夹操作实录
java·数据库·redis·html·springboot·java编程·java程序员
QWQ___qwq3 小时前
Spring Security + MyBatis-Plus 实现自定义数据库用户认证
数据库·spring·mybatis
Filotimo_4 小时前
Java后端开发标准流程:从数据库到接口的完整实现
数据库·oracle
泯仲4 小时前
从零起步学习MySQL 第一章:初识MySQL及深入理解内部数据类型
数据库·mysql
有想法的py工程师4 小时前
PostgreSQL 触发器性能评估实战(pg_stat_user_functions)
数据库·postgresql
御坂10101号4 小时前
「2>&1」是什么意思?半个世纪的 Unix 谜题
java·数据库·bash·unix