时间:2020-09-29来源:www.pcxitongcheng.com作者:电脑系统城
写在前面
今天,一名读者反馈说:自己出去面试,被面试官一顿虐啊!为什么呢?因为这名读者面试的是某大厂的研发工程师,偏技术型的。所以,在面试过程中,面试官比较偏向于问技术型的问题。不过,技术终归还是要服务于业务的,光会技术可不行,还要将技术应用于项目中才行。结果,最后问了一连串的项目实战问题,其中一个问题就是:如何在不重新复制整个库的情况下,添加新数据库到MySQL主从复制环境?结果。。。
问题阐述
明确问题
面试官的问题比较明确:如何在不重新复制整个库的情况下,添加新数据库到MySQL主从复制环境?
首先,我们要理解面试官的意思,不能在未理解题目的前提下,就开始回答,这样就会答非所问,面试结果自然也就凉凉了。
接下来,我们先来分析下这个问题。面试官问的是 如何添加新数据库到MySQL主从复制环境,注意:这里说的是数据库,而不是MySQL实例。添加数据库和MySQL实例是两种完全不同的方式,所以,一定要先理解面试官的意思,再进行回答。
分析问题
MySQL主从复制一般情况下我们会设置需要同步的数据库,使用参数配置选项,binlog-do-db,可以在master上指定需要同步的数据库,replicate-do-db在从数据看上指定需要同步的数据库。(一般只设定master上的binlog-do-db即可,不需要两个同时设定。以防万一,在slave也可以加上replicate-ignore-db)。
问题解决
主从复制基本步骤
首先,我们列举一下主从复制的基本步骤,(MySQL主从首先需要在各自服务器配置好)。
(1)复制数据库
注意:innodb用 –single-transaction, myisam需要用 –lock-all-tables。
(2)复制,导入数据
(3)启动slave数据库
注意:切换到主的语句已经在导出的sql语句里面了,注意查看下面的代码片段。
那么,在现有的主从复制结构中,如何增加一个新的数据库进去?我们继续往下看。
添加数据库
比如我们要增加一个数据库在master服务器上,比如,名为newdb的数据库。具体操作如下:
(1)从服务上,停掉slave数据库。
(2)主服务器上,导出新数据库
(3)修改主服务器my.cnf文件
主服务器上,修改my.cnf文件,添加新库到binlog-do-db参数,重启mysql。
(4)查找当前的日志文件以及位置
在导出的newdb.sql里面查找当前的日志文件以及位置(change master to …)
然后让slave服务器执行到这个位置。
其中MASTER_LOG_FILE以及MASTER_LOG_POS在导出的数据库newdb.sql顶部位置查找。
(5)导入新库到从服务器上
(6)启动从服务器
2023-03-19
Centos 7.9安装MySQL8.0.32的详细教程2023-03-19
一步步教你利用Mysql存储过程造百万级数据2023-03-19
利用Mysql定时+存储过程创建临时表统计数据的过程问题描述:MYSQL version 5.6.8command 表结构 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 CREATE TABLE command ( ID INT NOT NULL, NAME VARCHAR(16), D...
2023-03-19
一、Galera Cluster 二、基础环境搭建 三、加入配置参数启动集群 四、 测试 五、ProxySql...
2023-03-17