MyCat01——如何实现MySQL中的主从复制

1 问题

数据对于我们来说是一项最重要的资产,因为数据丢失带来的损失,对于一家公司来说,有时也是毁灭性的。

那么如何确保数据安全,不因断电或系统故障带来数据丢失呢?

当用户增加,对数据库的访问量也随之升高,如何提高数据库性能,降低访问量增长对数据带来的压力呢?

主从复制无疑是其中一个比较好的选择,将主库的数据复制到多个从库中,如果主库挂掉,从库的数据也是完整的,能够继续为用户提供服务。

同时可以对数据库进行读写分离操作,主库用于数据的写入,而从库则用于数据的读取。

2 binlog 日志

2.1 什么是 binlog

是 MySQL 中最重要的一种日志,它记录了 MySQL 所有数据的变更,并以二进制的形式存储在磁盘上,这些变更包括了所有的表结构变更(CREATE、ALTER TABLE…)以及表数据变更(INSERT、UPDATE、DELETE…),不包括 SELECT 。

也是实现主从复制的数据来源。

binlog 日志有三种记录格式:

  • statement 每次数据变更的 sql 都会被记录;
  • row 仅记录被修改的数据;
  • mixed 上述两种方式混合使用,一般的语句修改采用 statement,当全表更新时则采用 row,但是这种模式下无法使用 @@host name 函数。

2.2 binlog 日志相关的命令

登录进入到mysql的命令行中:

查看日志位置

show variables like '%log_bin%';

查看日志格式,这里的格式是指三种记录日志的格式

show variables like '%format%';

查看当前使用的日志文件

show master status;

3 主从复制的原理

从数据库中开启两个线程:

一个用于监控主数据库 binlog 日志的变化,如果有更新,就将其读取出来并写入到从数据库的 relay log 中;

另一个线程用于监控本地的 relay log 日志的变化,如果有更新,就将更新内容在本地执行一遍,这样就保证了从数据库与主数据库数据的一致性。

4 搭建主从复制

4.1 安装MySQL数据库

这里默认已经安装了至少两个MySQL数据库,如果有不清楚怎么安装的,可以在网上进行搜索。

4.2 开启数据库的 Binlog 日志

在主数据库 MySQL 的配置文件中增加两项配置

在从数据库也增加同样的配置,server-id 不能相同,需要改为 102。

设置完成后,需要重新启动数据库。

4.3 配置用于读取主数据库的用户

4.3.1 主数据库中的操作

首先,需要在主数据库中创建 binlog 日志的读用户,允许从数据库使用 slave 这个用户访问主数据库。

查看数据库中日志文件状态

show master status;

记住其中的两项参数,下边将在从库中需要使用。

在主数据库的命令行中执行:

grant replication slave on *.* to 'slave'@'%' identified by '123456';

4.3.2 从数据库中的操作

在从库中配置主库连接信息

命令中的各项信息,需要和主库中查询到的内容一致。

  • master_host 主库的IP地址
  • master_user 主库的用户
  • master_password 主库的密码
  • master_log_file 主库当前正在使用的 binlog 文件
  • master_log_pos 主库当前 binlog 文件位置

change master to master_host='192.168.1.2',master_user='slave',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=106;

查看从库状态

show slave status \G;

如果其中 Slave_IO_Running Slave_SQL_Running 参数都为YES时,表示同步正常。

否则需要查看是否是 防火墙的问题,或者是 数据库配置文件中 Server-id 相同导致的。

至此,只要在主库中做出修改数据的操作,从库中的数据将被自动刷新。

5 解除主从复制

进入到从库的命令行中,执行如下操作

mysql> stop slave;
Query OK, 0 rows affected (0.08 sec)mysql> reset slave all;
Query OK, 0 rows affected (0.18 sec)mysql> show slave status\G;
Empty set (0.00 sec)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/1780.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Soft-prompt Tuning for Large Language Models to Evaluate Bias 论文略读】

