Mysql 开启主从复制实战笔记

【MySQL】主从复制 MySQL是一款关系型数据库,被广泛应用于各种互联网应用中。随着业务的不断扩大,数据量不断增加,如何让MySQL具有更好的可用性和容灾能力成为了越来越重要的问题。本文将重点介绍MySQL主从复制和高可用性的实现,旨在为MySQL的使用者提供指导和帮助。本篇博客介绍了MySQL高可用性的常见解决方案,包括负载均衡、主从复制、主主复制以及结合MHA和Galera Cluster的整合方案。高可用性对于数据库系统至关重要,它可以确保用户的请求始终得以满足,并且降低系统停机时间的风险。 阅读详情

一、背景介绍
     
由于目前系统测试环境数据库部署在公司虚机上,已经部署使用一段时间了,由于虚机存在宕机数据丢失的风险,于是准备开启数据库主从复制备份机制,防止虚机宕机造成损失。

二、操作步骤
     1)数据迁移
        由于测试环境数据库已经使用一段时间了,所以需要将现有数据库结构和数据迁移到从机器数据库中,可以使用以下两种方式同步:
方法一:


use my_data; //使用当前数据库
lock tables; //锁住数据库所有表(可选)
//导出数据库 schema sql
mysqldump -uroot -p  -h127.0.0.1 -P3306 my_data >my_data.sql
//同时导出多个数据
mysqldump -uroot -p -h127.0.0.1 -P3306 --databases my_data1 my_data2 > my_data.sql
unlock tables; //解锁数据库所有表

  接下来可以将my_data.sql 文件通过scp或者rz/sz方式复制到从数据库虚机上,执行如下操作:

mysql -uroot -p -h127.0.0.1 -P3306  //登录从数据库
source  /home/root/my_data.sql;   //执行SQL备份文件

方法二:
     借助Navicat客户端工具,Navicat-工具-结构同步 和 Navicat-工具-数据同步功能,可简单实现两个数据库间主备同步,前提是从数据库中需要手动创建database;

      2)修改主数据库配置(my.cnf )

ps aux|grep mysql   //找到mysql的安装路径   例:安装目录为/export/services/mysql
ps aux|grep mysql|grep 'my.cnf'   //查找mysql是否有指定my.cnf配置文件路径

//如果没有找到mysql手动指定my.cnf配置,mysql会默认使用/export/services/mysql/my.cnf文件,
//如果/export/services/mysql目录下没有my.cnf文件,会使用/export/services/mysql/etc/my.cnf文件

     需要修改主数据库my.cnf 文件内容如下所示:

#--- 确认bin-log是打开状态(值mysql-bin是日志的基本名或前缀名) 默认关闭---#
log-bin = mysql-bin
#--- 二进制日志的格式(statement/row/mixed) ---#
binlog_format           = mixed
#--- 数据库唯一ID,非必须修改,只要保证主数据库和从数据库ID不相同即可 ---#
server-id=101

   修改完主数据库my.cnf文件时需要对数据库进行重启,重启命令如下所示:

service mysqld restart; //重启
service mysqld stop;   //关闭数据库
service mysqld start; 开启数据库

//或者
./export/servers/mysql/bin/mysqld restart ;//export/servers/mysql 为mysql的安装目录
./export/servers/mysql/bin/mysqld stop ;
./export/servers/mysql/bin/mysqld start;

    3)在主数据库为从数据库添加操作用户

mysql -uroot -p -h127.0.0.1 -P3306 //登录主数据库
//添加一个myread/myread 用户,并授予这个用户具有读取的权限,并且只能被IP:192.168.1.184使用
GRANT REPLICATION SLAVE ON *.* TO 'myread'@'192.168.1.184' IDENTIFIED BY 'myread';
//刷新系统权限
flush privileges;

    4)修改从数据库配置(my.cnf )
         
从数据库my.cnf不需要做过多修改,只需要保证从数据库my.cnf中的server-id与主数据库的不一致就可以,否则会出现如下错误:(修改完需要对从数据库进行重启)

Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).

    5)查找主数据库当前bin日志信息

