700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > MySQL之——主从复制时主库和备库的数据库名称不一致怎么办?

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

时间:2019-01-05 13:25:10

相关推荐

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

问题:

在常规的MySQL主从复制架构中,主库和备库的数据库时完全一样的,如果主库和备库的数据库名称不一样怎么办?

比如:主库的数据库名称为binghe_master, 从库的数据库名称为binghe_slave,则按照常规方式配置好主从复制后,要如何处理呢?

解决方案:

在按照常规方式配置好MySQL主从复制之后,我们可以使用CHANGE REPLICATION FILTER语句将主库和从库上的数据库映射为不同的数据库。

首先,我们在MySQL命令行输入如下命令查看CHANGE REPLICATION FILTER语句的帮助信息。

mysql> \h CHANGE REPLICATION FILTERName: '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 FILTERREPLICATE_REWRITE_DB = ((dbA, dbB), (dbC, dbD));

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

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

主库从库dbA ----> dbBdbC ----> dbD

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

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

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

mysql> START SLAVE;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。