简介
虚拟集群(简称vc)为满足用户镜像集群的要求,提出了镜像表功能,通过对表创建镜像关系,来实现集群间的主备备份。
创建镜像表前提条件
1)两个vc的distribution个数必须相同,最新的distribution上hashmap必须一致;
2)两个vc下必须先创建数据库,再使用镜像操作。
创建镜像表的三种形式
1、对单个表创建镜像关系
语句:alter table [vc1.db.]tablename create mirror to vc2 ;
对应取消镜像关系语句:alter table [vc1.db.]tablename delete mirror;
说明:该语句仅对指定的表创建了镜像关系,该表在两个vc下互为备份;
2、以库为单位批量创建镜像关系(alter database create mirror)
语句:alter database [vc1.]dbanme create mirror to vc2;
对应取消镜像关系语句:alter database [vc1.]dbanme delete mirror ;
说明:1)该操作会将该库下已存在的表、存储过程、create function批量的在镜像vc下进行创建,视图、udf 、udaf、同义词不会创建。后续对存储过程与函数的修改与删除则只当前vc进行操作;
2)若有某些表创建失败,均会在warnings中提示,不影响后面其他表创建,该sql不会报错退出。
3、设置库的默认镜像属性(alter database set default mirror)
语句:alter database [vc1.]dbanme set default mirror=’vc2’;
对应取消镜像关系语句:
alter database [vc1.]dbanme set default mirror=’null’;
alter database [vc1.]dbanme delete mirror ;
说明:1)该操作是将两个库绑定了镜像关系,也就是在绑定镜像关系的库下创建的表均为镜像表;但该操作执行时,库下已存在的表不会被创建镜像关系;
2)设置默认库镜像关系后,在当前集群创建表t1,但镜像集群下已有同名表,此时在当前集群创建的t1成功,但该表为普通表非镜像表。
限制说明
1、镜像相关语句不支持failover,若执行过程中节点异常可能会导致存在残留文件,可以通过再次执行相关语句或加force的方式解决;
2、当vc不可用时,执行创建镜像关系语句报错;
3、dml或查询语句中只涉及一个表,主vc和镜像vc加起来有可用分片使得表可用,即可执行成功;dml或查询语句中涉及多个表,同一个distribution下的所有表均可用,才会执行成功,否则报错;
4、扩容镜像集群时,需要将两个vc创建相同distribution,在一个vc下执行rebalance操作;
5、节点替换时,需要集群层设置参数gcluster_rebalancing_ignore_mirror=1;
6、不支持表级的备份恢复