您的位置:威尼斯官方网站 > 威尼斯官方网站登录 >   (1) mysql 的恢复是sql语句级的

  (1) mysql 的恢复是sql语句级的

发布时间:2019-11-06 21:42编辑:威尼斯官方网站登录浏览(152)

    1. 回复和复制的内需,对innodb锁机制的震慑

      mysql 通过binlog文件对增加和删除除改等立异数据的sql语句,完成数据库的还原和主从复制。mysql的复原机制(复制其实正是在slave mysql不断做基于binglog的回复)特点有如下:
      (1) mysql 的恢复是sql语句级的,也正是重复推行binlog中的sql语句, oracle数据库则是依靠数据库文件块的。
      (2) mysql 的binlog是依照专门的学业提交的前后相继顺序记录的,复苏也是按这几个顺序实行的。那也与oracle差别,oracle是鲁人持竿系统更新号(SCN)来回复数据的。

    2.  insert into 和create table对于原表也会加分享锁   下边演示原表加锁的事例:

    会话1

    会话2

    SET autocommit=0;

    SELECT * FROM city WHERE CityCode='003'

    city_id      country_id        cityname CityCode

    103  2       杭州         003

    SET autocommit=0;

    SELECT * FROM city WHERE CityCode='003'

    city_id      country_id        cityname CityCode

    103  2       杭州         003

    INSERT INTO  cityNew

    SELECT  * FROM city WHERE CityCode='003'

    共 1 行受到影响

     

     

    UPDATE city SET CityCode='004' WHERE CityCode='003'

    等待超时

    Lock wait timeout exceeded; try restarting transaction

    Commit;

     

     

    Commit;

      下面的事例中,只是简短的读取city表,也就是一个习感到常的select 语句,在这里边innodb给city表加了分享锁,并有应用多版本数据风流倜傥致性才干。原因大概为了保险恢复生机和复制的正确,因为不加锁,上述讲话的实施进程中,别的专门的学问对city表做了翻新操作,或许引致数据复苏结果错误。如须求演示这种能够将系统变量 innodb_locks_unsafe_for_binlog的值设置为"NO"不加分享锁(set innodb_locks_unsafe_for_binlog='on') 私下认可是"OFF" 。假如设置方面包车型地铁值为ON, 也许会使Binlog中著录的sql推行各样不一致等,使用苏醒的结果与实际的应用逻辑不符,假使进展复制,就能够变成基本数据库不均等。
      借使不想设置为ON,又不期待对源表的面世更新发生影响,可以选拔 into outfile 将city表导入到二个txt文件,再利用load data infile 导入到新表。使用这种直接方法不会对源city表加锁。

     

    本文由威尼斯官方网站发布于威尼斯官方网站登录,转载请注明出处:  (1) mysql 的恢复是sql语句级的

    关键词: