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复制是基于主服务器在二进制日志中跟踪所有对数据库的更改。因此,要进行复制,必须在主服务器上启用二进制日志。每个从服务器从主服务器接收主服务器已经记录到日志的数据。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。 阅读详情

相关推荐

别再死记硬背菜单了!用Workbench搞定你的第一个ANSYS结构分析(附模型文件)

本文为零基础用户提供使用ANSYS Workbench完成第一个结构分析的完整指南。通过悬臂梁案例详细讲解从几何导入、材料定义、网格划分到边界条件设置的全流程,帮助初学者快速掌握有限元分析的基本操作,并附赠实用模型文件。

weixin_34233974的博客 307

MySQL主从复制与切换

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

weixin_43816711的博客 3656

保姆级教程:用STM32单片机实现国标交流充电桩的CP信号检测(附完整代码)

本文详细介绍了基于STM32单片机实现国标交流充电桩CP信号检测的全流程,包括硬件设计、软件架构和充电控制实现。通过分压电路设计、ADC配置和状态机逻辑,确保充电过程的安全与可靠性,适用于新能源汽车充电桩开发。附完整代码和调试技巧,助力开发者快速掌握关键技术。

weixin_42641998的博客 251

开启Mysql主从复制

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

toytoytelecar的博客 776

基于Coze平台从零构建AI智能体:以测试用例生成为例的实战指南

在人工智能技术快速发展的今天,大语言模型(LLM)和提示词工程(Prompt Engineering)已成为构建智能应用的核心技术。其原理在于通过自然语言指令引导模型完成特定任务,其技术价值在于极大地降低了AI应用开发的门槛,使非专业开发者也能快速实现想法。这一技术广泛应用于自动化办公、智能客服、内容生成等场景。本文聚焦于字节跳动旗下的Coze平台,该平台通过可视化工作流编排和预置技能,将上述技术封装为易用的工具。文章以“根据产品需求文档(PRD)自动生成测试用例”这一具体场景为例,详细拆解了从需求分析、工

weixin_30617695的博客 337

保姆级教程:在mmdetection中手动计算并可视化P、R、F1值(附完整代码)

本文提供了一份详细的mmdetection教程,指导开发者如何手动计算并可视化精确率(P)、召回率(R)和F1值。通过完整的代码示例和清晰的步骤说明,帮助用户深入理解目标检测模型的性能评估方法,特别适合需要精细分析模型表现的计算机视觉研究人员和工程师。

weixin_29038303的博客 399

如何开启mysql主从复制

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

weixin_35755640的博客 530

脑电数据预处理八:基于 ICA 的伪迹去除

摘要: 脑电图(EEG)数据分析中,伪迹(如眼电、心电、肌电)与脑电信号频谱重叠时,独立成分分析(ICA)成为有效工具。ICA通过盲源分离将混合信号分解为统计独立的成分,识别并移除伪迹后重建干净信号。MNE-Python实现步骤包括:数据预处理(滤波、坏导处理)、ICA分解、人工与自动结合识别伪迹成分、剔除后重建数据。实践建议强调人工检查的重要性,避免过度使用ICA,并保存模型以提高效率。该方法显著提升数据质量,为后续分析奠定基础。

qq_32516809的博客 1658

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

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

weixin_34123613的博客 174

【详细图文】使用MobaXterm的SSH功能远程连接服务器,并创建pytorch环境,使用yolov8训练数据集

使用MobaXterm的SSH功能远程连接服务器,并创建pytorch环境,使用yolov8训练数据集,以及MobaXterm使用介绍和linux基础命令介绍。

qq_62844901的博客 3383

C语言实现惯性导航初始对准全部核心代码

惯性导航初始对准包括间接粗对准和卡尔曼滤波精对准,其中。为基于卡尔曼滤波的精对准,其中。

十八与她的博客 2283

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

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

sz_bdqn的专栏 1177

k8s上分离集群seatunnel部署(生产推荐)

k8s上分离集群seatunnel部署(生产推荐)

寂夜了无痕的博客 884

如何使用MySQL进行主从复制

如何使用MySQL进行主从复制

han1725692339的博客 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

MySQL主从复制

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

m0_62473957的博客 2万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

MySQL主从复制详细介绍

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

TimeFriends 6396

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

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、付费专栏及课程。

余额充值