Linux的MySQL主从复制

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

1.概述

MySQL的主从复制(Master-Slave Replication)是一种数据复制解决方案,将主数据库的DDLDML操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而是的从库和主库的数据保存同步。

MySQL支持将数据从一个MySQL服务器(主服务器)复制到一个或多个其他MySQL服务器(从服务器),从库同时也可以作为其他从服务器的主库,实现链状复制。

MySQL主从复制的优点主要包含以下三个方面:

  • 主库出现问题,可以快速切换到从库提供服务;

  • 实现读写分离,降低主库的访问压力;

  • 可以在从库中执行备份,以避免备份期间影响主库服务;

需要注意的是,MySQL的主从复制是异步的,这意味着从服务器的数据可能会与主服务器的数据存在一定的延迟。因此,在使用主从复制时,需要根据具体的业务场景和需求来选择合适的配置和策略。

2.工作原理

从上图来看,主从复制分成三步:

  1. Master主库在事务提交时,会把数据变更记录在二进制日志文件Binlog中;

  2. 从库读取主库的二进制日志文件Binlog,写入到从库的中继日志Relay Log

  3. Slave重做中继日志中的事件,将改变数据更新同步到从库中;

说白了就是Master主库上执行的增删改的SQL语句同步到对应的Slave从库上,然后再在Slave从库中同样再次执行一遍SQL语句以作备份。

3.综合案例

3.1.前期准备

准备两台虚拟机,需要提前安装好MySQL数据库(必须要开启二进制日志)。如下所示:

主从库IP地址
主库192.168.233.137
从库192.168.233.138

注意:以上只是示例说明,具体以自己的虚拟机情况为主。

3.2.主库配置

1)修改主库服务器的MySQL核心配置文件/etc/mysql/mysql.conf.d/mysqld.cnf,并添加如下配置信息:

[mysqld]
...
# 开启二进制日志(必须)
log-bin = mysql-bin
# MySQL服务ID,保证整个集群环境中唯一,默认为1(必须)
server-id = 1
# 二进制日志格式,默认ROW(可选)
binlog_format = ROW
# 忽略的数据,不需要同步的数据库
# binlog-ignore-db = mysql
# 指定同步的数据库
# binlog-do-db = db01

注意:这里binlog-ignore-dbbinlog-do-db配置项没有指定,默认同步所有数据库信息。

2)重启MySQL服务器。

systemctl restart mysql

3)登录MySQL数据库,创建远程连接的账号,并授予主从复制权限。

# 创建zking用户,并设置密码,该用户可在任意主机连接该MySQL服务
create user 'zking'@'%' identified with mysql_native_password by 'zking1234';
​
# MySQL 数据库中的授权语句,用于授予用户zking在所有数据库和所有表上的复制从库权限,
# 允许该用户从任何主机连接并进行复制操作
grant replication slave on *.* to 'zking'@'%';
​
FLUSH PRIVILEGES;

4)通过指令,查看二进制日志坐标

show master status;

字段含义说明:

字段说明
File当前正在写入的二进制日志文件名
Position当前正在写入的二进制日志文件的位置
Binlog_Do_DB指定需要写入二进制日志的数据库名
Binlog_Ignore_DB指令不需要写入二进制日志的数据库名

3.3.从库配置

1)修改从库服务器的MySQL核心配置文件/etc/mysql/mysql.conf.d/mysqld.cnf,并添加如下配置信息:

[mysqld]
...
# 开启二进制日志(必须)
log-bin = mysql-bin
# MySQL服务ID,保证整个集群环境中唯一,默认为1(必须)
server-id = 2
# 二进制日志格式,默认ROW(可选)
binlog_format = ROW
# 是否只读,1代表只读,0代表读写
read-only = 1
​
# 默认为File,另一个值是为TABLE
#master_info_repository = FILE

2)重启MySQL服务器。

systemctl restart mysql

3)登录MySQL数据库,设置主库配置。

  • MySQL8.0.23之前的版本,执行如下SQL语句:

change master to master_host='xxx.xxx.xxx.xxx',master_user='xxx',master_password='xxx',master_log_file='xxx',master_log_pos=xxx;
  • MySQL8.0.23之后的版本,执行如下SQL语句:

change replication source to source_host='xxx.xxx.xxx.xxx',source_user='xxx',source_password='xxx',source_log_file='xxx',source_log_pos=xxx;

参数说明:

参数名含义8.0.23之前
source_host主库IP地址master_host
source_user连接主库的用户名master_user
source_password连接主库的密码master_password
source_log_filebinlog日志文件名master_log_file
source_log_posbinlong日志文件位置master_log_pos

4)开启同步操作

# 8.0.22之后
start replica; 
# 8.0.22之前
start slave;

5)查看主从同步状态

# 8.0.22之后
show replica status; 
# 8.0.22之前
show slave status\G;

