mysql相关知识点

本文详细介绍了MySQL的各种操作,包括范围查询、表空间和索引管理、执行时间长的SQL查询检测、连接IP统计、SQL解释、参数设置、密码重置、备份还原、binlog配置、主从同步、锁表解锁、表结构修改以及不常用的federated引擎。
摘要由CSDN通过智能技术生成

mysql

sql相关

  • mysql按照某个范围查询
    select count(*) from {表} where request_time BETWEEN ‘2023-11-03 00:00:00’ and ‘2023-11-10 00:00:00’;

排查问题相关

  • 查所有库下 mysql 表空间 和 索引大小
select table_schema as '数据库',  table_name as '表名',  table_rows as '记录数',  truncate(data_length/1024/1024, 2) as '数据容量(MB)',  truncate(index_length/1024/1024, 2) as '索引容量(MB)'  from information_schema.tables order by data_length desc, index_length desc;

在这里插入图片描述

  • 查询当前执行时间长的sql (前10个)
select * from performance_schema.processlist order by TIME desc limit 10;

在这里插入图片描述

  • 统计连接IP
select SUBSTRING_INDEX(host,':',1) as ip, count(*) from performance_schema.processlist group by ip;

在这里插入图片描述

  • 查看执行sql 是否使用 索引 扫描行数等
explain {select SQL}

在这里插入图片描述

参数相关

  • 常用参数
show status;    # mysql 统计信息
show variables; # mysql 参数信息

#查看是否开启binlog
show global variables like 'log_bin';

# 查看最大连接数
show variables like '%max_connect%';

# 查看当前连接数
show status like 'Threads_connected';

# 查看当前运行线程数
show status like 'Threads_Running';

# 查看慢查询参数
show variables like '%query%';

# 查看从库状态
show slave status

# 修改参数
# 修改慢查询时长
set long_query_time=8;
# 部分参数不能在mysql中修改需要 手动在 my.cnf 中添加参数 重启

常用方法

  • mysql 8.0 以后重置 修改用户密码
# 1. 置空密码
update mysql.user set authentication_string='' where user='root';
# 2. 修改密码
alter user 'root'@'localhost' identified by 'greedisgood.1'
alter user 'root'@'%' identified by 'greedisgood.1'
# 3. 刷新
FLUSH PRIVILEGES;
  • mysql 备份 & 还原
# 备份 所有库
mysqldump -u{用户名} -p{密码}  --all-databases  > /root/db_back/all.sql
# 还原
mysql -u{用户名} -p{密码} < /root/db_back/all.sql
# 备份单表 (不包含索引) 
create table {备份表名} as select * from {需备份表名};  
# 复制空表
create table {备份表名} like {需要备份的表名};
# 备份表 (包含索引)
mysqldump -u{用户名} -p{密码} {数据库名} {表名} > {备份文件}.sql
  • mysql 开启binlog
show variables like '%log_bin%';    # 查看是否开启binlog
show binary logs;   # 查看binlog 文件

# mysql binlog
# 编辑 my.cnf
log_bin = NO        # 开启binlog
binlog_format = ROW # binlog记录内容的方式,记录被操作的每一行
log_bin_basename = /var/lib/mysql/binlog    # binlog位置
log_bin_index = /var/lib/mysql/binlog.index # binlog索引文件
max_binlog_size=200M    # 每个binlog 最大大小
# 重启mysql
systemctl restart mysql
  • mysql binlog 回放
mysqlbinlog /var/lib/mysql/binlog/mysql-bin.000001 > /root/sql/mysql-bin.000001.sql
  • mysql 主从搭建
# 1. 检查主备mysql server-id 是否一致
cat /etc/my.cnf
[mysqld] 
server-id=1    # 两台服务器 server-id需要不一致 **
# 2. 查看当前主备信息 没有配置 没有显示信息
show slave status;
# 3. 登陆**主库**创建备份用户
CREATE USER 'repl'@'%' IDENTIFIED WITH mysql_native_password BY 'yourpasswd';
# 对创建用户进行 slave角色 授权  
GRANT REPLICATION slave on *.* to 'repl'@'%';
# 查看授权
show grants for 'repl'@'%';
# 刷新权限
flush privileges;
# 4. 获取主节点当前binary log文件名和位置
SHOW MASTER STATUS;
	# logfile= mysql-bin.000001
	# logois=328
# 5.登陆**备库**执行备份
# 停止同步
stop slave;
# 重置同步信息
reset slave;
# 创建同步任务  注意 MASTER_LOG_FILE 和 MASTER_LOG_POS 需要替换为 主库执行 SHOW MASTER STATUS; 显示的内容
CHANGE MASTER TO MASTER_HOST='10.0.0.15' , MASTER_PORT=3306 , MASTER_USER='repl' , MASTER_PASSWORD='youpasswd' , MASTER_LOG_FILE='mysql-bin.000001' , MASTER_LOG_POS=328;
# 开始同步
start slave;

# 查看备份状态
show slave status\G;

不常用操作

  • 锁表解锁表
# 读锁定
LOCK TABLES tbl_name READ
# 写锁定
LOCK TABLES tbl_name WRITE
# 查询锁表
show OPEN TABLES where In_use > 0;
# 解锁
UNLOCK TABLES;
  • 改变表结构
# 改变表 允许输入字段
ALTER TABLE {表名称} MODIFY id VARCHAR(64);
# 改变表 列名称
ALTER TABLE {表名称} RENAME COLUMN {列名} {改后列名}
查询相关

特性相关

  • mysql federated引擎
    代替数据同步方案 实现表级同步

  • 说明:在创建表A时 输入 engine=federated connection=‘mysql://用户名:密码@mysql地址:端口号/数据库/数据表B’
    在创建完表后在刚才输入的库中建立相同表结构的表
    后续在向表A 插入数据的同时 A表所在mysql会向B表mysql 对应表写入此数据

  • 创表语句

    create table `employee33` 
    (`employee_id` int(11) default null,`department_id` int(11) default null ) 
    engine=federated connection='mysql://root:passwd.1@10.0.0.15:3308/testdb/employee33';
    

但是如果mysql 断连A表无法查询

select * from employee33
  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值