IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> MySQL简要记录 -> 正文阅读

[系统运维]MySQL简要记录

零、前言

默认以5.7最新版本及8.0版本为模板编写,涉及5.7-的内容部分会提及

一、安装

传送门MySQL :: MySQL Community Downloads https://dev.mysql.com/downloads/repo/apt/)

yum源 :https://dev.mysql.com/downloads/repo/yum/

例如:当前rpm文件为 mysql80-community-release-el8-3.noarch.rpm

rpm -ivh mysql80-community-release-el8-3.noarch.rpm

①获取当前可获取mysql版本

yum check-update mysql

②选择包,安装

#过滤mysql8.0包
yum list | grep mysql80
#安装mysql-server
yum install mysql-community-server.x86_64

①启动并设置开机自启

systemctl start mysqld
systemctl enable mysqld

②基本命令

检验状态: mysql status

启/停应用

#停止运行mysql
mysql stop
#启动mysql
mysql start

apt源:https://dev.mysql.com/downloads/repo/apt/

例如:当前deb文件为 mysql-apt-config_0.8.22-1_all.deb

sudo dpkg -i mysql-apt-config_0.8.22-1_all.deb

①获取最新版本讯息

sudo apt update

②安装

sudo apt install mysql-server

①加固mysql

通常用于加强密码安全性,同时可以设置mysql的root密码

sudo mysql_secure_installation

②基本命令:

校验状态:systemctl status mysql

启/停应用:

#####启动应用#######
#1、service 启动
service mysql start
#2、safe_mysqld 启动,官方推荐的启动方式(通常用于调试阶段)
mysqld_safe
亦或:mysqld_safe --defaults-file=my.cnf > mysqld.log 2>&1 &

######关闭应用######
service mysql stop

③设置开机自启

sudo update-rc.d -f mysql defaults

二、偷懒备份脚本

下面英文都是为了装逼,简要来说就是分了三个部分

①备份所有数据结构和数据

②备份所有数据

③备份数据结构

#!/bin/bash
# mysql locate here
# just use the format like example that can be backup the db;
# ./backup.sh demo
# extra param is model :
#1、 default is meaning to backup all struct and data
# eg:    ./backup.sh demo 
#2、 data is meaning to keep the data only
# eg:    ./backup.sh demo data
#3、struct is meaning to keep the struct only
# eg:    ./backup.sh demo struct
excute_db=$1
excute_model=$2
mysql_home=/usr/local/mysql/bin/
base_home=/home/backup/
username=root
password=root
dbadress=localhost
# get current datetime
cur=$(date +%Y%m%d)
# some error maybe occur in working procedure and we can using --skip-lock-tables to fix it
# like: ${mysql_home}/mysqldump -h${dbadress}  -u${username} -p${password}  ${excute_db} --skip-lock-tables > ${base_home}/${cur}/${excute_db}_${cur}.sql




defaultKeep(){
 echo "now is backup all struct and data : ${excute_db}"
 ${mysql_home}/mysqldump -h${dbadress}  -u${username} -p${password}  ${excute_db} > ${base_home}/${cur}/${excute_db}_${cur}.sql
}

customKeep(){
 if [ "$1" = "data" ];then
   echo "backup data only: ${excute_db}"
   ${mysql_home}/mysqldump  -h${dbadress} -u${username} -p${password} -t ${excute_db} > ${base_home}/${cur}/${excute_db}_${cur}_dataOnly.sql
 elif [ "$1" = "struct" ];then
   echo "backup struct only: ${excute_db}"
   ${mysql_home}/mysqldump  --opt -h${dbadress} -u${username} -p${password}  -d ${excute_db} > ${base_home}/${cur}/${excute_db}_${cur}_structOnly.sql
 else 
   defaultKeep
 fi
}


folderCreatedByDate(){

echo -e "current would be created folder is ${cur}, the mysql_home is ${mysql_home}\n"

if [ ! -d "./${cur}" ]; then
  mkdir "./${cur}"
else
  echo "folder ./${cur} has been created" 
fi

}

backupSelector(){
echo -e "\n ready to backup ${excute_db}"
folderCreatedByDate
if [ $2 ];then
 customKeep $2
else
 defaultKeep;
fi
}