mysql -uroot -p -h127.0.0.1 -P3306   //链接主数据库
show master status\G; //查看主数据库binlog信息,记下File和Position

  
   6)配置从数据库

mysql -uroot -p -h127.0.0.1 -P3306   //登录从数据库
stop slave;   //关闭主从复制,怕以前配置过,先关一次
//执行关联主数据库,master_log_file和master_log_pos 两个配置项来源于主数据库,当master_log_pos设置为0时,默认取主数据库最后一次事件操作结束点
change master to master_host='192.168.1.183', MASTER_PORT=3306, master_user='myread',   master_password='myread',master_log_file='mysql-bin.000004', master_log_pos=27015301;

start slave; //开启主从复制
show slave status\G; //查看开启主从复制是否开启成功

  如果 show slave status\G; 命令结果如下所示:

 当Slave_IO_Running 和Slave_SQL_Running 都为Yes时表示主从配置重新,接下来就可以在主数据库中执行个SQL验证一下,看是否能正常同步到从数据库。

三、遇到的问题
   1) Slave_IO_Running: Connecting

    出现此问题的原因在于主从机器无法正常通话,可通过以下方式排查此问题:

  • 主从数据库不在一个网段导致网路不通
  • 从数据库change master时,配置主数据库的master_user 和master_password 配置错误
  • 从数据库change master时,配置主数据库的IP或端口配置错误

   2) Slave_IO_Running: No
     出现此问题的原因从数据库配置向主数据库进行读取时出现问题,需要关注show slave status\G; 命令结果中的Last_IO_Errno和Last_IO_Error 来排查问题,遇到到从数据库的server-id 和主数据库的配置相同了,出现了如下的错误:(修改从数据库server-id后问题恢复正常)

Last_IO_Errno: 1593
Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).

   3) Slave_SQL_Running: No
       
出现此问题时在于从主数据库抓取到bin-log日志后,执行时出现错误,需要关注show slave status\G; 命令结果中的Last_IO_Errno和Last_IO_Error 来排查问题,曾遇到过从数据库和主数据库binlaog事件结束节点不一致,导致无法正常同步,出现问题如下所示:

Last_Errno: 1032
Last_Error: Could not execute Delete_rows event on table xxxxx.xxxxxxxxx; Can't find record in 'xxxxxxx', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.000004, end_log_pos 26604323

解决办法需要在从数据库中执行如下命令:

mysql -uroot -p -h127.0.0.1 -P3306  //登录从数据库
stop slave;  //停止主从复制
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000004', MASTER_LOG_POS=26604323;//补录
start slave; //开启主从复制
show slave status\G; //查看同步状态

注:需要定时观察主从状态show slave status\G; 来判断主从同步情况

四、常用命令

SET PASSWORD = PASSWORD('root');  //设置当前用户密码
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root'); //设置指定用户密码
//在192.168.%.%开头的机器root用户远程访问时,所有数据库,开启全部权限
grant all on *.* to 'root'@'192.168.%.%'; 

 

17、MySQL主从复制的实现过程及部署 将主数据库中的DDL和DML操作通过二进制日志传输到从数据库上,然后将这些日志重新执行(重做);从而使得从数据库的数据与主数据库保持一致。MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。MySQL复制是基于主服务器在二进制日志中跟踪所有对数据库的更改。因此,要进行复制,必须在主服务器上启用二进制日志。每个从服务器从主服务器接收主服务器已经记录到日志的数据。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。 阅读详情

相关推荐

VisDrone2019数据集实战:从下载到YOLO格式转换的完整指南

本文提供了一份完整的VisDrone2019数据集实战指南,详细介绍了从数据集下载、理解其独特的标注格式,到转换为YOLO模型可直接训练格式的全过程。通过清晰的代码示例和步骤讲解,帮助读者掌握处理复杂无人机视觉数据集的核心技能,为基于YOLO的目标检测模型训练做好准备。

