当前位置:首页 > 公众号精选 > 架构师社区
[导读]一名读者反馈说:自己出去面试,被面试官一顿虐啊!为什么呢?因为这名读者面试的是某大厂的研发工程师,偏技术型的。所以,在面试过程中,面试官比较偏向于问技术型的问题。不过,技术终归还是要服务于业务的,光会技术可不行,还要将技术应用于项目中才行。结果,最后问了一连串的项目实战问题,其中一个问题就是:如何在不重新复制整个库的情况下,添加新数据库到MySQL主从复制环境?

今天,一名读者反馈说:自己出去面试,被面试官一顿虐啊!为什么呢?因为这名读者面试的是某大厂的研发工程师,偏技术型的。所以,在面试过程中,面试官比较偏向于问技术型的问题。不过,技术终归还是要服务于业务的,光会技术可不行,还要将技术应用于项目中才行。结果,最后问了一连串的项目实战问题,其中一个问题就是:如何在不重新复制整个库的情况下,添加新数据库到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用 –single-transaction, myisam需要用 –lock-all-tables。

(2)复制,导入数据

pv < all-db-with-master-data.sql.gz | zcat | mysql

(3)启动slave数据库

slave start

注意:切换到主的语句已经在导出的sql语句里面了,注意查看下面的代码片段。

change master to master_log_file=’(binlog  name in relay_master_log_file)’, master_log_pos=(exec_master_log_pos  number)

那么,在现有的主从复制结构中,如何增加一个新的数据库进去?我们继续往下看。

添加数据库

比如我们要增加一个数据库在master服务器上,比如,名为newdb的数据库。具体操作如下:

(1)从服务上,停掉slave数据库。

stop slave;

(2)主服务器上,导出新数据库

mysqldump --master-data --single-transaction -R --databases newdb > newdb.sql

(3)修改主服务器my.cnf文件

主服务器上,修改my.cnf文件,添加新库到binlog-do-db参数,重启mysql。

(4)查找当前的日志文件以及位置

在导出的newdb.sql里面查找当前的日志文件以及位置(change master to …)

然后让slave服务器执行到这个位置。

start slave until MASTER_LOG_FILE="mysql-bin.000001", MASTER_LOG_POS=1222220;

其中MASTER_LOG_FILE以及MASTER_LOG_POS在导出的数据库newdb.sql顶部位置查找。

(5)导入新库到从服务器上

mysql < newdb.sql

(6)启动从服务器

start slave


免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

单片机是一种嵌入式系统,它是一块集成电路芯片,内部包含了处理器、存储器和输入输出接口等功能。

关键字: 单片机 编写程序 嵌入式

深圳2024年4月23日 /美通社/ -- 全球AI解决方案与工业级存储领导品牌宜鼎国际 (Innodisk)持续深化边缘AI布局,今(23)日发表全球首创"MIPI over Type-C"独家技术,让旗下嵌入式相机模...

关键字: AI 嵌入式 相机

为增进大家对嵌入式主板的认识,本文将对嵌入式主板以及嵌入式主板常见问题及其解决方法予以介绍。

关键字: 嵌入式 指数 主板

为增进大家对嵌入式系统的认识,本文将对嵌入式系统、嵌入式系统的特点予以介绍。

关键字: 嵌入式 指数 嵌入式系统

为增进大家对嵌入式的认识,本文将对嵌入式、嵌入式工作相关的内容予以介绍。

关键字: 嵌入式 指数 嵌入式技术

机器人操作系统(ROS)驱动程序基于ADI产品而开发,因此可直接在ROS生态系统中使用这些产品。本文将概述如何在应用、产品和系统(例如,自主导航、安全气泡地图和数据收集机器人)中使用和集成这些驱动程序;以及这样将如何有助...

关键字: 电机控制器 机器人 嵌入式

支持高达48V@5A的PD受电模式,达到目前USB PD最高标准。

关键字: 嵌入式 开发板

【2024年4月8日,德国慕尼黑讯】低碳化和数字化是当今时代人们面临的两大核心挑战,人类社会需要依靠创新和先进的技术,才能破除挑战、推动转型进程。在德国纽伦堡举办的2024国际嵌入式展(Embedded World 20...

关键字: 半导体 微控制器 嵌入式

TDK 株式会社(TSE:6762)进一步扩充 Micronas 嵌入式电机控制器系列 HVC 5x,完全集成电机控制器与 HVC-5222D 和 HVC-5422D,以驱动小型有刷(BDC)、无刷(BLDC)或步进电机...

关键字: 嵌入式 电机控制器 内存

嵌入式开发作为信息技术领域的重要分支,在当今智能化社会中的地位日益显著。它不仅在日常生活中的消费电子产品、工业自动化、汽车电子、航空航天等诸多领域发挥着不可或缺的作用,而且随着物联网、大数据、人工智能技术的发展,嵌入式开...

关键字: 嵌入式 信息技术
关闭
关闭