if [ $1 ];then
  backupSelector $1 $2
else
  echo -e "\n you can just use the format like example that can be backup the db;
 eg: ./backup.sh demo\n
 extra param is model :
1、 default is meaning to backup all struct and data
 eg:    ./backup.sh demo \n
2、 data is meaning to keep the data only
 eg:    ./backup.sh demo data \n
3、struct is meaning to keep the struct only
 eg:    ./backup.sh demo struct \n"
fi

三、用户授权相关操作

Tips:整体上建议先有库再授权,否则不生效

1、创建用户

整体上创建用户需要注意的部分是是否需要限制访问地址

# 创建用户,不限制访问ip地址
create user 'demo' @'%' identified by "demo_123"
#创建用户,限定ip,例:192.168.110.22
create user 'demo' @'192.168.110.22' identified by "demo_123"

2、授权给用户

1、通常可赋予的权限如下,但是若是猛点,可以直接all

①Alter: 修改已存在的数据表(例如增加/删除列)和索引。
②Create: 建立新的数据库或数据表。
③Delete: 删除表的记录。
④Drop: 删除数据表或数据库。
⑤INDEX: 建立或删除索引。
⑥Insert: 增加表的记录。
⑦Select: 显示/搜索表的记录。
⑧Update: 修改表中已存在的记录。

2、grant 期间也可以限定ip赋予权限

#常用授权用于基于增/删/查/更新即可
grant select,insert,update,delete on *.* to "demo"@"%";

#其实不是很推荐,所有权限all put
grant all on *.* to "demo"@"%";

#刷新权限
flush privileges;
#查看权限,demo为用户名
show grants for demo;

四、其他配置参数

参考讯息:

8.0版本:MySQL :: MySQL 8.0 Reference Manual :: 5.1.8 Server System Variables

5.7版本:MySQL :: MySQL 5.7 Reference Manual :: 5.1.7 Server System Variables

1、Client

针对客户端访问部分内容配置

属性名参考默认值(5.7)参考默认值(8.0)备注
port33063306客户端连接服务器端时使用的端口号
socket/tmp/mysql.sock/tmp/mysql.sock客户端套接字文件所在目录
default-character-setutf8utf8mb4客户端字符集

2、mysqlId

针对mysql应用

①通用配置

属性名参考默认值(5.7)参考默认值(8.0)备注
datadir/var/lib/mysql/var/lib/mysql数据库文件默认地址
basedir若非压缩包,可以忽略
port33063306服务端占用的端口号
server-id设置主从时有用
socket/var/run/mysql/mysql.sock/var/run/mysqld/mysql.sock服务端套接字文件所在目录
skip-external-locking开启开启每个进程若要访问数据表,则必须等待之前的进程完成操作并解除锁定。(仅影响MyISAM,若关闭注释即可)
character-set-servelatin1utf8mb4?服务器默认字符集
default-storage-engineInnoDBInnoDB设置默认的引擎,不表明引擎创库表的默认引擎
thread_stack256KB8.0.27+:1024KB;8.026-:280KB,线程堆栈大小,默认64位,跟着自动配置即可

1、innodb配置

