主从备份(复制)

一、备份的三种类型

备份的三种主要类型包括热备份、逻辑备份和物理备份,每种备份类型都有其特定的应用场景和优缺点。

1. 热备份

定义
热备份是在数据库或系统处于正常运行状态下进行的备份。这种备份方式允许在不停机的情况下对数据库或系统数据进行保护,减少了备份操作对业务连续性的影响。

特点

  • 在线性:在数据库或系统正常运行时进行,无需停机。
  • 数据一致性:需要确保在备份过程中数据的一致性,通常通过数据库的事务日志或日志链来实现。
  • 资源占用:可能会占用较多的系统资源,如CPU、内存和I/O资源。
  • 恢复能力:在发生故障时,可以利用热备份快速恢复数据,减少业务中断时间。

适用场景

  • 需要高可用性和业务连续性的场景。
  • 数据库或系统无法承受长时间停机进行备份的情况。

2. 逻辑备份

定义
逻辑备份是通过导出数据库的逻辑结构和数据内容来进行备份的方法。它通常涉及对数据库中的表、视图、存储过程等逻辑对象进行备份。

特点

  • 数据独立性:逻辑备份与数据库的物理存储结构无关,可以在不同的数据库管理系统之间进行迁移。
  • 灵活性:可以选择性地备份和恢复特定的逻辑对象,如单个表或视图。
  • 可读性:备份文件通常是文本格式,易于查看和编辑。
  • 备份和恢复时间:备份和恢复过程可能相对较慢,因为需要遍历数据库的逻辑结构并生成或重建逻辑对象。

适用场景

  • 需要进行数据库迁移或版本升级的场景。
  • 需要对部分数据进行备份和恢复的场景。

3. 物理备份

定义
物理备份是直接复制数据库的物理文件(如数据文件、日志文件等)来进行备份的方法。它保留了数据库的物理存储结构和数据内容。

特点

  • 高效性:备份和恢复过程通常较快,因为直接操作物理文件。
  • 数据一致性:物理备份可以确保备份文件与原始数据库之间的高度一致性。
  • 空间占用:可能占用较多的存储空间,特别是进行完整备份时。
  • 恢复能力:在发生故障时,可以利用物理备份快速恢复整个数据库或特定的数据文件。

适用场景

  • 需要快速恢复整个数据库的场景。
  • 数据库规模较大,且对备份和恢复时间有较高要求的场景。

综上所述,热备份、逻辑备份和物理备份各有其特点和适用场景。在实际应用中,可以根据具体需求和业务连续性要求选择合适的备份类型或组合使用多种备份类型来确保数据的安全性和可恢复性。

二、情景