Soft-prompt Tuning for Large Language Models to Evaluate Bias 论文略读 INFORMATIONAbstract1 Introduction2 Related work3 Methodology3.1 Experimental setup 4 Results5 Discussion & Conclusion总结A Fairness metricsB Hyperparmeter DetailsC DatasetsD Prompt …

【Java】JVM学习(七)

JVM调优 堆空间如何设置 在分代模型中,各分区的大小对GC的性能影响很大。如何将各分区调整到合适的大小,分析活跃数据的大小是很好的切入点。 活跃数据的大小:应用程序稳定运行时长期存活对象在堆中占用的空间大小,也就是Full …

拧螺丝需求:递归算法的极致应用

前言 在一个平平无奇的下午,接到一个需求,需要给公司的中台系统做一个json报文重组的功能。 因为公司的某些业务需要外部数据的支持,所以会采购一些其它公司的数据,而且为了保证业务的连续性,同一种数据会采购多方的数…

Qt QSqlQueryModel详解

背景知识: Qt SQL的API分为不同层: 驱动层 驱动层 对于QT是基于C来实现的框架,该层主要包括QSqlDriver、QSqlDriverCreator、QSqlDriverCreatorbase、QSqlDriverPlugin and QSqlResult。这一层提供了特定数据库和SQL API层之间的底层桥梁…

Servlet(下篇)

哥几个来学 Servlet 啦 ~~ 这个是 Servlet(上篇)的链接, (2条消息) Servlet (上篇)_小枫 ~的博客-CSDN博客https://blog.csdn.net/m0_64247824/article/details/131229873主要讲了 Servlet的定义、Servlet的部署方式、…

C语言-基础语法学习-3 二级指针

目录 二级指针二级指针的定义和声明二级指针的初始化二级指针的使用二级指针和函数参数二级指针和动态内存分配数组指针二维数组二维数组的初始化二维数组与指针二维数组的遍历 二级指针 当涉及到多级指针时,C语言的灵活性和强大的指针功能可以得到充分的发挥。二级…

原生HTML+CSS+JS制作自己的导航主页

如果你想使用原生HTML、CSS和JS制作自己的导航主页&#xff0c;你可以按照以下步骤进行操作&#xff1a; 先看效果图&#xff1a; 创建HTML文件&#xff1a;首先&#xff0c;创建一个新的HTML文件&#xff0c;并在文件中添加基本的HTML结构。你可以使用<!DOCTYPE html>…

R语言复现一篇6分的孟德尔随机化文章

上一期我们对孟德尔随机化做了一个简单的介绍&#xff0c;今天我们来复现一篇6分左右的使用了孟德尔随机化方法的文章&#xff0c;文章的题目是&#xff1a;Mendelian randomization analysis does not reveal a causal influence of mental diseases on osteoporosis&#xff…

基于tensorflow深度学习的猫狗分类识别

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

排序算法——归并排序(递归与非递归)

归并排序 以升序为例 文章目录 归并排序基本思想核心步骤递归写法实现代码 非递归处理边界情况实现代码 时间复杂度 基本思想 归并排序是建立在归并操作上的一种有效的排序算法&#xff0c;该算法是采用分治法的一个非常典型的应用&#xff1a;将已有序的子序列合并&#xff…

《C++ Primer》--学习7

顺序容器 容器库概览 迭代器 与容器一样&#xff0c;迭代器有着公共的接口&#xff1a;如果一个迭代器提供某个操作&#xff0c;那么所有提供相同操作的迭代器对这个操作的实现方式都是相同的。 迭代器范围 一个迭代器范围是由一对迭代器表示&#xff0c;两个迭代器分别指向…

IM即时通讯APP在聊天场景中的应用

即时通讯&#xff08;IM&#xff09;应用可以满足人们随时随地进行文字、语音、图片、视频等多媒体信息的传递需求&#xff0c;为个人和企业提供了高效、便捷的沟通方式。在企业中&#xff0c;IM即时通讯APP更是发挥着重要的作用&#xff0c;促进了协作和团队工作的效率提升。以…