mysql优化学习

  • 触发器
  • 简介
  • 四要素
  • 语法
  • 事务
  • 特点
  • 读写分离(主从复制)
  • 实现原理
  • 步骤
  • 配置主从服务器
  • 撤销从服务器


触发器

简介

触发器是一个特殊的存储过程,它是mysql在insert,update,delete的时候自动执行的代码块。
作用是监视某种情况并触发某种操作

四要素
  1. 监视地点(table)
  2. 监视事件 ( insert/update/delete)
  3. 触发时间 (after/ before)
  4. 触发事件 (sql语句)
语法
create trigger trigger_name 
after/before  insert/update/delete on table_name
for each row
begin
//some sql
end

事务

特点
  1. 原子性 :一个事务的所有操作,要么全部完成,要么全部失败
  2. 一致性 : 在事务开始之前和事务结束 之后 ,数据库的完整性没有被破坏。
  3. 隔离性:多个并发事务同时对其数据进行读写和修改的能力
  4. 持久性:事务处理结束后,对数据的修改就是永久的。
    语法:
begin 开始事务
rollback 事务回滚
commit 提交事务

读写分离(主从复制)

实现原理

mysql中有一种日志,叫做bin日志,会记录下所有修改过数据库的sql语句。主从复制的原理实际是多台服务器都开启bin日志,然后主服务器会把执行过的sql语句记录到bin日志中,之后从服务器读取该日志,在从服务器再把bin日志中记录的sql语句同样的执行一遍。这样从服务器上的数据就和主服务器相同了。

步骤
  1. 在主服务器上开启二进制日志,用于记录写操作

my.ini 中 log-bin = mysql-bin
和log-bin日志相关的函数
flush logs 会产生一个新的log-bin日志
reset master 清空所有的log-bin日志,并产生一个新的log-bin日志
show master status 查看最后一个log-bin日志
查看日志可以用 mysqlbinlog --no-defaults 二进制日志的名称(全路径)

  1. 在主服务器创建一个账号,授予该账号读取二进制日志的权限

grant replication slave on . to ‘用户名’@’%’ identified by ‘密码’
grant FILE on . to ‘用户名’@’%’ identified by ‘密码’;

  1. 从服务器使用该账号读取了二进制日志里面的内容,然后把该内容保存到自己的中继日志里面。
  2. 从服务器读取自己中继日志里面的内容,内容是写操作的sql语句,在本地执行一遍,即达到数据一致。
配置主从服务器

配置主服务器
1.开启二进制日志 log-bin=mysql-bin
2.设置一个server-id(作为一个服务器的编号,唯一) 该值不能和从服务器相同 server-id = 1
配置区域在【mysqld】下
3.使用show master status,记录主服务器里面的最新二进制的名称和pos位置
注意:此时,就禁止对主服务器执行增删改的操作,直到从服务器配置成功

配置从服务器
1.开启二进制日志 log-bin=mysql-bin
2.设置一个server-id(作为一个服务器的编号,唯一) 该值不能和主服务器相同 server-id = 2
配置好配置文件后,要重启mysql服务器
3.停止从服务器
stop slave;
4.开始配置
语法:

change master to master_host="主服务器的ip地址", master_user="授权用户的名称",master_password="授权用户的密码", >master_log_file="二进制日志文件的名称", master_log_pos=记录的pos位置;

5.开启从服务器
start slave;
6.查看配置是否成功
show slave status \G
Slave_IO_Running:Yes 此进程负责从服务器从主服务器读取binlog日志
Slave_SQL_Running:Yes .此进程负责读取并执行中继日志中的binlog日志

撤销从服务器

stop slave
reset slave all