上述图中显示Slave_IO_Running: No,很明显主从复制开启失败。经过问题分析之后,发现是虚拟机是克隆的,导致主库和从库的MySQLserver id都是一样的。解决方案:修改任意主库和从库的server id即可解决问题。

修改/var/lib/mysql/auto.cnf文件。将server-uuid属性修改为唯一值即可。

[auto]
server-uuid = 任意uuid

修改完毕保存并退出,最后重启MySQL服务后,并再次登录MySQL查看主从复制是否成功。

3.3.数据测试

1)登录主库MySQL,并执行以下SQL语句:

# 切换数据库
use db1;
# 创建数据表t_student
create table t_student(sid int primary key auto_increment,sname varchar(20) not null,sage int default 0,ssex varchar(2) default '1');
# 批量添加数据
insert into t_student(sname,sage,ssex) values('张三',26,'男'),('王五',22,'女'),('小七',23,'女');

2)登录从库MySQL,查看主从复制结果:

# 切换数据库
use db1;
# 查看是否存在t_student表
show tables;
# 查看t_student表中是否存在数据
select * from t_student;

存在数据即MySQL主从复制同步成功。

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

相关推荐

(八) 初入MySQL主从复制

案例概况在企业应用中,成熟的业务通常数据量都比较大 单台MySQL在安全性、 高可用性和高并发方面都无法满足实际的需求 ,所以需要配置多台主从数据库服务器以实现读写分离来满足需求。

YCyjs的博客 2115

Linuxmysql主从复制

一、环境准备 主机名 IP 系统/MySQL版本 角色 centos-01 192.168.1.128 CentOS7.5/5.7.22 Master centos-02 192.168.1.129 CentOS7.5/5.7.22 slave 二、安装mysql 参考文章:msyql安装 三、主服务器Mast

Bertram的博客 609

Mysql主从复制

MySQL主从复制是一个异步的复制过程,底层是基于Mysql数据库自带的二进制日志功能。就是一台或多台MySQL数据库(slave,即从库)从另一台MySQL数据库(master,即主库)进行日志的复制,然后再解析日志并应用到自身,最终实现从库的数据和主库的数据保持一致。MySQL主从复制MySQL数据库自带功能,无需借助第三方工具。​ 二进制日志(BINLOG)记录了所有的 DDL(数据定义语言)语句和 DML(数据操纵语言)语句,但是不包括数据查询语句。

一名努力的大学生,希望可以帮到更多人 534

Mysql主从复制

一.Mysql主从复制介绍。

2301_76858832的博客 5952

MySQL--主从复制

主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;主数据库一般是准实时的业务数据库。主从复制原理、主-从-从架构、主-主从-从架构、互为主从架构

恐龙让Lee的博客 8115

Linux-MySQL主从复制

一、Linux下安装MySQL 1、先检查系统是否有MySQL rpm -qa | grep mysql 2、下载MySQL的repo源 先切换到/usr/local路径下 wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 3、安装mysql-community-release-el7-5.noarch.rpm sudo rpm -ivh mysql-community-release-el7-5.noarc

查查攻城狮 1051

Linuxmysql如何进行主从复制

就是一台或多台MySQL数据库 从另一台MySQL数据库进行日志的复制,然后再解析日志并应用到自身,最终实现 从库 的数据和 主库 的数据保持一致。此日志对于灾难时的数据恢复起着极其重要的作用,MySQL主从复制, 就是通过该binlog实现的。(4)简单来说就是一台服务器中的mysql数据库根据另一台服务器中的mysql数据库的日志文件进行分析然后执行sql语句进行数据复制。(1)MySQL数据库默认是支持主从复制的,不需要借助于其他的技术,我们只需要在数据库中简单的配置即可。

qq_32100687的博客 578

linuxmysql主从复制操作流程】

MySQL主从复制是一个强大且灵活的功能,可以显著提高数据库的可用性和可扩展性。通过遵循上述步骤,您可以轻松地在Linux下实现MySQL主从复制。重要的是,要仔细规划配置,确保网络连通性和安全性,以及定期监控复制状态以维护数据一致性。

L-Blog 1100

Linux下搭建Mysql主从复制

Linux环境下搭建Mysql主从复制

weixin_42901201的博客 138

Linux搭建MySql主从复制

Linux搭建MySql主从复制 概述: 复制是指将主数据库的DDL 和 DML 操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。 MySQL支持一台主库同时向多台从库进行复制, 从库同时也可以作为其他从服务器的主库,实现链状复制。 优点: 主库出现问题,可以快速切换到从库提供服务。 可以在从库上执行查询操作,从主库中更新,实现读写分离,降低主库的访问压力。 可以在从库中执行备份,以避免备份期间影响主库的服务。 1、创建一台全

未来的博客 415

mysql windows和linux主从复制_MySql主从复制(windows主,linux副)

