广告
返回顶部
首页 > 资讯 > 数据库 >MySQL 配置主从复制实践分享
  • 426
分享到

MySQL 配置主从复制实践分享

2024-04-02 19:04:59 426人浏览 泡泡鱼
摘要

目录一、检测通信二、master配置1. 开启二进制日志2. 创建一个用于主从库通信用的账号3. 获取binlog的日志文件名和position三、slave配置1. 配置全局唯一的

一、检测通信

查看主库(master)和从库(slave)的ip地址,并检测是否可以通信

保证master和slave之间网络是互通的,用ping命令检测

到这里我们知道,master的ip为192.168.131.129,slave的ip为192.168.0.6,并且可以相互通信。保证3306端口开放

查看防火墙状态systemctl status firewalld.service

临时手动启动防火墙systemctl start firewalld.service
临时手动停止防火墙systemctl stop firewalld.service

持久打开防火墙(重启服务生效)systemctl enable firewalld.service
持久关闭防火墙(重启服务生效)systemctl disable firewalld.service

查看当前开放的端口列表firewall-cmd --list-ports

二、master配置

1. 开启二进制日志

配置log_bin和全局唯一的server-id,和slave区分开,不能配置成一样的(如果是my.cnf新添加配置,一定要重启Mysql服务)

vim /etc/my.cnf打开my.cnf文件

2. 创建一个用于主从库通信用的账号

即在master中创建一个账号,用于slave登录master读取binlog

虽然我们在linux上查看的ip地址是192.168.131.129,但我们创建账户登录时不写这个ip,写的是192.168.131.1。因为我这里虚拟机用的是NAT模式(如果是桥接模式就可以直接用了),虚拟机(master)和物理机(slave)通信的时候,虚拟机先把数据发送到网关192.168.131.1(默认与VMnet8通信),192.168.131.1再转发到物理机,所以物理机接收到的是192.168.131.1的数据,故我们在master上为slave创建账户的时候,应该写192.168.131.1

如果给slave配置的不是网关192.168.131.1地址,vim + /var/log/mysqld.log打开错误日志会有如下信息:

这说的就是从192.168.131.1的mslave权限不够,那是因为我们在master配置的是允许从其他地方登录,并不允许从192.168.131.1地址登录,导致权限不够。

由于master这边收到的是来自192.168.131.1的请求,所以错误日志显示的是192.168.131.1

创建用户的命令:

//如果嫌麻烦可以用%代替192.168.131.1,,它就可以匹配任何ip
mysql> CREATE USER 'mslave'@'192.168.131.1' IDENTIFIED BY '1qaz@WSX';
//启动主从,在主库上给当前的mslave用户开启REPLICATION SLAVE主从复制的权限,从库就可以通过1qaz@WSX账户密码
//从192.168.131.1 IP地址来请求访问这台主库上的任意库里面的任意表*.*,同步这个主库的任意库里的任意表
mysql> GRANT REPLICATION SLAVE ON *.* to 'mslave'@'192.168.131.1' IDENTIFIED BY '1qaz@WSX';
mysql> FLUSH PRIVILEGES;

3. 获取binlog的日志文件名和position

show master status

三、slave配置

1. 配置全局唯一的server-id

配置全局唯一的server-id

涉及修改配置文件,需要重启MySQL服务

2. 使用master创建的账户读取binlog同步数据

这一步配置主要是给IO线程读取binlog使用:

mysql> CHANGE MASTER TO MASTER_HOST='192.168.131.129',
MASTER_PORT=3306,
MASTER_USER='mslave',
MASTER_PASSWord='1qaz@WSX',
MASTER_LOG_FILE='mysql-bin.000006',
MASTER_LOG_POS=1262;
  • MASTER_HOST:指定master的ip
  • MASTER_LOG_FILE:binlog文件名
  • MASTER_LOG_POS:binlog的position

3. 开启slave服务

通过show slave status命令查看主从复制状态,show processlist查看master和salve相关线程的运行状态

四、配置中可能出现的问题

1. 网络连接问题

通过show slave status命令查看主从复制状态

