Mysql 如何进行主从库切换(计划内)

计划内的主从库进行切换比较简单,步骤如下

1. 停止向老主库写入

2. 让备库追赶上主库的数据(可选的,会简化下面的步骤)

3. 将一台从库提升为主库

4. 将备库和写操作指向新的主库,然后开启主从写入

但这其中还隐藏着许多细节,一些场景可能依赖于复制的拓扑结构,例如 主-主结构和主-备结构的配置有所不同

我们更深入一点,下面是大多数需要的步骤

我们的环境 是简单的主从结构,主库 端口为3306 从库端口为3307 , 用于演示的测试环境在一台机器上搭建(生产上 主从必须要两个服务器)

1. 停止当前主库所有的写入操作,如果可以最好将客户端程序关闭(除了复制连接)

2. 通过flush tables with read lock 在主库上停止所有活跃的写入,这一步是可选的,也可以在主库上设置 read_only 选项(如果从库之前是设置的 read,那么这里可以将主库直接设置为read_only),从这一时刻开始,将禁止向被替换的主库做任何写入操作,因为它一旦不是主库,则写入即意味着数据丢失,为了更好的保证这一点,可以kill 所有打开的事务,这将会真正结束所有的写入操作。

flush tables with read lock;

set global read_only=1;

show variables like '%read_only%'

修改配置文件中 read_only

3. 选择一个备库作为新的主库,并确保它已经完全跟上主库(例如 让它执行完所有从主库获取的中继日志)

在从库3307上查询slave 状态

show slave status;

在主库3306上看自己master状态

show master status;

4. 确保主库和从库数据一致的(可选)

我们可以找几个表进行测试,或者使用 pt-table-checksum 进行测试,这里是可选的,一般不会出现问题

5. 在新主库(3307)上执行stop slave

stop slave;

show slave status;

6. 在新主库上(3307)执行 rest slave all,使其断开于老主库的连接,并丢弃master.info里面的记录信息(如果连接信息记录在my.cnf里,会无法正确工作),这里我们不建议将该信息放到my.cnf中去

reset slave all;

show slave status;

7. 在新主库上 show master status 记录新主库的二进制日志信息

show master status;

8. 老主库(3306)上创建 复制 并指向新主库3307,并解锁第二步中的 lock,如果老主库不用了,则忽略这步,将其他从库的主库指向新主库

change master to master_host='10.106.216.182',

master_user='repl',

master_port=3307,

master_password='123456',

master_log_file='mysql3307-bin.000001',

master_log_pos=399110;

start slave;

unlock tables;(一定记得要解锁,要不后续同步数据 过不来)

show slave status;

9. 将新主库(3307) 的read_only 去掉(可选,如果之前有设置read_only的话)

set global read_only=0;

show variables like '%read_only%'

配置文件中 read_only 也要删除掉

10. 在新主库上 创建一个表 并插入数据,进行测试

create table test.mytest(id int );

insert into test.mytest(id) values(1)

从库上查询

select * from test.mytest;

11. 重启各个数据库,查看是否正常启动 并在主库删除该表,从库跟着也删除则整个流程完成

drop table test.mytest;