1、⼊职企业,发现企业架构为⼀主多从,但是两台从服务器和主库不同
步,但是每天会全库北⽅主服务器上的数据到从服务器,由于数据量
不是很⼤,所以没有⼈处理主从不同步的问题
2、技术
熟悉 mysql 数据库常⻅主从架构
理解 mysql 主从架构实现原理
掌握 mysql 主从架构的搭建
3、业务场景
企业对数据安全性越来越重视,由于常规备份不能实时记录
数据库的所有状态,为了能够保障数据库实时备份冗余,希
望将现有的单机数据库变成双机热备
4、目标
了解什么 mysql replication
理解 mysql replication 的架构原理
掌握 mysql 基本复制架构 m-s
了解和掌握基于 GTID 复制特点以及搭建
三、集群概述
1. 集群主要类型
1. ⾼可⽤集群 High Avaible Cluster HA cluster
2. ⾼可⽤集群是指通过特殊软件,把独⽴的服务器连接起来,
组成⼀个能够提供故障切换( Fail Over )功能的集群
2. ⾼可⽤标准
3. 常⽤的集群架构
1. mysql replication
2. mysql cluster
3. mysql group replication MGR
4. Maradb Galera CLuster
5. MHA|keepalived|HeatBeat|Lvs Haproxy 等技术构建⾼可⽤
集群
4.
复制原理
1. replication, 可以实现将数据从⼀台数据库服务器( mster )复制
到多台数据库服务器 slave
2. 默认情况下, replication 属于异步复制,所以⽆需⻓连接 3. ⼯作原理
1. master 主服务器
2. slave 从服务器
3. 描述
1. slave 端的 io 线程发送请求给 master 端的 binlog dump 线
2. master 端的 binlog dump 线程获取⼆进制⽇志信息(⽂
件名和位置信息)发送给 slave 端的 io 线程
3. slave 端的 io 线程获取到内容,依次写到 slave relay log
(中继⽇志)并把 master 端的 binlog ⽂件名和位置记录
master info ⾥头,
4. slave 端的 sql 线程检测到 relaylog 中的内容更新,就会解
relaylog 中的更新内容,并执⾏这些操作,从⽽达到和
master 端数据⼀致
4.
复制架构体系 复制架构体系
1. 解决单点故障
2. 承担更多的读的压⼒
3. 从服务器都从主服务器读取数据, master 服务器压⼒⼤
1. 看起来可以同时接收读写,实际运作中只有⼀台服务器在⼯
作,另外⼀台只接受读
5. 1.
安装前的环境准备 安装前的环境准备
1. 普通的 ab 复制,最基本的架构 M-S
2. 两者数据库的的版本必须⼀致
4. 前期准备,克隆机器,设置 ip ,修改主机名称,关闭
NEtworkManager ,防⽕墙 selinux ,配置 yum 源,配置时间同步
时间同步是⾮常重要的设置
ntpdate cn.ntp.org.cn
主从复制核⼼思路
1. 思路
1. slave master 必须安装相同的 msyql 版本
# master 服务器中添加
sed -i '$a192.168.137.80
master.msyql.yuanyu.zhangmin' /etc/hosts
# slave 服务器中添加
sed -i '$a192.168.137.90
slave.msyql.yuanyu.zhangmin' /etc/hosts
ntpdate cn.ntp.org.cn 2. master 开启⼆进制⽇志, slave 必须开始 relay ⽇志
3. mster 端和 slava 端的 server-id 不能⼀致
4. se
1. master 必须创建⼀个复制⽤户
2. 保持 master slave 端初始数据⼀致
3. slave 端配置主从复制
2. 思路
1. 思路
主从复制之 master 配置
1. 编写 mysql 安装脚本
##
1. 上传 mysql 安装包到 mstaer slave
2. 编写脚本
#!/bin/bash
yum list installed |grep libaio
if [ $? ne 0 ]; then
yum -y install libaio
fi
echo libaio yes
rm -rf /etc/my.cnf echo remo my.cnf yes
tar -xf mysql-8.0.33-linux-glibc2.12-
x86_64.tar.xz
echo tar zx yes
cp -r ~/mysql-8.0.33-linux-glibc2.12-x86_64
/usr/local/mysql
echo copy file to /usr/local/mysql yes
mkdir /usr/local/mysql/mysql-files
echo mysql-files yes
grep mysql /etc/passwd
useradd -r -s /sbin/nologin mysql
chown mysql:mysql /usr/local/mysql/mysql-files
chmod 750 /usr/local/mysql/mysql-files
/usr/local/mysql/bin/mysqld --initialize --
user =mysql --basedir =/usr/local/mysql/
/usr/local/mysql/bin/mysql_ssl_rsa_setup --
datadir =/usr/local/mysql/data cp /usr/local/mysql/support-files/mysql.server
/etc/init.d/mysql8
sed -i '$aexport
PATH=/usr/local/mysql/bin:$PATH' /etc/profile
source /etc/profile
3. 编写配置⽂件
vim /usr/local/mysql/my.cnf
4. 重启服务
5. 设置开机启动
[root@mysql001 ~]# chkconfig --add
mysql8
[root@mysql001 ~]# chkconfig mysql8 on
[root@mysql001 ~]# chkconfig
注:该输出结果只显示 SysV 服务,并不包含
原⽣ systemd 服务。 SysV 配置数据
可能被原⽣ systemd 配置覆盖。
要列出 systemd 服务,请执⾏
'systemctl list-unit-files'
查看在具体 target 启⽤的服务请执⾏
'systemctl list-dependencies
[target]'
mysql8 0: 1: 2: 3: 4:
5: 6: 主从复制之 slave 从服务器软件的安装
1. 不需要初始化
2. 查看⽂件
3. 脚本
netconsole 0: 1: 2: 3: 4:
5: 6:
network 0: 1: 2: 3: 4:
5: 6:
相对于主服务器的安装与配置,从服务器不需要初始化,他的数
据都来⾃于主服务器,其他都⼀样
[root@slave ~] # ls
anaconda-ks.cfg mysql-8.0.33-linux-glibc2.12-
x86_64.tar.xz
initserver.sh mysql.sh
vim mysql.sh
#!/bin/bash
4. 配置⽂件
主从复制之数据同步
1. master 服务器同步到 slave 服务器
1. 停⽤ master 服务器 msyql 服务
service mysql8 stop 2. master 删除 /usr/local/mysql/data/auto.cnf 每安装⼀个
mysql 软件, data 数据⽬录都会产⽣⼀个 auto.cnf ⽂件,⾥⾯
是⼀个唯⼀性编号,相当于每个⼈的身份证编号
[root@mysql001 ~] # ls
/usr/local/mysql/data/auto.cnf
/usr/local/mysql/data/auto.cnf
[root@mysql001 ~] # cat
/usr/local/mysql/data/auto.cnf
[auto]
server-uuid =f6421989-5330-11ef-974f-
000c29ce78bb
[root@mysql001 ~] # rm -rf
/usr/local/mysql/data/auto.cnf
3. master slave 都安装 rsync
yum -y install rsync
4. 同步 master 中的 data slave 对应位置
rsync -av /usr/local/mysql/data
root@10.1.1.110:/usr/local/mysql/
5. 启动主服务器和从服务器 [root@mysql001 ~]# service mysql8 start
Starting MySQL.. SUCCESS!
[root@slave ~]# service mysql8 start
Starting MySQL.Logging to
'/usr/local/mysql/data/db01-slave.err'.
. SUCCESS!
6. 登录从服务器
[root@mysql001 ~] #
/usr/local/mysql/bin/mysql -P3310 -
pZhang_Min_666
mysql: [Warning] Using a password on the
command line interface can be insecure.
Welcome to the MySQL monitor. Commands end
with ; or \g.
Your MySQL connection id is 8
Server version: 8 .0.33 MySQL Community
Server - GPL
Copyright (c) 2000 , 2023 , Oracle and/or its
affiliates. ⽆法启动的⼏种情况
1. /etc/init.d/mysql8 不存在,可能没有复制
2. mysql 没有安装在 /usr/local/mysql
3. my.cnf 导致⽆法启动,格式
1. 安装路径
2. 数据⽬录
3. 套接字
4. 错误⽇志到底放在 data ⾥头
5. mysql 账户⽆法写⼊ /usr/local/mysql/
6. 将错误⽇志放在 data 就没有权限⽂件
7. 直接修改 /usr/local/mysql 的权限
Oracle is a registered trademark of Oracle
Corporation and/or its
affiliates. Other names may be trademarks of
their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to
clear the current input statement.
主从复制的实现
1. master 创建授权账号
2. master 中锁表,然后查看⼆进制⽂件和位置
3. 在从服务器中,使⽤ change master to 指定主服务器,并实现数
据同步
[ root @slave ~ ] # /usr/local/mysql/bin/mysql -
P3310 -pZhang_Min_666
mysql: [ Warning ] Using a password on the
command line interface can be insecure.
Welcome to the MySQL monitor. Commands end
with ; or \g .
Your MySQL connection id is 8
Server version: 8.0.33 MySQL Community Server -
GPL Copyright ( c ) 2000 , 2023 , Oracle and /or its
affiliates.
Oracle is a registered trademark of Oracle
Corporation and /or its
affiliates. Other names may be trademarks of
their respective
owners.
Type 'help;' or '\h' for help . Type '\c' to
clear the current input statement.
4. 启动 slave 数据同步,查看状态
mysql> start slave
mysql> show slave status \G
5. 常⻅⽂件 1. change-master-to 写错
6. 解锁⽂件
8.0 需要 ssl ⾮对称加密
1. 获得远程 master 主机的公钥
mysql -uzhangmin -pabc_123 -h 192.168.71.166 -
P3306 --get-server-public-key
quit
2. 登录 slave 服务器本地的数据库
stop slave
reset slave
change master to ...
mysql> unlock tables ;
Query OK, 0 rows affected ( 0.00 sec )
3. 停⽤ slave 服务,重新设置 slave 服务
mysql> stop slave;
mysql> reset slave;
mysql> change master to
master_host='192.168.71.166',
master_user='zhangmin',
master_password='abc_123', master_port=3306,
master_log_file='binlog.000006',master_log_pos=
866;
4. 启动 slave 服务
mysql> start slave
mysql> show slave status\G

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

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

