MySQL主从复制配置

news/2024/11/14 19:38:17/

    • 一、MySQL主从概念
    • 二、主库配置(Master)
      • 第一步:修改Mysql数据库的配置文件/etc/my.cnf
      • 第二步:重启Mysql服务 systemctl restart mysqld
      • 第三步:登录Mysql数据库,执行下面SQL
      • 第四步:登录Mysql数据库,执行下面SQL,记录下结果中File和Position的值
    • 四、从库配置(Slave)
      • 第一步:修改Mysql数据库的配置文件/etc/my.cnf
      • 第二步:重启Mysql服务systemctl restart mysqld
      • 第三步:登录Mysq1数据库,执行下面SQL
      • 第四步:登录Mysql数据库,执行下面SQL,查看从数据库的状态
    • 五、测试主从复制
    • 五、如果同步不了,如何排错?

一、MySQL主从概念

MysSQL主从复制是一个异步的复制过程,底层是基于Mysql数据库自带的二进制日志功能。就是一台或多台AysQL数据库(slave,即从库)从另一台MysQL数据库(master,即主库)进行日志的复制然后再解析日志并应用到自身,最终实现从库的数据和主库的数据保持一致。MySQL主从复制是MysQL数据库自带功能,无需借助第三方工具。

MysQL复制过程分成三步:

  • master将改变记录到二进制日志( binary log)
  • slave将master的binary log拷贝到它的中继日志(relay
    log)
  • slave重做中继日志中的事件,将改变应用到自己的数据库中

在这里插入图片描述

二、主库配置(Master)

  • 主库Master 192.168.188.100
  • 从库slave 192.168.188.101

第一步:修改Mysql数据库的配置文件/etc/my.cnf

[mysqld]
log-bin=mysql-bin #[必须]启用二进制日志,数据间复制必不可少
server-id=100 #[必须]服务器唯一ID

第二步:重启Mysql服务 systemctl restart mysqld

第三步:登录Mysql数据库,执行下面SQL

//降低安全策略等级
set global validate_password.policy=LOW; 
//降低密码长度需求
set global validate_password.length=4;//设置英文字母(包含大小写)最小长度
set global validate_password.mixed_case_count=0;
//设置特殊字符最小长度
set global validate_password.special_char_count=0;
//刷新权限
FLUSH PRIVILEGES;
//mysql8授权用户需要先创建,创建和授权同一条语句的话会报错
create user slave@'%' identified by '135564';
//再授权
GRANT ALL PRIVILEGES ON *.* TO 'slave'@'%'WITH GRANT OPTION;
//刷新
flush privileges;

注:上面SQL的作用是创建一个用户slave,密码为135564,并且给slave用户授予REPLICATION SLAVE权限。常用于建立复制时所需要用到的用户权限,也就是slave必须被master授权具有该权限的用户,才能通过该用户复制。

第四步:登录Mysql数据库,执行下面SQL,记录下结果中File和Position的值

show master status;

在这里插入图片描述

四、从库配置(Slave)

第一步:修改Mysql数据库的配置文件/etc/my.cnf

[mysqld]
server-id=101 #[必须]服务器唯一ID

第二步:重启Mysql服务systemctl restart mysqld

第三步:登录Mysq1数据库,执行下面SQL

//执行前先停下slave
stop slave;//这是从库和主库连接的关键一步,host是主库的ip,user是前面创建的slave用户,file和pos是主库show master status的信息
change master to
master_host='192.168.81.100',master_user='slave',master_password='135564',
master_log_file='mysql-bin.000003',master_log_pos=157;//执行后启动slave
start slave;

第四步:登录Mysql数据库,执行下面SQL,查看从数据库的状态

show slave status;输出会很乱
show slave status\G;这样就竖着输出,不会乱

在这里插入图片描述两个yes则表示成功配置主从复制,Connection和No都是配置有问题

五、测试主从复制

主数据库创建一个数据库从数据库会自动创建

五、如果同步不了,如何排错?

