当前位置: 首页 > 科技观察

面试官:如何在MySQL主从复制环境中增加一个新的数据库?

时间:2023-03-23 11:44:39 科技观察

写得比较早今天有读者反映:出去面试,被面试官虐!为什么?因为这位读者采访了一个大厂的研发工程师,比较有技术含量。所以在面试过程中,面试官更倾向于问技术问题。但是,技术终究要为业务服务。仅仅了解技术是不够的,还要将技术应用到项目中。结果最后问了一系列实际的项目问题,其中一个问题是:如何在不重新复制整个库的情况下,在MySQL主从复制环境中添加一个新的数据库?结果。..问题说的很清楚,面试官的问题也比较明确:如何在不重新复制整个数据库的情况下,在MySQL主从复制环境中增加一个新的数据库?首先要理解面试官的意思,不理解题目就不行,开始回答,这样你就回答了无关紧要的问题,面试结果自然就爽了。下面我们先来分析一下这个问题。面试官问如何在MySQL主从复制环境中增加一个新的数据库。注意:这是关于数据库的,而不是MySQL实例。添加数据库和MySQL实例是两种完全不同的方式,所以在回答之前一定要先理解面试官的意思。问题分析MySQL主从复制一般我们会设置需要同步的数据库,使用参数配置选项,binlog-do-db,可以在master上指定需要同步的数据库,replicate-do-db指定需要从数据角度同步的数据库。(一般只需要在master上设置binlog-do-db即可,不需要同时设置,为了以防万一,也可以在slave上加上replicate-ignore-db)。问题解决主从复制的基本步骤首先,我们列出主从复制的基本步骤(首先需要在各自的服务器上配置MySQL主从)。(1)复制数据库mysqldump--master-data--single-transaction-R--databases[db_name]|gzip-9-|pv>all-db-with-master-data.sql.gz注意:innodb使用–单事务,myisam需要使用--lock-all-tables。(2)复制导入数据pvnewdb.sql(3)修改master服务器my.cnf文件在master服务器上,修改my.cnf文件,在binlog-do-db参数中添加新库,重启mysql。(4)查找当前日志文件及位置在导出的newdb.sql中查找当前日志文件及位置(将master改为...),让从服务器执行到该位置。启动slave直到MASTER_LOG_FILE="mysql-bin.000001",MASTER_LOG_POS=1222220;在导出的数据库newdb.sql的顶部搜索MASTER_LOG_FILE和MASTER_LOG_POS。(5)导入新数据库到从服务器mysql