相关文章

【Python】Django Web 框架

一、常用的Web开发框架 1.Django Django是一个由Python写成的开放源代码的Web应用框架。这套框架的主要目标是使开发复杂、数据库驱动的网站变得简单。Django注重组件的重用性和“可拔插性”、敏捷开发和DRY(Dont Repeat Yourself)法则 2.Flask Flask是一个微型的Python开发…

反序列化靶机实战serial(保姆级教程)

一.信息收集 靶机地址下载:https://download.vulnhub.com/serial/serial.zip 打开靶机,在kali虚拟机中进行主机存活探测 可以知道靶机ip地址为192.168.133.171 然后扫描端口 可以发现有一个22端口跟80端口 然后接下来用kali扫描它的目录 可以发现有一…

Django-Oscar开发独立站/外贸商城教程与问题记录

​特别说明: 本博客为个人开发Django-Oscar时的经验总结,方便后期维护!(第一次这么认真的记录这种大型项目,打个广告吧:本人可接单算法程序开发,包含深度学习和图像相关……等相关)…

Unity补完计划 之 音效

本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正 首先,音频这块组件较少,但是内容很重要,因为对于任何一款非特殊面向人群的游戏来说&a…

STM32入门三(开漏输出点亮外接的LED)

前面2章用的是推免输出, 推免输出: 输出端由两个晶体管构成:一个N沟道晶体管和一个P沟道晶体管。这两个晶体管一般不会同时导通,避免短路; 白话,就是输入高还是低,由你的GPIO 控制(GPIO 输出高就高&#xf…

【LeetCode 1991 找到数组的中间位置 / LeetCode 724 寻找数组的中心下标】中间索引问题

1991 题目描述 暴力解法1: 思路: 遍历下标,求出左边和和右边和比较两边是否相等相等直接返回值没有符合的返回 -1 class Solution {public int findMiddleIndex(int[] nums) {int lennums.length;//初始化一个变量 midIndex 为 -1&#xff…

C# Unity 面向对象补全计划 七大原则 之 接口隔离原则 (ISP) 难度:☆ 总结:大接口分成小的,然后该干啥干啥

本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正 本系列作为七大原则和设计模式的进阶知识,看不懂没关系 请看专栏:http://t.csdnimg.cn/mIitr,查漏补缺 1.接口隔离原则 (ISP) 这…

MySQL--查询数据

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 一、基本查询语句 MySQL从数据表中查询数据的基本语句为SELECT语句。其基本格式为&#xff1a; select {* | <字段列表>}[from <表1>,&l…

贝壳找房:基于OceanBase构建实时字典服务的实践 | OceanBase案例

贝壳找房作为领先的居住服务综合平台&#xff0c;一直在推进居住产业的数字化与智能化升级。该平台通过汇聚并赋能优质的服务者&#xff0c;旨在为中国广大家庭带来涵盖二手房买卖、新房交易、房屋租赁、家装、家居以及家庭服务等全方位、高质量且高效的居住服务体验。 在贝壳…

0803实操-数字取证

0803实操-数字取证 易失性数据收集 创建应急工具箱&#xff0c;并生成工具箱校验和&#xff0c;能在最低限度地改变系统状态的情况下收集易失性数据。 数据箱 使用md5sums.exe对工具目录中的所有文件进行计算 获取计算机本地日期和时间。输入命令date/t>timefront.txt和…

鸿蒙图形开发【3D引擎接口示例】

介绍 本实例主要介绍3D引擎提供的接口功能。提供了ohos.graphics.scene中接口的功能演示。 3D引擎渲染的画面会被显示在Component3D这一控件中。点击按钮触发不同的功能&#xff0c;用户可以观察渲染画面的改变。 效果预览 使用说明 在主界面&#xff0c;可以点击按钮进入不…

本科阶段最后一次竞赛Vlog——2024年智能车大赛智慧医疗组准备全过程——4Bin模型转化过程

本科阶段最后一次竞赛Vlog——2024年智能车大赛智慧医疗组准备全过程——4Bin模型转化过程 ​ 大家好&#xff0c;经过前几期的介绍&#xff0c;对于X3派上的Yolo模型部署&#xff0c;我们已经可以进行到最后一步了 ​ 今天给大家带来&#xff0c;转模型的关键步骤&#xff0…

学习进行到了第十七天(2024.8.5)

1.Mybatis的定义 数据持久化是将内存中的数据模型转换为存储模型&#xff0c;以及将存储模型转换为内存中数据模型的统称。例如&#xff0c;文件的存储、数据的读取以及对数据表的增删改查等都是数据持久化操作。MyBatis 支持定制化 SQL、存储过程以及高级映射&#xff0c;可以…

linux磁盘可视化分析工具

在 Linux 系统中&#xff0c;了解磁盘使用情况对于系统维护和优化至关重要。文件和目录随着时间的推移会占据大量磁盘空间&#xff0c;了解哪些部分占用的空间最多可以帮助我们更好地管理和清理磁盘。Baobab&#xff0c;也称为 GNOME Disk Usage Analyzer&#xff0c;是一款非常…

Radamsa:一款高性能通用模糊测试工具

关于Radamsa Radamsa是一款高性能的通用模糊测试工具&#xff0c;广大研究人员可以将其当作一个应用程序稳定性测试的测试用例生成工具。 工具运行机制 该工具使用简单&#xff0c;支持自定义脚本开发&#xff0c;可以用于测试程序对格式错误和潜在恶意输入的承受能力。它的工…

AGI思考探究的意义、价值与乐趣 Ⅴ

搞清楚模型对知识或模式的学习与迁移对于泛化意味什么&#xff0c;或者说两者间的本质&#xff1f;相信大家对泛化性作为大语言模型LLM的突出能力已经非常了解了 - 这也是当前LLM体现出令人惊叹的通用与涌现能力的基础前提&#xff0c;这里不再过多赘述&#xff0c;但仍希望大家…

国标GB28181视频平台LntonCVS视频融合共享平台视频汇聚应用方案

近年来&#xff0c;国内视频监控应用迅猛发展&#xff0c;系统接入规模不断扩大&#xff0c;导致了大量平台提供商的涌现。然而&#xff0c;不同平台的接入协议千差万别&#xff0c;使得终端制造商不得不为每款设备维护多个不同平台的软件版本&#xff0c;造成了资源的严重浪费…

【LeetCode】54. 螺旋矩阵

螺旋矩阵 题目描述&#xff1a; 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,5]示例 2&#xff1a;…

基于STM32的环境监测系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 初始化代码传感器读取代码应用场景 家居环境监测工业环境监测常见问题及解决方案 常见问题解决方案结论 1. 引言 环境监测系统在我们的日常生活和工作中变得越来越重要。通过监测空气质量、…

秃姐学AI系列之:丢弃法 + 代码实现 | 数值稳定性

丢弃法 动机 一个好的模型需要对输入数据的扰动鲁棒 使用有噪音的数据等价于Tikhonov正则丢弃法&#xff1a;在层之间加入噪音 正则都可以理解为它在控制模型不要过拟合&#xff0c;不要太大 丢弃法不在数据中增加噪音&#xff0c;转而在层中增加噪音&#xff0c;所以丢弃法…