weixin_29165725的博客 384

MySQL主从复制与切换

由于SQL Thread也是单线程的,当主库的并发较高时,产生的DML数量超过slave的SQL Thread所能处理的速度,或者当slave中有大型query语句产生了锁等待那么延时就产生了。为了完成主从复制,从库需要通过 I/O 线程获取主库中 dump 线程读取的 binlog 内容并写入到自己的中继日志 relay log 中,从库的 SQL 线程再读取中继日志,重做中继日志中的日志,相当于再执行一遍 SQL,更新自己的数据库,以达到数据的一致性。

weixin_43816711的博客 3656

量化金融笔记1-股票量化基础

股票量化基础 文章目录什么是股票股票的定义及其诞生所解决的问题股票的主体和流通股票的常规分类股票价格收益率什么是股票价格的收益率股票价格收益率计算在python中的实现两种收益率算法的特点及应用场合股票交易规则场内交易与场外交易A股、B股、H股国内多层次的资本市场股票交易指令和撮合机制股票交易时间股票交易成本股票复权股票数据介绍与提取行业分类和指数行情数据因子数据标的数据基本面数据 什么是股票 股票的定义及其诞生所解决的问题 股票的定义:股票是一种有价证券,是股份有限公司公开发行的用以证明投资者的股东身份

折桂狂人的博客 2395

开启Mysql主从复制

为了缓解服务器的压力,在开发中我们可以实现读写分离,这样的话就需要在Mysql中开启主从复制。开启主从复制

toytoytelecar的博客 776

硬件基础(4):(7)ADC电压采集:软件校准(标定、拟合)

在实际项目中,**软件端校准**可以有效弥补硬件方面(分压电阻误差、放大器失调、参考源误差等)带来的系统性偏差,从而提高 ADC 测量精度。下面是一个常见的**多点实测校准**流程与思路,个人感觉传感器标定的原理也只这样。

FCZlll的博客 6240

博途的HMI(触摸屏)的应用

触摸屏(HMI):用于控制PLC,可认为是小型上位机(用于控制PLC的都可认为是上位机)上位机(PC Station):将触摸屏升级为电脑----工控机(工业控制的机器)用博途编写西门子的触摸屏和上位机。

王阿妹小天才的博客 2675

如何开启mysql主从复制

MySQL主从复制是在两台或多台MySQL服务器之间建立的一种数据同步技术。主服务器将事务数据同步到多个从服务器上,从而实现数据的高可用性和负载均衡。 开启MySQL主从复制的步骤如下: 1.在主服务器上配置好MySQL并启动。 2.在从服务器上配置好MySQL并启动。 3.在主服务器上创建一个复制用户并记录下相关信息,如用户名、密码、主机名等。 4.在从服务器上输入以下命令开启复制功能: CHA...

weixin_35755640的博客 530

网络安全 —— 实验(基于华为eNSP模拟器)

8. 实验八 —— 通过路由的远程管理(基于实验七的基础配置)8. 实验八 —— 通过路由的远程管理(基于实验七的基础配置)6. 实验六 —— 交换机的远程控制(直接控制和间接控制)6. 实验六 —— 交换机的远程控制(直接控制和间接控制)5. 实验五 —— 将交换机作为PC端通过交换机相连。5. 实验五 —— 将交换机作为PC端通过交换机相连。4. 实验四 —— 两个PC机通过两台交换机相连。2. 实验二 —— 两个PC机通过交换机相连。2. 实验二 —— 两个PC机通过交换机相连。

这个家伙看起来很懒,只想把你留下来哦 9338

Mysql 主从复制实战(学习笔记十三)

https://www.cnblogs.com/along21/p/8011596.html https://blog.youkuaiyun.com/qq3401247010/article/details/78754671 一主一从,一主多从,双主 ① iptables -F && setenforce...

weixin_34123613的博客 174

基于ARKitScenes和YOLOv11的元宇宙3D物体检测系统设计与实现