连接connection错粗,先考虑网络是否互通,ping一下:

然后再检查从库里面的配置信息是否正确

如果都正确,检查主库所在机器的3306端口是否正常

telnet xxx.xxx.xxx.xxx 3306

如果发现3306端口不能连通,就需要怀疑主库对端口有限制吗,也就是防火墙限制,就需要在防火墙把3306端口开放出来。

如果这个错误还没解决,就查看一个主库的错误日志/var/log/mysql/mysqld.log,查看错误日志中提示的ip是否和自己允许slave登录的ip一致

这说的就是从192.168.131.1的mslave权限不够,自己玩的时候,如果虚拟机是NAT模式,则需要写成VMnet8网关ip。如果都是物理机通信,那直接写正确的ip即可

可以在MySQL数据库下的mysql库的user表中更改允许登录的ip

然后重新赋予权限:

mysql> GRANT REPLICATION SLAVE ON *.* to 'mslave'@'xxx.xxx.xxx.xxx' IDENTIFIED BY '1qaz@WSX';

2. binlog的position问题

在master中查看show master status一下binlog日志文件名以及position,然后用命令重新配置slave,比如:

mysql> CHANGE MASTER TO MASTER_HOST='192.168.131.129',MASTER_PORT=3306,MASTER_USER='mslave',MASTER_PASSWORD='1qaz@WSX',
MASTER_LOG_FILE='mysql-bin.000006',MASTER_LOG_POS=1262;

配置slave前需要stop slave,配置完成再start slave

3. SQL线程出错

错误原因:首先配置主从复制的时候,slave的mytest库中没有user表,而master的mytest库已经有user表了配置好主从复制后直接drop table mytest.user,这就会写到binlog里面,然后在通过dump线程和IO线程将这个操作发送到从库的relay log,然后从库的SQL线程从relay log里把drop table mytest.user捞出来在从库执行这个SQL,可从库的mytest根本就没有user表,这就是删除一个不存在的表,于是出现错误了。

一般我们是不会做这样的操作的,我们一般都是主库配置以后,slave从数据开始增量进行同步,不会同步以后一开始就删主库里的东西,如果真的出现这样的问题了,随时可以通过show slave status来查看主从库的状态来解决错误,如果是上图这个错误,
(1)可以在从库stop slave,然后把位置重新设置一下,然后再start slave,相当于重新开始主从同步的位置。
(2)可以在从库stop slave,然后set global sql_slave_skip_counter=1;(跳过一个错误),然后再start slave重启从库的线程,相当于把错误跳过了,异常操作。

可以通过show slave status查看以下标识,IO线程出错一般是网络问题,SQL线程出错一般是SQL在slave库执行出现了问题

到此这篇关于MySQL 配置主从复制实践分享的文章就介绍到这了,更多相关MySQL 配置主从复制 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL 配置主从复制实践分享

