首页 > 数据库 >快速实现 MySQL 主从复制

快速实现 MySQL 主从复制

时间:2023-05-01 12:55:24浏览次数:37  
标签:主从复制 Slave 数据库 MySQL master mysql 日志 快速

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

binlog(二进制日志)记录了所有的 DDL(数据定义语言)语句和 DML(数据操纵语言)语句,但是不包括数据查询语句。此日志对于灾难时的数据恢复起着极其重要的作用,MySQL 的主从复制, 就是通过 binlog 实现的。默认MySQL 是未开启该日志的。

MySQL的主从复制原理如下:

image

复制过程分为三步:

1). MySQL master 将数据变更写入二进制日志( binary log)

2). slave 将 master 的 binary log 拷贝到它的中继日志(relay log)

3). slave 重做中继日志中的事件,将数据变更反映它自己的数据


一、搭建前的准备工作

提前在两台 CentOS7 服务器上安装好 mysql ,本博客服务器信息如下:

Mysql角色 IP 数据库版本
Master 192.168.216.218 5.7.41
Slave 192.168.216.219 5.7.41

两台 CentOS7 服务器上的防火墙,都开通 3306 端口即可。

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-ports

二、Master 数据库操作

修改 Mysql 的配置文件 /etc/my.cnf ,在 [mysqld] 下增加以下内容:

log-bin=mysql-bin
server-id=218

image

然后重启 mysql 服务:

systemctl restart mysqld

登录到 mysql 中,创建一个专门用于数据同步的用户,并给予数据同步的权限:

# 此处创建了一个名称为 datasync 的用户,密码为 Sync@123456 ,并授予数据同步权限
GRANT REPLICATION SLAVE ON *.* to 'datasync'@'%' identified by 'Sync@123456';

查看 master 的状态,记录 File 和 Position 的值:

show master status \G;

image


三、Slave 数据库操作

修改 Mysql 的配置文件 /etc/my.cnf ,在 [mysqld] 下增加以下内容:

server-id=129

image

然后重启 mysql 服务:

systemctl restart mysqld

登录 mysql 数据库,然后设置 master 数据库的连接信息和同步位置:

change master to master_host='192.168.216.128',master_user='datasync',master_password='Sync@123456',master_log_file='mysql-bin.000002',master_log_pos=1641;

查看从库的状态,如果 Slave_IO_Running 和 Slave_SQL_Running 都是 Yes 的话,表示主从复制已经配置成功。

show slave status \G;

image

此时在 Master 库上,对数据库进行增删改,以及对表进行增删改,都会同步到 Slave 库中。


四、Slave_IO_Running 为 No 的解决方案

主要原因是 Slave 库所在服务器的 /var/lib/mysql/auto.cnf 文件中 server-uuid 的值,跟 Master 库所在服务器的相应文件中的 server-uuid 中的值相同导致的问题。之所以会相同,很可能是是因为虚拟机复制导致的问题。此时只需要将 Slave 服务器中的 /var/lib/mysql/auto.cnf 删除掉,然后重启 Slave 的 mysql 即可生成新的 auto.cnf 文件。

cat /var/lib/mysql/auto.cnf

image

systemctl restart mysqld

把上面的 Slave 库的操作再做一遍即可,查看主库状态,登录 Slave 的 mysql 数据库,设置 master 数据库的连接信息和同步位置,查看从库状态,直到看到 Slave_IO_Running 和 Slave_SQL_Running 都是 Yes 为止。

标签:主从复制,Slave,数据库,MySQL,master,mysql,日志,快速
From: https://www.cnblogs.com/studyjobs/p/17366404.html