如果主从数据库同步不了,就从库执行下 show slave status\G;如果是Slave_IO_Running: No,那么,很可能是主从库UUID重复了,或者是防火墙端口没开通,(这些上面都有讲到);
如果是 Slave_SQL_Running: No,那么我们可以通过跳过错误和手动同步来解决。

Slave_SQL_Running: No 问题分析
1.程序可能在slave上进行了写操作
2.也可能是slave机器重启后,事务回滚造成的.

备机上每写一次,主机master的pos都会变一次,有时候同步没成功,就会导致主从机pos值不一样,这时候有两种解决方法,一种是跳过这个错误,一种是手动同步pos值
解决办法一:

解决办法一:跳过这个错误,set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;就是跳过一次的意思解决办法:
mysql> stop slave ;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> start slave ;

解决办法二:

解决办法二:手动同步pos值进入master
到主服务器上查看主机状态:
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 |     2844 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)然后进到slave
首先停掉Slave服务: stop slave;然后到slave服务器上执行手动同步:
mysql>change master to
master_host='192.168.81.100',master_user='slave',master_password='135564',
master_log_file='mysql-bin.000003',master_log_pos=2844;再打开Slave服务: start slave;

http://www.ppmy.cn/news/93983.html

相关文章

给电脑重装系统有什么坏处吗

电脑重装系统是解决一些问题的常见方法,但是它也存在一些潜在的坏处。本文将为您详细介绍电脑重装系统的坏处,并提供一些注意事项,帮助您做出明智的决策。 工具/原料: 系统版本:Windows10 品牌型号:惠普…

《操作系统》期末主观题梳理

操作系统简答题 文章目录 操作系统简答题第一章第二章第三章第四章第五章第六章第七章第八章第九章 第一章 在计算机系统上配置OS(operating system, 操作系统)的目标是什么?作用主要表现在哪几个方面? 在计算机系统上配置OS, 主要目标是实现:方便性、有效性、可…

网络作业8【计算机网络】

网络作业8【计算机网络】 前言推荐网络作业8一. 单选题(共16题,60分)二. 填空题(共2题,20分)三. 阅读理解(共1题,20分) 最后 前言 2023-5-23 16:54:08 以下内容源自《【…

每日算法(第十期)

2023年5月26日 先来回顾一下昨天的面试题及答案: 「合并两个有序链表」(Merge Two Sorted Lists)。 题目描述:将两个升序链表合并为一个新的升序链表并返回。新链表应该通过拼接给定的两个链表的节点组成。 例如,给定链…

在Flask中构建API接口

重定向行为 斜杠 以下两个路由的不同之处在于是否使用尾部的斜杠。 第一个路由的URL尾部有一个斜杠,看起来就像一个文件夹,访问一个没有斜杠结尾的URL时,Flask会自动进行重定向,在结尾加上一个斜杠。 第二个路由的URL没有尾部…

在VIVADO下烧写ZC706板载FLASH的操作步骤

1,原理图分析 首先看原理图,我们兼容ZC706的板子有两片 FLASH,型号是S25FL128A,连接方式如下: 可以看到两片是分别接在了XC7Z045芯片的引脚上,是互不相干的并联方式,每个FLASH芯片支持X4模式,也…

2、Ubuntu下安装mosquitto

1、mosquitto库是什么 mosquitto是一款实现了消息推送协议 MQTT v3.1 的开源消息代理软件,提供轻量级的,支持可发布/可订阅的的消息推送模式,使设备对设备之间的短消息通信变得简单。 在实验中使用mosquitto库函数来实现订阅与发布。 mosquit…

代码随想录算法训练营day53 | 1143.最长公共子序列,1035.不相交的线,53. 最大子序和 动态规划

代码随想录算法训练营day53 | 1143.最长公共子序列,1035.不相交的线,53. 最大子序和 动态规划 1143.最长公共子序列解法一:动态规划 1035.不相交的线解法一:动态规划 53. 最大子序和 动态规划解法一:动态规划解法二&am…