Mysql复制分成三步:
(1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
(2) slave将master的binary log events拷贝到它的中继日志(relay log);
(1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
(2) slave将master的binary log events拷贝到它的中继日志(relay log);
(3) slave重做中继日志中的事件,将改变反映它自己的数据。
mysql日志一般分为5种
错误日志:-log-err (记录启动,运行,停止mysql时出现的信息)
二进制日志:-log-bin (记录所有更改数据的语句,还用于复制,恢复数据库用)
查询日志:-log (记录建立的客户端连接和执行的语句)
慢查询日志: -log-slow-queries (记录所有执行超过long_query_time秒的所有查询)
更新日志: -log-update (二进制日志已经代替了老的更新日志,更新日志在MySQL 5.1中不再使用)
- START TRANSACTION, COMMIT, and ROLLBACK Syntax 开始事务,提交和回滚语法
- 那些语句提供了控制事务的使用:
- 1.START TRANSACTION 或者BEGIN 开始一个新的事务
- 2.提交当前事务,让改变永久
- 3.回滚 回滚当前事务,取消它的改变
- 4.设置autocommit 关闭或者开启
- 默认情况下, MySQL 运行在autocommit 启用,这意味你 你执行一个语句 更新修改表,
- MySQL 存储更新到磁盘让它永久,改变不能被回滚。
- 禁用自动提交模式隐含的对于一些列的语句,使用 START TRANSACTION statement:
- START TRANSACTION;
- SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
- UPDATE table2 SET summary=@A WHERE type=1;
- COMMIT;
- START TRANSACTION,autocommit 保持disabled 知道你结束事务使用COMMIT或者ROLLBACK.
- 自动提交模式然后恢复到之前的状态
- START TRANSACTION 允许几个修改器控制事务特性,指定多个修饰符,用逗号分开。
- 具有一致性快照修饰符开始一个一致性读 对于存储引擎,这个应用只用于InnoDB.
- 影响是和执行一个 START TRANSACTION 跟着一个SELECT 语句。
- See Section 15.5.2.3, “Consistent Nonlocking Reads”.
- 一致性快照修饰符不会改变当前的事务隔离级别,因此它提供了一致性快照只是当前的事务隔离级别 是允许一个一致性读。
- 唯一一个事务隔离允许一个一致性读 是 REPEATABLE READ.
- 对于其他隔离级别,the WITH CONSISTENT SNAPSHOT clause is ignored
- READ WRITE and READ ONLY modifiers设置事务访问模式。
- 它们允许或者阻止对表的改变 在是物理。
- READ ONLY 限定 阻止事务修改或者锁定事务和非事务表
- MySQL 让额外的优化对于InnoDB表的查询 当事务是只读时。
- 指定 READ ONLY确保 那些优化器是被应用 在只读状态不能被自动确认
- 如果没有指定访问模式,默认模式被应用。除非默认的已经被改变,它是 read/write.
- 它是不允许指定在 READ WRITE and READ ONLY 在相同的语句
- 在只读模式下,它仍旧可能改变使用DML语句创建的TEMPORARY 表
- DDL的改变是不允许的,就像对永久表。
- 重要:
- 很多APIs 用于写MYSQL 客户端应用(比如JDBC)提供它们自己的方法用于开始事务可以代替 START TRANSACTION statement
- 关闭自动提交模式,使用下面的语句:
- SET autocommit=0;
- 在禁用自动提交模式通过设置autocommit variable to zero,
- 改变事务安全表不是立即永久的,你必须使用COMMIT来存储改变到磁盘或者回滚忽略改变。
- autocommit 是一个session变量和必须设置对于每个回话,禁用autocommit 模式对于每个新的连接
- BEGIN and BEGIN WORK 是被支持作为START TRANSACTION 的别名,
- START TRANSACTION 是一个标准SQL语法,是推荐方式开始一个ad-hoc事务,允许修改
- 可选择的WORK 关键字是支持的对于COMMIT 和ROLLBACK ,因为是CHAIN和RELEASE 子句。
- CHAN和RELEASE 可以用于额外的控制事务完成。
- 开始一个事务导致任何挂起的事务被提交
- 开始一个事务也会导致table locks 通过 LOCK TABLES 被释放,就像你执行UNLOCK TABLES一样。
- 开始一个事务不会释放一个全局读锁 通过FLUSH TABLES WITH READ LOCK.获得
- 为了获得最好的结果,事务应该被执行只使用通过一个简单的事务安全的存储引擎的表,否则,下面的问题可能发生