MySQL之——主从复制时主库和备库的数据库名称不一致怎么办?

问题:

在常规的MySQL主从复制架构中,主库和备库的数据库时完全一样的,如果主库和备库的数据库名称不一样怎么办?
比如:主库的数据库名称为binghe_master, 从库的数据库名称为binghe_slave,则按照常规方式配置好主从复制后,要如何处理呢?

解决方案:

在按照常规方式配置好MySQL主从复制之后,我们可以使用CHANGE REPLICATION FILTER语句将主库和从库上的数据库映射为不同的数据库。
首先,我们在MySQL命令行输入如下命令查看CHANGE REPLICATION FILTER语句的帮助信息。

mysql> \h CHANGE REPLICATION FILTER
Name: 'CHANGE REPLICATION FILTER'
Description:
Syntax:
CHANGE REPLICATION FILTER filter[, filter]
        [, ...] [FOR CHANNEL channel]

filter:
    REPLICATE_DO_DB = (db_list)
  | REPLICATE_IGNORE_DB = (db_list)
  | REPLICATE_DO_TABLE = (tbl_list)
  | REPLICATE_IGNORE_TABLE = (tbl_list)
  | REPLICATE_WILD_DO_TABLE = (wild_tbl_list)
  | REPLICATE_WILD_IGNORE_TABLE = (wild_tbl_list)
  | REPLICATE_REWRITE_DB = (db_pair_list)
#################省略部分输出结果信息########################

其中,filter选项中的REPLICATE_REWRITE_DB = (db_pair_list)表示在主从复制过程中,可以将主库和从库的数据库映射为不同的数据库。帮助信息中也给出了使用的示例,在输出的帮助信息中找到如下代码。

CHANGE REPLICATION FILTER
  REPLICATE_REWRITE_DB = ((dbA, dbB), (dbC, dbD));

这就是CHANGE REPLICATION FILTER REPLICATE_REWRITE_DB语句的使用示例,等号后面的参数都是数据库的名称,而且数据库的名称都是以成对的形式出现,每对数据库需要使用小括号括起来,前面的数据库为主库中的数据库名称,后面的数据库为从库中的数据库名称,可以配置多个数据库对。

例如,帮助信息中的使用示例中,dbA为主库中的数据库名称,dbB为从库中的数据库名称,它对应的是主库中的dbA数据库。也可以简单的使用如下方式将主库和从库的数据库对应起来。

主库      从库
dbA ----> dbB
dbC ----> dbD

综上,如果主库的数据库名称为binghe_master, 从库的数据库名称为binghe_slave,则按照常规方式配置好主从复制后,只需要在MySQL命令行执行如下命令即可。

mysql> CHANGE REPLICATION FILTER  REPLICATE_REWRITE_DB = ((binghe_master, binghe_slave));

配置好之后,启动主从复制即可,如下所示

mysql> START SLAVE;
发布了1322 篇原创文章 · 获赞 2046 · 访问量 518万+

猜你喜欢

转载自blog.csdn.net/l1028386804/article/details/104544832