属性名参考默认值(5.7)参考默认值(8.0)备注
innodb_buffer_pool_size128MB128MB缓冲池大小,提高查询效率
innodb_data_home_dir通常与datadir一致通常与datadir一致记得尾部增加斜杠
innodb_data_file_pathibdata1:12M:autoextendibdata1:12M:autoextend定义系统表空间数据文件的名称、大小和属性,格式file_name:file_size[:autoextend[:max:max_file_size]]
innodb_thread_concurrency00定义允许的最大线程数,0为无限制,通常根据并发数对业务影响,以10为单位慢慢调整即可。
innodb_flush_log_at_trx_commit11?默认设置为 1 是完全符合 ACID 所必需的。日志在每次事务提交时写入并刷新到磁盘。? ?如果设置为 0,则每秒将日志写入磁盘并刷新一次。尚未刷新其日志的事务可能会在崩溃中丢失。? ?如果设置为 2,则在每次事务提交后写入日志,并每秒刷新一次到磁盘。尚未刷新其日志的事务可能会在崩溃中丢失。? ?对于设置 0 和 2,不能 100% 保证每秒一次刷新。由于 DDL 更改和其他内部活动导致独立于??innodb_flush_log_at_trx_commit??设置刷新日志,刷新可能会更频繁地发生,有时由于计划问题而降低刷新频率。如果每秒刷新一次日志,则崩溃时最多可能会丢失一秒钟的事务。如果刷新日志的频率高于或低于每秒一次的频率,则可能丢失的事务量会相应地变化。?
innodb_log_buffer_size16MB16MB写入日志的缓冲区大小,根据事务可以酌情减少
innodb_log_file_size48MB48MB推荐值为256MB,理论上崩溃恢复1G约等于3分钟左右,这个值相对合适
innodb_log_files_in_group22以环型方式(circular fashion)写入文件。根据推荐数值 3 较为合适
innodb_log_group_home_dir用于恢复数据的日志文件的路径,可以定义一个适合的位置
innodb_max_dirty_pages_pct7590控制脏页百分比
innodb_lock_wait_timeout5050事务等待获取资源等待的最长时间,单位(秒)

2、主从配置

参考地址: MySQL :: MySQL 8.0 Reference Manual :: 13.4.2.1 CHANGE MASTER TO Statement

属性名参考默认值(5.7)参考默认值(8.0)备注
master-host主机ip
master-user用于连接主机的用户名
master-password用于连接主机的用户名对应密码
master-port用于连接主机的端口号
replicate-do-db指定数据库名
master-connect-retry6060重连时间,单位:秒
slave-net-timeout6060重连等待连接时间,单位:秒
log-slave-updatesOFFOFF?副本服务器从源服务器接收的更新是否应记录到副本自己的二进制日志中
relay-log中继日志路径,同步日志存放地方,eg:/var/mysql/slave/mysql-relay-bin
relay-log-indexrelaylog日志的索引文件,里面记录了所有当前有效的relaylog日志文件列表。eg:/var/mysql/slave/mysql-relay-bin.index
relay-log中继日志路径,同步日志存放地方
??slave_compressed_protocolOFFreplica_compressed_protocol(8.0.26版本后使用这个参数名)使用源/副本连接协议的压缩,1为开启,默认不启用(建议开启)
slave-skip-errorsOFF8.0.26开始,使用replica_skip_errors?出现错误时忽略,以英文逗号分隔
all,所有错误ddl_exist_errors ,ddl的所有错误1007:数据库已存在,创建数据库失败
1008:数据库不存在,删除数据库失败
1050:数据表已存在,创建数据表失败
1051:数据表不存在,删除数据表失败
1054:字段不存在,或程序文件跟数据库有冲突
1060:字段重复,导致无法插入
1061:重复键名
1068:定义了多个主键
1094:位置线程ID
1146:数据表缺失,请恢复数据库
1053:复制过程中主服务器宕机
1062:主键冲突 Duplicate entry

②日志方面配置

属性名参考默认值(5.7)参考默认值(8.0)备注动态
general-log00所有查询日志功能【建议调试时才开】
general_log_file11日志存放地址,依赖于general-log,当其为1时实际生效
skip-external-locking开启开启每个进程若要访问数据表,则必须等待之前的进程完成操作并解除锁定。(仅影响MyISAM,若关闭注释即可)
log-bin通常需要配主从必备,若不配置则不启用,参数内容为存放路径
max_binlog_size1G1G单个日志文件最大容量·
max_relay_log_size00中继日志最大容量,也就是没有超过单个日志时的中继日志容量
sync_binlog11?sync_binlog=0??:禁用 MySQL 服务器将二进制日志同步到磁盘。相反,MySQL服务器依赖于操作系统不时将二进制日志刷新到磁盘,就像它对任何其他文件所做的那样。此设置提供最佳性能,但在发生电源故障或操作系统崩溃时,服务器可能已提交尚未同步到二进制日志的事务。? ?sync_binlog=1??:启用在提交事务之前将二进制日志同步到磁盘。这是最安全的设置,但由于磁盘写入次数增加,可能会对性能产生负面影响。如果发生电源故障或操作系统崩溃,二进制日志中缺少的事务仅处于就绪状态。这允许自动恢复例程回滚事务,从而保证二进制日志中不会丢失任何事务。? ?sync_binlog=?*?N?*?,其中 ?*?N?*? 是 0 或 1 以外的值:收集二进制日志提交组后,二进制日志将同步到磁盘。如果发生电源故障或操作系统崩溃,服务器可能已提交尚未刷新到二进制日志的事务。由于磁盘写入次数增加,此设置可能会对性能产生负面影响。值越高,性能越高,但数据丢失的风险也会增加。?N

