mysql多种连接方式介绍
socket
前提必须创建和授权localhost用户,数据库启动才会生成socket文件
mysql启动的时候会自动生成一个套接字的文件,可以通过本地访问这个文件登录mysql
文件默认在/tmp/mysql.sock 可以在配置文件指定参数 socket=文件路径 来指定文件存放位置
mysql -uroot -p -S/tmp/mysql.sock #mysql 默认去/etc/找mysql.sock 用户也可以在配置文件中[mysql]端指定 socket=文件路径默认启用
如何确认用户是socket登录还是TCP/IP方式 show processlist; host列可以看到用户是什么方式登录
TCP/IP
前提是必须创建和授权远程网段登录用户
mysql -utest -p123456 -h10.0.0.51 -P3306
-h指定主机
-P指定端口 单独指定没有意义 需要指定 -h主机
mysql基于ssl安全链接
查看安全链接功能是否开启
show variables like '%ssl%';
have_openssl YES
have_ssl YES
mysql_ssl_rsa_setup 通过命令去生成
在数据目录下会有目录下生成以下.pem文件:
ca.pem #自签的CA证书,客户端连接也需要提供
client-cert.pem #客户端连接服务器端需要提供的证书文件
client-key.pem #客户端连接服务器端需要提供的私钥文件
private_key.pem #私钥/公钥对的私有成员
public_key.pem #私钥/公钥对的共有成员
server-cert.pem #服务器端证书文件
server-key.pem #服务器端私钥文件
测试链接,
mysql -ujialiye -p123 -h10.0.0.51 --ssl-cert=/data/mysql/data_3306/client-cert.pem --ssl-key=/data/mysql/data_3306/client-key.pem
mysql配置文件
mysql配置文件启动顺序
mysqld --help --verbose |grep my.cnf
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
my.cnf, $MYSQL_TCP_PORT, /etc/services, built-in default
配置文件读取顺序 默认从/ect/my.cnf往后读取 有重复的配置文件相加关系 配置文件如果相同的话以最后一个配置为准
如果启动多实例可以添加 --defaults-file=配置文件路径 去单独指定启动配置文件
配置文件说明
[mysqld] 标签项 mysqld运行的时候会读取这个标签下的参数
[mysql] 标签项 mysql命令运行会读取标签下的参数
[mysqld_safe] 标签项 mysql安全启动是调用的参数
[sever] 标签项 会覆盖所有server端运行是的参数 mysqld, mysqld_safe 都会调用里面的参数
[client] 标签项 会覆盖所有客户端程序 mysql,mysqldump
mysql启动关闭流程
启动
在mysql目录下有个support-files目录 下面有个mysql.server文件 可以用这个文件
后面加 start stop restart 或者加入到systemd管理 脚本调用关系
mysql.server----> bin/mysqld_safe----->bin/mysqld
每一种方法都可以启动数据库
mysqld & 启动可以加参数 会把日志打印到屏幕上除非配置文件指定启动没有关闭功能 调试的时候会用
mysqld_safe & 启动可以加参数 记录日志文件,会自动监控mysqld程序的状态,出现问题会自动重启
systemd 启动 不可以加参数
关闭
进入数据库内部
shutdown
在外面用
mysqlamin -uroot -p123 -S/tmp/mysql.sock shutdown
系统管理
systemd stop
ps在8.0更新可以在mysql中restart
mysql多实例
多实例说明 :
共享服务器资源,启动多个实例
一般用于分布式架构,选用比较常用的一种结构
其他的节点可能会用于别的副本
预算比较少的情况下可以以3台服务器做9个实例,3主6副本的
还可以在一台机器安装不同版本mysql用于模拟,升级,测试 调试等一系列功能
多版本安装说明
不同的配置文件指定
数据目录不同, 端口不同 socket文件不同
创建不同的数据目录 授权mysql用户权限
mkdir /data/mysql/data_3307
创建配置文件
vim /data/mysql/my.cnf
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql/data_3307
socket=/tmp/mysql3307.sock
log_error=/data/mysql/data_3307/error.log
default_authentication_plugin=mysql_native_password
server_id=7
log_bin=/data/mysql/binlog_3307
port=3307
初始化
mysqld --defaults-file=/data/mysql/my.cnf --initialize-insecure
启动数据库
mysqld_safe --defaults-file=/data/mysql/my.cnf
mysql工具日志说明
error log mysql启动到关闭整个生命周期,除了报错,还会提供警告,信息等一系列信息
genernal log 普通日志 会把整个数据库操作类的都会记录下来
bin log 二进制日志 1数据恢复 2做主从
slow log 慢日志 记录慢查询语句
error log 默认打开的
什么问题可以看错误日志呢 启动故障 , 主从故障 , 死锁 , 数据库夯住了,
默认在数据目录下有个hostname.err
控制参数
log_error=/错误日志位置 最好初始化之前设定好
日志文件最好和数据文件分开
如何查看全部关于日志的参数
show variables like '%log_error%';
show variables 可以查看全部参数
log_error_verbosity=3 #这个参数可以记录日志级别
如何在线调整 set global log_error_verbosity=3
binlog
作用数据恢复
复制
记录着mysql发生的变更类(增删改)类的操作都会记录binlog
8.0默认开始binlog 默认在数据目录下
server_id=一个大于0的数字 5.7之后强制
log_bin=路径/文件名前缀
slowlog 慢日志 记录数据库运行期间, 执行较慢的sql
配置参数 slow_query_log=on 是否开启慢日志
long_query_time= 基于时间去抓执行较慢的sql慢查询的时间 默认是秒
slow_query_log_file=路径 慢日志存放的路径
log_queries_not_using_indexe=1 记录不走索引的查询
log_throttle_queries_not_using_indexes=1000; 只记录就近的1000条不走索引的
慢日志也会记录锁信息
general_log 普通日志 文本格式 记录mysql运行期间所有操作语句
可以做问题诊断和调试
参数
general_log= 开关
general_log_file= 日志存放位置和名字
mysql升级流程
升级风险 升级完成起不来 , 应用连不上 ,数据库没问题,应用不匹配 要做很多测试
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。