企业级Mysql数据库复制——基于position、GTID的主从复制,半同步复制,全同步(组)复制

本文详细介绍了MySQL的数据库基础知识,包括数据库、表和主键概念,以及SQL语言的重要性。接着深入讲解了MySQL的事务、异步复制(基于position和GTID)、半同步复制和全同步(组)复制。通过实验展示了如何配置和管理这些复制类型,强调了不同复制模式下的数据一致性和性能特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.数据库基础

1.1 什么是数据库?

数据库是一个以某种有组织的方式存储的数据集合
理解数据库的一种最简单的办法是将其想象为一个文件柜,此文件柜是一个存放数据的物理位置,不管数据是什么以及如何组织的。
数据库(database) 保存有组织的数据的容器(通常是一个文件或一组文件)

数据库软件应称为DBMS(数据库管理系统),数据库是通过DBMS创建和操纵的容器。数据库可以是保存在硬设备上的文件,但也可以不是。在很大程度上说,数据库究竟是文件还是别的什么东西并不重要,因为你并不直接访问数据库;你使用的是DBMS,它替你访问数据库。

1.2 表

表是一种结构化的文件,可用来存储某种特定类型的数据
表可以保存顾客清单、产品目录,或者其他信息清单

数据库中的每个表都有一个名字,用来标识自己
此名字是唯一的,这表示数据库中没有其他表具有相同的名字
虽然在相同数据库中不能两次使用相同的表名,但在不同的数据库中却可以使用相同的表名

1.3 主键

主键(primary key)一一列(或一组列),其值能够唯一区分表中每个行,唯一标识表中每行的这个列(或这组列)称为主键
创建的每个表具有一个主键,以便于以后的数据操纵和管理
主键值规则(MySQL本身强制实施):
任意两行都不具有相同的主键值;
每个行都必须具有一个主键值(主键列不允许NULL值)

2. 什么是SQL?

SQL是结构化查询语言(Structured Query Language)的缩写,SQL是一种专门用来与数据库通信的语言,与其他语言(如Java和Visual Basic这样的程序设计语言)不一样,SQL由很少的词构成,设计SQL的目的是很好地完成一项任务,即提供一种从数据库中读写数据的简单有效的方法

SQL的优点
SQL不是某个特定数据库供应商专有的语言。几乎所有重要的DBMS都支持SQL,所以,学习此语言使你几乎能与所有数据库打交道。
SQL简单易学。它的语句全都是由描述性很强的英语单词组成, 而且这些单词的数目不多。
SQL尽管看上去很简单,但它实际上是一种强有力的语言,灵活 使用其语言元素,可以进行非常复杂和高级的数据库操作

3.什么是MySQL?

Mysql是一种关系型数据库,特点是将这些数据保存在不同的二维表中,并将这些表放入数据库,这样可以增加它的读取速度
数据的所有存储、检索、管理和处理实际上是由数据库软件——DBMS(数据库管理系统)完成的。MySQL是一种DBMS,即它是一种数据库软件

广泛使用MySQL原因:
成本——MySQL是开放源代码的,一般可以免费使用(甚至可以免费修改)
性能——MySQL执行很快(非常快)
可信赖——某些非常重要和声望很高的公司、站点使用MySQL,这些公司和站点都用MySQL来处理自己的重要数据
简单——MySQL容易安装和使用

4.mysql的事务

  • 事务就是一组原子性的SQL查询,或者说一个独立的工作单元
  • 如果数据库引擎能够成功地对数据库进行该组查询的全部语句,那么就执行该组查询,如果其中有任何一条语句因为崩溃或者其他原因无法执行,那么所有的语句都不会执行,也就是说,事务内的语句,要么全部执行成功,要么全部执行失败

5.mysql的异步复制(基于二进制日志文件位置position的主从复制)

异步复制(主从复制)master节点不关心slave节点的状态,只需要写自己的数据即可
能不能完成复制看slave节点的io线程和sql线程是否开启

主从复制需要做的动作:

主库开启binlog日志(设置log-bin参数)
主从server-id不同
从库服务器能同步主库

主从复制的原理:
1.在主库上把数据更改记录到二进制日志(Binary Log)中(这些记录被称为二进制日志事件)
2.备库将主库上的日志复制到自己的中继(Relay Log)日志中
3.备库读取中继日志中的事件,将其重放到备数据库之上(从库生成两个线程,一个i/o线程,一个SQL线程,i/o线程去请求主库的binlog,sql线程进行日志回放来复制)
在这里插入图片描述
实验:
server1(172.25.254.1)数据库的master节点
server1(172.25.254.2)数据库的slave节点

(1)从物理机上面的共享目录下获取mysql安装包到server1(master节点)和server2(slave节点)
在这里插入图片描述
在这里插入图片描述
(2)server1和server2上解压mysql安装包,删除不用的包,最终只有5个rpm包,进行安装
在这里插入图片描述
在这里插入图片描述
(3)配置主节点数据库,开启数据库

vim /etc/my.cnf
##在文件末写入:
log-bin=mysql-bin
server-id=1	##每个节点的序号是唯一的
systemctl start mysqld

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(4)开启mysqld服务后生成一个临时密码,使用临时密码进行数据库安全初始化
自己设置数据库的密码,这个密码必须含有特殊字符,英文字母的大小写和数字

cat /var/log/mysqld.log | grep password	##查看临时密码
mysql_secure_installation	##进行安全初始化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值