MySQL树形复制—BLACKHOLE存储引擎的使用

20113

修订记录

版本

修订内容

修订人

审核

修改日期

V0.1

创建

谭志军

目录

1 序言 2

1.1 背景 2

1.2 特性 2

2 MySQL同步复制拓扑图 2

3 BlackHole配置 2

4 上线部署 3

4.1 环境 3

4.2 部署步骤 3

5 紧急故障处理 3

5.1 BlackHole机器不可用 3

序言

1.1 背景

随着公司发展,网站流量越来越大,数据库机器也越来越多。机器的增长基本在从库上;就主站而言,当前有18台从库,每台从库都会在主库上创建一个同步线程。随着机器的增多,同步給主库带来的压力也越大。避免給单台主库造成的压力过大,在现有的主从库之间添加多台代理服务器,应用BLACKHOLE引擎数据不写磁盘的特性,分担主库的同步。

1.2 特性

BLACKHOLE存储引擎MySQL数据库特有的存储引擎,就像“黑洞”一样,它接收数据但不存储数据。取回总是返回空集。当创建一个BLACKHOLE表的时候,服务器在数据库目录创建一个表定义文件。文件用表的名字开头,并且有一个.frm扩展名。没有其它文件关联到这个表。

MySQL同步复制拓扑图

  

     

  

BlackHole配置

1. 编译:需带上 --without-plugin-blackhole 选项来支持BLKCKHOLE引擎。

2. BLACKHOLE机器特殊配置参数:

设置BLACKHOLE为默认存储引擎:

default_table_type = BLACKHOLE 

开启中间层从库写binlog,及本地binlog

log-slave-update    = 1

log-bin               = ms-mysql-bin

跳过innodb支持,当建表语句带有engine=innodb时,在中间层自动使用默认引擎BLACKHOLE

skip-innodb

上线部署

4.1 环境

Master à Slave1

Master à BlackHole à Slave1

4.2 部署步骤

1. Slave1停止与Master的同步,记下同步点。

2. Dump表结构导入Blackhole,并在Blackhole上将表引擎全更改为BLACKHOLE

3. BLackHole执行 change master 成为Master的从库节点,master_log_file master_log_pos Slave1停止同步时的值。

4. Slave1 执行change master 成为BlackHole的从库节点。

5. 启动BlackHoleSlave1的同步。 

注:步骤不可变更。

紧急故障处理

5.1 BlackHole机器不可用

1. 确认BlackHole下层Slave复制停止在同一个同步点;若有同步点不一致的机器暂时剔除,需从同层Slave重导数据[这种情况出现的几率很小]

2. 读取BlackHole data目录下 master.info 文件,在新的BlackHole实例上执行change master成为Master从库节点,同步信息取master.info 值。

3. 下层Slavechange master 成为新BlackHole实例的从库节点。

4. 启动BlackHole 及下层Slave的同步。