引言随着元宇宙概念的兴起和增强现实(AR)技术的快速发展,3D物体检测成为了计算机视觉领域的重要研究方向。与传统的2D物体检测不同,3D物体检测不仅需要识别物体类别,还需要估计物体在三维空间中的位置、大小和朝向。本文将详细介绍如何利用ARKitScenes数据集和YOLOv11算法构建一个完整的3D物体检测系统,并提供可视化UI界面。相关工作与技术背景2.1 ARKitScenes数据集介绍ARKitScenes是苹果公司发布的一个大规模的3D场景理解数据集,包含丰富的室内场景数据。

YOLO 411

把 LLM 编排能力塞进 ABAP 系统里,ZLLM 仓库的工程价值与 SAP 落地场景

ZLLM项目将LLM应用开发中的常见工程问题引入ABAP原生环境,为SAP系统提供AI工作流构建能力。它类似ABAP版的LangChain,支持Chain组合、Prompt模板、状态传递等核心功能,强调纯ABAP实现、延迟执行以及与ABAP数据结构的深度集成。项目包含工厂类、LLM客户端、负载均衡器等模块,特别设计了能处理ABAP内表和结构的模板引擎,使业务数据可直接用于Prompt生成。通过Step和Flow机制支持复杂业务过程编排,并采用延迟执行和并行处理优化批量任务性能。该项目为ABAP开发者提供了在

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 61

MySQL主从复制几个重要的启动选项

MySQL主从复制几个重要的启动选项   (1)  log-slave-updates   log-slave-updates这个参数用来配置从服务器的更新是否写入二进制日志,这个选项默认是不打开的,但是,如果这个从服务器B是服务器A的从服务器,同时还作为服务器C的主服务器,那么就需要开发这个选项,这样它的从服务器C才能获得它的二进制日志进行同步操作   (2)  master-

sz_bdqn的专栏 1177

完整的 Python 数据分析案例:新能源汽车续航里程预测

随着新能源汽车的普及,续航里程成为消费者关注的重要指标。准确预测新能源汽车的续航里程,有助于车企优化电池管理系统、提升车辆性能,也能帮助消费者合理规划出行。本案例将基于新能源汽车的各项参数,如电池容量、行驶速度、环境温度等,构建续航里程预测模型。通过以上改进,可以提高数据处理的准确性、模型的性能和可视化的效果。

daqsdfas的博客 1587

如何使用MySQL进行主从复制

如何使用MySQL进行主从复制

han1725692339的博客 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

MySQL主从复制

一、MySQL主从复制原理 在实际的生产中,为了解决Mysql的单点故障已经提高MySQL的整体服务性能,一般都会采用「主从复制」。 比如:在复杂的业务系统中,有一句sql执行后导致锁表,并且这条sql的的执行时间有比较长,那么此sql执行的期间导致服务不可用,这样就会严重影响用户的体验度。 主从复制中分为「主服务器(master)「和」从服务器(slave)」,「主服务器负责写,而从服务器负责读」,Mysql的主从复制的过程是一个「异步的过程」。 这样读写分离的过程能够是整体的服务性能提高,即使写操作时间

m0_62473957的博客 2万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

MySQL主从复制详细介绍

​ 简单的说就是master将数据库的改变写入binary log二进制日志,这个日志会记录下所有修改了数据库的SQL语句(insert,update,delete,grant等),slave同步这些二进制日志,并根据这些二进制日志进行数据操作,其实就是把主服务器上的binary log复制到从服务器上执行一遍,这样从服务器上的数据就和主服务器上的数据相同了。2.从节点开启一个线程I/O Thread把自己扮演成mysql的客户端,通过mysql协议,请求主节点的二进制日志文件中的事件。...

TimeFriends 6396

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Docker实现MySQL主从复制

1)、mysql主从复制用途实时灾备,用于故障切换读写分离,提供查询服务备份,避免影响业务主库开启binlog日志(设置log-bin参数)主从server-id不同从库服务器能连通主库使用docker起两个mysql容器进行主从复制的整个过程就是这样子了,希望能够给大家带来帮助Docker实现Mysql 主从复制实战)下一篇:docker启动redis。

