IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    FLUSH TABLES WITH READ LOCK 和 LOCK TABLES 解决AWS创建MYIAS引擎的只读副本问题

    admin发表于 2015-08-06 14:05:00
    love 0

    问:如何为指定的数据库实例部署只读副本?

    使用标准的 CreateDBInstanceReadReplica API 或在 Amazon RDS 管理控制台中单击几下鼠标即可很快创建一个只读副本。创建只读副本后,可以通过指定 SourceDBInstanceIdentifier 将其标识为只读副本。SourceDBInstanceIdentifier 是您要复制的“源”数据库实例的数据库实例标示符。同标准数据库实例一样,您也可以指定可用区域、数据库实例等级和首选维护窗口。只读副本的引擎版本(例如,PostgreSQL 9.3.5)和存储分配均继承自源数据库实例。启动创建只读副本时,Amazon RDS 将对源数据库实例拍摄快照,并开始复制。因此,在拍摄快照时,您的源数据库实例上的 I/O 可能会短暂性停止。通常,I/O 暂停会按顺序持续一分钟时间;如果源数据库实例为多可用区域部署模式,则可以避免这种状况(对于多可用区域部署,从备用副本拍摄快照)。此外,Amazon RDS 当前正在进行优化(很快即将发布),因此如果您在 30 分钟的窗口内创建多个读取副本,所有副本都将使用相同的源快照以降低 I/O 影响(每个读取副本将在创建后开始“追踪”复制)。

    删除 Amazon RDS 读取副本同创建一样简单;只需使用 Amazon RDS 管理控制台或调用 DeleteDBInstance API 即可(为您要删除的读取副本指定 DBInstanceIdentifier)。

    在请求创建读取副本时,还需要考虑下面一些事项:

    • 如果您使用的是非事务性引擎(如 MyISAM),需要执行下列步骤来成功设置读取副本。执行这些步骤,是为了确保读取副本包含一致的数据副本。请注意,如果您的所有表使用的都是事务性引擎(如 InnoDB),则无需执行这些步骤。1. 停止非事务性表中的所有 DML 和 DDL 操作,等待它们完成操作。SELECT 语句可以继续运行。2. 刷新和锁定这些表。3. 使用 CreateDBInstanceReadReplica API 创建只读副本。4. 使用 DescribeDBInstances API 检查副本的创建进度。当副本可用后,对表解锁并恢复正常的数据库操作。
    • 如果源 RDS 实例中有任何运行时间较长的事务,请等待它们完成,再请求从该源创建读取副本。

    更多参考:

    http://aws.amazon.com/cn/rds/faqs/#read-replicas

    http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/Appendix.MySQL.Options.html

    1. 这个时候就要用到flush tables with read lock 这个命令:

    FLUSH TABLES WITH READ LOCK

    这个命令是全局读锁定,执行了命令之后所有库所有表都被锁定只读。一般都是用在数据库联机备份,这个时候数据库的写操作将被阻塞,读操作顺利进行。

    解锁的语句也是:

    unlock tables

    2.表级别锁命令:

    LOCK TABLES tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}

    这个命令是表级别的锁定,可以定制锁定某一个表。例如: lock  tables test read; 不影响其他表的写操作。

    解锁的语句也是:

    unlock tables

    这两个语句在执行的时候都需要注意个特点,就是 隐式提交的语句。在退出mysql终端的时候都会隐式的执行unlock tables。也就是如果要让表锁定生效就必须一直保持对话。

    P.S.  MYSQL的read lock和wirte lock

    read-lock #允许其他并发的读请求,但阻塞写请求,即可以同时读,但不允许任何写,也叫共享锁

    write-lock #不允许其他并发的读和写请求,是排他的(exclusive),也叫独占锁

    原文:http://blog.csdn.net/shootyou/archive/2010/11/22/6026735.aspx



沪ICP备19023445号-2号
友情链接