管理

MySQL 组件

数据目录

位置:指定datadir配置项

结构

屏幕截图 2020-09-03 104442

数据库的表示:文件目录

数据表的表示:

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

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

视图与触发器:

状态与日志文件:

屏幕截图 2020-09-03 111412

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

迁移数据目录

迁移之前需要停止服务器

屏幕截图 2020-09-03 112419 屏幕截图 2020-09-03 112433

常规管理

用户系统

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. 控制好权限,制订操作规范,数据更改上线前要做好误删恢复准备