③优化配置

属性名参考默认值(5.7)参考默认值(8.0)备注myisam独有
key_buffer_size8M8M只对MyISAM表起作用5.7版本之后默认临时存储INNODB引擎,可以忽略这个参数(32位最大4g,默认8m,官方建议为总内存的25%)
max_allowed_packet4M64M请求包的最大大小以及服务所能处理的最大的请求大小
table_definition_cache400 + (table_open_cache / 2)MIN(400 + table_open_cache / 2, 2000)缓存表数,默认不配置,等其自适应即可
sort_buffer_size256KB256KB每个会话排序所需缓冲区,官方建议在256KB ~ 2M之间,若传输量大则忽略
read_buffer_size128KB128KB查询表的缓存区,通常根据最大数据量分配2M左右即可
read_rnd_buffer_size256KB256KBsort查询后使用的读入缓存,建议与sort_buffer_size一致
myisam_sort_buffer_size8M8M对排序索引操作时分配的缓冲区大小,普通查询也涵盖
thread_cache_size8 + (max_connections / 100)8 + (max_connections / 100)服务器缓存多少个线程以供重用
query_cache_size1M1M查询缓存大小(根据实际情况调整),8.0.3之后版本已经被去除
skip_name_resolve禁用域名解析,默认不开启,建议开启
lower_case_table_names0(unix),1(windows),2(macOs)0(unix),1(windows),2(macOs)表名是否区分大小写,1则忽略大小写
max_connections100100允许的同时客户的数量,默认数值是100,理论上默认500即可满足一般需求
back_log50 + (max_connections / 5)建议参考5.7版本暂时停止回答新请求之前,短时间内可以被存在堆栈中连接数量
open_files_limit50004000可以参考ulimit -n设置,但是设置65536就好

④对应超时相关配置

属性名参考默认值(5.7)参考默认值(8.0)备注
connect_timeout1010连接应用超时时间,建议设置为N分钟
interactive_timeout2880028800交互连接上可以等待行动的秒数,建议酌情设置为数分钟
wait_timeout2880028800等待连接后不操作的秒数,然后断开,建议酌情设置为数分钟
expire_logs_days00?自动删除二进制日志文件的天数。默认值为 0,表示??“??无自动删除”

⑤版本中过期配置

属性名参考默认值(5.7)参考默认值(8.0)备注
query-cache-type5.7.20开始弃用MySQL 8.0中已删除查询缓存类型
query_cache_size1M8.0.3之后版本已经被去除查询缓存大小
slave_compressed_protocolOFFreplica_compressed_protocol(8.0.26版本后使用这个参数名)使用源/副本连接协议的压缩,1为开启,默认不启用(建议开启)
slave-skip-errorsOFF8.0.26开始,使用replica_skip_errors?出现错误时忽略,以英文逗号分隔
all,所有错误ddl_exist_errors ,ddl的所有错误1007:数据库已存在,创建数据库失败
1008:数据库不存在,删除数据库失败
1050:数据表已存在,创建数据表失败
1051:数据表不存在,删除数据表失败
1054:字段不存在,或程序文件跟数据库有冲突
1060:字段重复,导致无法插入
1061:重复键名
1068:定义了多个主键
1094:位置线程ID
1146:数据表缺失,请恢复数据库
1053:复制过程中主服务器宕机
1062:主键冲突 Duplicate entry
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-26 12:16:02  更:2022-04-26 12:18:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 20:06:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码