相关文章

  • 自监督学习效果差?Meta AI 提出 Q-score 快速过滤错误样本!
    文|jxyxiangyu自监督学习指的是不依靠人工标注数据,直接从数据中学习到有用的特征表示。自监督学习中所采用的监督信息可以是“是否属于同一实例样本”的二分类标签(对比学习),也可以是一段连续的自然语言文本的下一个词(自回归语言模型)。然而自监督学习相关的论文看多了,感觉也就那么......
  • win10环境Windows环境下MYSQL5.7免安装版下载、配置(win10-x64位32g内存)
    win101-Windows环境下MYSQL5.7免安装版下载、配置(win10-x64位32g内存)  一、MYSQL免安装版下载二、解压安装三、设置登录、修改密码一、MYSQL免安装版下载1、下载链接:https://downloads.mysql.com/archives/community/.2、MySQL5.x版本以上需要收费,所以我选择了一个最新的(m......
  • MySql记录的一些使用方法和经验MariaDB
    MySql记录的一些使用方法和经验MariaDB MySQL数据库最初由瑞典的TomasUlin、AllanLarsson和MichaelWidenius创立。后来,该公司被SUNMicrosystems购买了,然后在2008年被Oracle购买。Oracle是一个主要提供商的商业数据库公司,这意味着MySQL现在是由Oracle控制并拥有的。然而,MyS......
  • MySQL Workbench和phpMyAdmin
    MySQLWorkbench是MySQL官方提供的一款开源的图形化管理工具,可以用于设计、开发、管理和维护MySQL数据库。MySQLWorkbench提供了一个集成开发环境(IDE),其中包含多个工具和功能,包括:1.数据建模工具:可以用于设计数据库模型、创建和编辑表、定义列、设置约束等。2.SQL编辑器:可以用......
  • MySQL基础命令 | ChatGPT问答记录
    问:MySQL基础命令ChatGPT:MySQL是一种流行的开源关系型数据库管理系统(RDBMS),以下是一些常见的MySQL基础命令:连接到MySQL服务器:mysql-uusername-ppassword-hhostname创建数据库:CREATEDATABASEdatabase_name;删除数据库:DROPDATABASEdatabase_name;选......
  • mysql几个主流版本介绍
    MySQL是一款非常流行的关系型数据库管理系统,历经多个版本。以下是MySQL的主流版本:MySQL5.7:该版本于2013年发布,包含了许多新特性和改进,如更好的性能、JSON支持、多源复制等。MySQL8.0:该版本于2018年发布,引入了原生JSON支持、更好地Unicode支持、解决云端部署时结构化数据需......
  • 制作一个包含Centos7+Nginx+Mysql8+JDK8的Docker镜像
    1.创建一个文件夹用于构建Docker镜像:mkdirmy-docker-imagecdmy-docker-image2.在该文件夹中创建一个名为Dockerfile的文件。vimDockerfile3.在Dockerfile中编写以下代码:FROMcentos:7#RUNsed-i's/deb.debian.org/mirrors.aliyun.com/g'/etc/apt/sources.list......
  • Ansible快速入门
    Ansible快速入门1.1什么是AnsibleAnsible是一个IT自动化的配置管理工具,自动化主要体现在:Ansible集成了丰富模块,以及强大的功能组件,可以通过一个命令行完成一系列的操作。进而能减少我们重复性的工作,以提高工作的效率。1.2Ansible主要功能批量执行远程命令,可以对N多台主机......
  • 快速上手Linux核心命令(十):Linux安装软件
    目录前言rpmrpm包管理器yum自动化RPM包管理工具前言这期呢主要说一说Linux中包软件管理相关命令,这一期的命令虽然只有两个。但软件包的安装和卸载都是我们平常最常用的,需要熟练掌握。rpm和yum是CentOS主要的包软件管理。两个命令各有用处,①yum需要互联网,yum会去网上的yum......
  • mysql -- 自带命令及工具
    ​ MySQL数据库不仅提供了数据库的服务器端应用程序,同时还提供了大量的客户端工具程序,如mysql、mysqladmin、mysqldump等等1.mysql命令mysql命令是使用最多的一个命令工具了,为用户提供一个命令行接口来操作管理MySQL服务器。mysql命令选项作用说明-u指定连接数据......