仰望天空,妳我亦是行人. 4551

Docker部署MySQL主从复制

Docker 镜像是用于创建容器的蓝图,包含了运行应用的所有依赖,如代码、运行时、库和配置文件。它们是轻量级、可移植的,确保应用在任何环境中都能一致运行。每个镜像由多个层组成,每层对应Dockerfile中的一个指令,这种分层帮助实现资源共享,优化存储和传输效率。Docker 镜像可以通过docker build创建,也可以从公共或私有仓库如Docker Hub拉取。使用docker pull命令获取镜像,Docker部署mysql数据库,主从复制,双主双从,主主互备,实现数据同步复制

3421

用几张图实战讲解MySQL主从复制

本文结合MySQL主从复制的实战案例来说说MySQL主从复制的底层原理。

华为云官方博客 1776

MySQL 主从复制与一主多从架构实战详解

MySQL 的主从复制为分布式架构提供了坚实的基础。不论是一主多从、主主复制,还是读写分离,在不同规模和业务需求下都能灵活组合构建高可用、高性能的数据库架构。

2303_78594540的博客 2735

MySql主从复制(初学笔记)

笔记有部分前辈的经验,如有冒犯请联系 servicewy@163.com 会尽快删除。 如有转载请标明出处 MySQL8 数据库的主从备份 5.5.* 版本 : 单线程 5.7.* 版本: 多线程 大多用的都是基数版本。其中出名的为 5系列的 5.5 版本 和 5.7版本。 MySQL主从复制 MySQL数据库自身提供的主从复制功能可以方便...

Ayuuu 7730

MySQL主从复制详解及实战

一、主从复制概述 1、MySQL主从复制也可以称为MySQL主从同步,它是构建数据库高可用集群架构的基础。它通过将一台主机的数据复制到其他一台或多台主机上,并重新应用relay log中的SQL语句来实现复制功能。 MySQL支持单向、双向、链式级联、异步复制,5.5版本之后加入的半同步复制,5.6版本之后的GTID复制,MySQL5.7的多源复制、并行复制、loss-less复制。 2、常见的几...

一点一滴铺就人生 1125

mysql笔记:19. 主从复制和主主复制

主从复制(也称AB复制)允许将来自一个MySQL数据库服务器(主服务器)的数据复制到一个或多个MySQL数据库服务器(从服务器)。根据参数文件的配置,可以复制数据库中的所有数据。横向扩展解决方案:在多个从站之间分配负载以提高性能。在此环境中,所有写入和更新都必须在主服务器上进行。但是,读取可以在一个或多个从设备上进行。该模型可以提高写入性能(因为主设备专用于更新),同时显著提高了从设备的读取速度。

斌斌(Java) 2013

mysql主从复制实战

④二级主配置:与主从复制从服务器配置相同,只需要在修改配置文件时多添加一条:log_slave_updates(此条为开启log转发更新即将一级主的binlog转发给从服务器)⑤从服务器配置:与主从复制从服务器配置相同,注意从服务器的主是二级主,所以配置主机ip,远程用户密码以及端口和日志位置时要写二级主的信息。②配置时二级主的主服务器ip日志远程用户等配置一级主的信息,二级主将一级主的二进制日志转发给从数据库。dump线程:由主数据库开启,用于读取主的二进制日志并传输给从数据库。

weixin_53585291的博客 701

【MySql】 搭建主从复制

主从复制是指将主库的数据变更同步到从库,从而保证主库和从库数据一致,可用于数据备份、失败迁移、读写分离、降低单库读写压力等场景。对于面向大企业的B端产品而言,主从复制技术尤为重要。

精益求精 2035
上一篇: nginx 开启gzip压缩
下一篇: 自定义、定制findbugs扫描类型,忽略指定类型
TimerBin
博客等级 码龄12年 54粉丝 119原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值