主从切换_Mysql 复制如何进行主从库切换(计划内)相关推荐

  1. php解决mysql主从同步_Mysql读写分离,主从同步实现

    随着用户量的增多,数据库操作往往会成为一个系统的瓶颈所在,因此我们可以通过实现数据库的读写分离来提高系统的性能. 通过设置主从数据库实现读写分离,主库负责"写"操作,从库负责&qu ...

  2. mysql 主主切换_mysql 主-主配置中进行切换

    主从切换是高可用MySQL架构的必要步骤(即使用不发生,也要有备无患).一般设置为双M(M1.M2),假设当前状态为写M1,而M2只读,切换的大致流程如下: 1.  停止应用写M1,将M1设置为只读 ...

  3. postgresql主从备份_基于PG12.2实现主从异步流复制及主从切换教程(下)

    概述 今天主要介绍如何搭建PG主从流复制及主从切换,仅供参考. PS:上篇的地址在文末链接. PostgreSQL数据库主从异步流复制搭建 环境说明: 1.安装PG数据库(主从库进行) 用脚本进行,略 ...

  4. angular8 获取文件流_基于PG12.2实现主从异步流复制及主从切换教程(上)

    概述 今天主要分享一下PG主从异步流复制搭建相关的一些理论内容,仅供参考. 一.PostgreSQL通过WAL日志构建高可靠性原理 PostgrepSQL在数据目录的子目录pg_xlog子目录中维护了 ...

  5. postgresql主从备份_PostgreSQL主从流复制与手动主备切换架构

    导读 使用PostgreSQL 11.3 创建两个节点:node1 和 node2: 配置主从流复制,然后做手动切换(failover).为了配置过程简单,两个节点在同一台物理机器上. 首先建立主从同 ...

  6. mysql主从双向同步复制

    2019独角兽企业重金招聘Python工程师标准>>> Mysql 主从双向同步复制 MySQL支持单向.异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务 ...

  7. mysql主从 单点_MySQL主从复制虽好,能完美解决数据库单点问题吗?

    一.单个数据库 服务器 的缺点 数据库服务器存在单点问题: 数据库服务器资源无法满足增长的读写请求: 高峰时数据库连接数经常超过上限. 二.如何解决单点问题 增加额外的数据库服务器,组建数据库集群: ...

  8. mysql 主从 问题_Mysql主从复制的问题与解决

    主从复制的原理 主库将变更的操作写入bin-log日志中(增,删,改操作). 从库中的I/O线程将主库的bin-log拷贝到本地,写入relay-log(中继日志中) 从库的SQL线程从中继日志中读取 ...

  9. Redis主从配置及通过Keepalived实现Redis自动切换高可用

    Redis主从配置及通过Keepalived实现Redis自动切换高可用 [日期:2014-07-23] 来源:Linux社区  作者:fuquanjun [字体:大 中 小] 一:环境介绍: Mas ...

最新文章

  1. “兼职开发的程序员,为什么不受企业待见?”
  2. python400集视频教程 百度云-Python自动化测试视频教程【百度云盘下载】
  3. nginx+php-fpm 的配置下,php的错误日志
  4. linux 关于减号 - 代替stdin 和stdout 的用法
  5. object C 数据类型
  6. py2exe打包OpenCV,找不到libiomp5md.dll
  7. 从硬盘上把数据传回到计算机称为什么,计算机基础知识 第一章 习题三
  8. 数据中台对企业意义和作用有哪些
  9. matlab 流星雨,dijkstra算法及其matlab实现
  10. 4.2 优化数据访问
  11. poj2976(二分搜索,最大化平均值)
  12. 博物馆施工组织设计方案
  13. 寻找春天nbsp;九宫格日记-2011.09.20
  14. linux获取脚本文件路径
  15. MAC电脑触摸板手势(提高办公效率)
  16. MCAL配置-Cdd_Ipc
  17. C语言多人对战贪吃蛇,双人对战贪吃蛇
  18. 当了两天向导,带他进行了上海都市游885
  19. Cabbage语言代码示例
  20. 积分商城系统业务逻辑思维导图_怎么开发积分商城系统_OctShop

热门文章

  1. /usr/bin/python^M: bad interpreter: No such file or directory
  2. 实时体积云渲染(地平线):二.Perlin噪声和Worley噪声
  3. mie散射理论方程_Mie氏散射理论的实验研究
  4. 所有的shadow map的名称
  5. java 多线程基础, 我觉得还是有必要看看的
  6. Pandas使用DataFrame进行数据分析比赛进阶之路(一)
  7. 一种简单好用的Vue表单验证
  8. 公众号的秘密,知道一个biz就够了
  9. html里,实现图片与文字对齐的最简洁方法
  10. 一拍是多少秒 计算机制音乐,E哥谈如何计算音乐的拍数及每拍时值是多少及数学好对学音乐有帮助吗?...