问:如何为指定的数据库实例部署只读副本?
使用标准的 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)。
在请求创建读取副本时,还需要考虑下面一些事项:
更多参考:
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