本文链接: https://www.lsjlt.com/news/164228.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL 配置主从复制实践分享
    目录一、检测通信二、master配置1. 开启二进制日志2. 创建一个用于主从库通信用的账号3. 获取binlog的日志文件名和position三、slave配置1. 配置全局唯一的server-id2. 使用maste...
    99+
    2022-07-14
    MySQL 配置主从复制 MySQL 主从复制
  • MySQL 配置主从复制实践分享
    目录一、检测通信二、master配置1. 开启二进制日志2. 创建一个用于主从库通信用的账号3. 获取binlog的日志文件名和position三、slave配置1. 配置全局唯一的...
    99+
    2022-11-13
  • MySQL实现配置主从复制项目实践
    目录一、检测通信二、master配置1. 开启二进制日志2. 创建一个用于主从库通信用的账号3. 获取binlog文件名和position三、slave配置1. 配置全局唯一的ser...
    99+
    2022-11-13
  • MySQL主从复制配置
    配置主数据库: my.cnf: server-id       = 1 log-bin  重启数据库 登录并查看: ...
    99+
    2022-10-18
  • MySQL 5.6 主从复制配置
    一、前言:为什么MySQL要做主从复制(读写分离)?通俗来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低。为了提升业务系统性能,优化用户体验,可以通过做主从复制(读写分离)来减轻主...
    99+
    2022-10-18
  • MySQL配置SSL主从复制
    MySQL5.6 创建SSL文件方法 官方文档:https://dev.mysql.com/doc/refman/5.6/en/creating-ssl-files-using-openssl.html#c...
    99+
    2022-10-18
  • mysql主从复制配置过程
    主库配置 1. 配置mysql vim /etc/my.cn # 在文件中增加以下内容 server-id=1 # 保证server id唯一 log-bin = /var/lib/mysql/mysql-bin...
    99+
    2022-05-23
    mysql 主从复制 mysql 主从复制配置
  • 【MySQL】主从异步复制配置
    简介: Mysql的 主从同步 是一个异步的复制过程,从一个 Master复制到另一个 Slave上。在 Master 与 Slave 之间的实现整个复制过程主要由三个线程来完成,其中两个线程(Sql线程...
    99+
    2022-10-18
  • MySql主从复制实现原理及配置
    数据库读写分离对于大型系统或者访问量很高的互联网应用来说,是必不可少的一个重要功能。对于MySQL来说,标准的读写分离是主从模式,一个写节点Master后面跟着多个读节点,读节点的数量取决于系统的压力,通常是1-3个...
    99+
    2022-05-18
    MySql 主从复制
  • mysql主从复制配置(日志点)
            一些mysql版本并不会开启二进制日志,所以一定要检查是否开启。如果一开始没开启,在以后需要开启,则必须重启数据库服务器,而数据库服务器重启会对业务造成很大影响。所以,尽管二进制日志会对性能...
    99+
    2022-10-18
  • 配置mysql数据库主从复制
        一、    原理说明 复制有以下三个步骤:   (a)主服务器把数据更改记录到二进制日志中。(这叫做二进制日志事件(binary...
    99+
    2022-10-18
  • mysql的主从复制如何配置
    这篇文章给大家分享的是有关mysql的主从复制如何配置的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。数据库复制对于系统高可用、高性能的提升扮演者很重要的角色。1 主库配置1.1 ...
    99+
    2022-10-18
  • Linux下MySQL主从复制的配置
    本篇内容主要讲解“Linux下MySQL主从复制的配置”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux下MySQL主从复制的配置”吧! MySQL...
    99+
    2022-10-18
  • mysql中如何配置主从复制
    这篇文章主要介绍了mysql中如何配置主从复制,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。对于现在的系统来说,在业务复杂的系统中,数据库往...
    99+
    2022-10-18
  • MySQL配置主从复制的方法
    今天小编给大家分享一下MySQL配置主从复制的方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、检测通信查看主库(mas...
    99+
    2023-07-02
  • mongodb主从复制配置
    主从复制是mongodb最常用的复制方式,这种方式很灵活.可用于备份,故障恢复,读扩展等.最基本的设置方式就是建立一个主节点和一个或多个从节点,每个从节点要知道主节点的地址. 我们用两种方式来实现主从.这里...
    99+
    2022-10-18
  • MySQL 主从复制的原理和配置
    工作原理图: 主从复制的原理: 分为同步复制和异步复制,实际复制架构中大部分为异步复制。 复制的基本过程如下: 1).Slave上面的IO进程连接上Master,并请求从指定日志文件的指...
    99+
    2022-05-26
    MySQL 主从复制 配置
  • MySQL主从复制的配置及原理
    -----------------------------------------------------------mysql 5.5   环境用的数据库可的多实例----------...
    99+
    2022-10-18
  • Windows下怎么配置MySQL主从复制
    这篇文章主要讲解了Windows下怎么配置MySQL主从复制,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。MySQL主从复制允许将来自一个数据库(主数据库)的数据复制到一个或多...
    99+
    2022-10-18
  • MySQL的主从复制介绍及配置
    1.MySQL主从复制介绍    MySQL数据库支持单向、双向、链式级联、环状等不同业务场景的复制。在复制过程中,一台服务器充当主服务器(Master),接收来自用...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作