1.windows :8.0.16linux:8.0.162.windows下安装msi版本的数据库 :mysql-installer-community-8.0.16.0.msi安装教程参考:https://blog.csdn.net/nowzhangjunzhe/article/details/82145754安装完成后首先要看看在其他电脑上能否远程连接到本机的mysql.如果远程telnet...

weixin_32159633的博客 305

Linux配置mysql主从复制

systemctl restart mysqld 重启mysql服务Mysql主从复制linux里面部署mysql主库Master 192.168.162.138 contos 7从库Slave 192.168.162.137 contos 7测试log-bin=mysql-bin町[必须]启用二进制日志第三步:登录Mysql数据库,执行下面SQL第三步:登录Mysql数据库,执行下面SQL。

Relievedz的博客 568

LinuxMySQL安装和搭建MySQL主从复制和读写分离

前言 数据库,数据存储的仓库,项目中的数据流动都要存在数据库中,数据库是项目中不可缺失的一部分,数据的访问速度直接影响项目的性能,那怎么让数据库的读写更快一点呢? 主从复制+读写分离可以让读操作和写操作的压力分布在两个数据库中,下面就说一下在linux上搭建的全过程! MySQL的安装 下载mysql的repo源 wget http://repo.mysql.com/mysql-communi...

志不强者智不达,言不信者行不果 597

Linux搭建MySQL主从复制

这里写自定义目录标题一、概述复制原理复制优势二、搭建步骤1、安装MySql2、配置MySQL2.1、安装vim编辑(也可以直接用vi编辑)2.2、编辑配置文件(并将下面内容配置到my.cnf文件中)2.3、配置完后重启MySql2.4、验证MySql是否配置成功2.5、创建同步数据账户,并进行授权操作3、配置从节点3.1、克隆虚拟机(也可以创建另一台新的虚拟机)3.2、配置从节点MySQL配置文件3.3、重启MySQL3.4、验证配置是否成功4、同步配置4.1、为从节点设置主节点4.2、开始同步4.3、查看

shi_AXing_a的博客 745

mysql在服务器中的主从复制Linux

从库I/O线程:当START SLAVE语句在从库开始执行之后,从库创建一个I/O线程,该线程连接到主库并请求主库发送binlog里面的更新记录到从库上。从库I/O线程读取主库的binlog输出线程发送的更新并拷 贝这些更新到本地文件,其中包括relay log文件。MySQL主从复制是一个异步的复制过程,主库发送更新事件到从库,从库读取更新记录,并执行更新记录,使得从库的内容与主库保持一致。在从库中,当复制开始时,从库就会创建从库I/O线程和从库的SQL线程进行复制处理。配置mysql权限账户。

LIJINGPO的博客 1092

Linuxmysql主从复制+keepalived高可用

Linux两种安装mysql方式和主从复制配置一、通用安装mysql5.6版本官方下载地址:https://dev.mysql.com/downloads/mysql/官方安装文档:https://dev.mysql.com/doc/refman/5.6/en/binary-installation.html1. 检查是否安装过,如果是则删除2. 创建mysql用户和组3. 解压mysql4. 创...

preject_jone 1077

Linux 安装MySQL数据库 与 MySQL 主从复制配置详解

安装数据库《Linux环境下安装MySQL步骤详解》 文章目录:一、 Linux环境下安装MySQL步骤详解安装MySQL 整个MySQL安装分为以下几部分:一、前言二、安装CentOS 7三、下载MySQL安装包四、卸载Maria DB五、创建MySQL用户和组六、MySQL安装前准备七、配置my.cnf文件设置mysql客户端默认字符集设置mysql的安装目录设置mysql数据库的数据的存放目录允许最大连接数服务端使用的字符集默认为8比特编码的latin1字符集创建新表时将使用的默认存储引擎八、开始安装

禧年 554

linux启动mysql_主从复制具体实现和linux安装mysql

主从复制具体实现一. Linux 下载 MySQL版本 centos 8 、mysql 5.7.17 、windows 10 、xshell 6 、xftp 6 、Navicat 12准备安装包获取官网下载地址(选择 linux 通用版,mysql 对应版本)https://dev.mysql.com/downloads/mysql/mysql 版本一定要与主机 mysql 版本保持一致用 xft...

weixin_39848347的博客 64

LinuxMySQL 主从复制的配置方法

MySQL主从复制配置指南:本文详细介绍了在Linux环境下配置MySQL主从复制的完整步骤,包括主库和从库的配置修改、用户权限设置、数据同步验证等关键环节。通过清晰的代码示例和配置说明,帮助读者快速搭建高可用数据库架构,并提供了Java Spring Boot集成示例,展示如何在实际应用中实现读写分离。文章还涵盖了常见问题排查方法,适合开发者和DBA参考实践。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+
上一篇: Linux的MySQL日志
下一篇: Linux之shell脚本入门
逾非时
博客等级 码龄2年 545粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值