管理

MySQL 组件

数据目录

位置:指定datadir配置项

结构

graph TD    客户1 -->|Unix 域套接字| MySQL服务器    客户2 -->|TCP/IP端口| MySQL服务器    客户3 -->|命名管道| MySQL服务器    MySQL服务器 --> 数据目录    数据目录 --> 数据库1    数据目录 --> 数据库2    数据目录 --> 数据库n    数据库1 --> 表11    数据库1 --> 表12    数据库1 --> 表13    数据库2 --> 表21    数据库2 --> 表22    数据库2 --> 表23    数据库n --> 表31    数据库n --> 表32    数据库n --> 表33

数据库的表示:文件目录

数据表的表示:

lower_case_table_name环境变量设置为1 MySQL 在操作表时 会将表名自动转换为小写字母

影响表最大长度的因素:操作系统文件大小 存储引擎内部限制

视图与触发器:

状态与日志文件:

文件类型默认名文件内容
进程ID文件HOSTNAME.pid服务器进程ID
错误日志HOSTNAME.err启动/关闭事件和错误条件
一般查询日志HOSTNAME.log连接/断开事件和查询信息
二进制日志HOSTNAME-bin.nnnnnn修改数据的语句的二进制表示
二进制日志索引HOSINAME-bin.index当前二进制日志文件名的列表
中继日志HOSTNAME-relay-bin.nnnnnn从服务器自主服务器接收到的数据修改信息
中继日志索引HOSTNAME-relay-bin.index当前中继日志文件名的列表
主服务器信息文件master.info用于连接主服务器的参数
中继信息文件relay-log.info中继日志处理的状态
慢查询日志HOSTNAME-slow.log处理起来比较耗时的语句文本

进程PID文件:写入进程PID 其他应用可以读取mysql的进程ID 从而进行一些操作

迁移数据目录

迁移之前需要停止服务器

迁移实体适用的迁移方法
整个数据目录启动选项或符号链接
各个数据库目录符号链接
各个数据库表符号链接
InnoDB表空间文件启动选项
服务器PID文件启动选项
日志文件启动选项

常规管理

用户系统

SELECT Host, User,authentication_string,plugin FROM mysql.user; -- 查看用户信息SET PASSWORD FOR root = 'root'; -- 修改密码

启动与运行

mysqladmin -p -u root shutdown # 关闭

设置系统变量

# my.ini[mysqld]max_connection=200 # 下划线跟-可以互换innodb_buffer_pool_size=16M # 单位不填默认为字节

插件

# my.ini[mysqld]plugin-load=xxx,xxx

引擎

SELECT ENGINE, SUPPORT FROM INFORMATION_SCHEMA.ENGINES; -- 查看引擎

配置默认引擎:default_storage_engine 参数

访问控制与安全

维护 备份 复制

恢复数据比较安全的做法,是恢复出一个备份,或者找一个从库作为临时库,在这个临时库上执行这些操作,然后再将确认过的临时库的数据,恢复回主库

对于误删行:确保 binlog_format=row 和 binlog_row_image=FULL,这样可以通过 binlog 进行反向重放

对于误删表或者库:要求线上有定期的全量备份和实时备份binlog。 1. 取最近一次的全量备份恢复出一个临时库。 2. 取binlog日志中固定时间点之后的日志。 3. 把这些日志除了误删数据的语句外,全部应用到临时库

事前预防:

  1. 上线前,必须经过 SQL 审计
  2. sql_safe_updates 参数设置为 on。这样一来,如果我们忘记在 delete 或者 update 语句中写 where 条件,或者 where 条件里面没有包含索引字段的话,这条语句的执行就会报错
  3. 搭建延迟复制的备库:固定设置备库延迟复制主库,这样给数据误删找回预留时间
  4. 控制好权限,制订操作规范,数据更改上线前要做好误删恢复准备