搭建Mysql主从架构

news2024/11/25 16:45:25

一、主从

1、备份的三种类型

  1. 热备份
  2. 逻辑备份
  3. 物理备份

二、集群

1、概述

高可用集群(HA)是指通过特殊软件,把独立的服务器连接起来,组成一个能够提供故障间切换功能的集群。

2、标准

可用性级别

年宕机时间

描述

99%

3.65天

基本可用系统

99.9%

8.76小时

可用系统

99.99%

52.6分钟

高可用系统

99.999%

5.3分钟

抗故障系统

99.9999%

32秒

容错系统

3、原理

replication可以实现将数据从一台数据库服务器(master)复制到多台数据库服务器。

4、描述

  1. slave端的io线程发送请求给master端的binlog dump线程。
  2. master端的binlog dump线程获取二进制日志信息(文件名和位置信息)发送给slave端的io线程。
  3. slave端的io线程获取到内容,依次写到slave端relaylog(中继日志)并把master端的binlog文件名和位置记录到master。info里头。
  4. slave端的sql线程检测到relaylog中的内容更新,就会解析relaylog中的更新内容,并执行这些操作,从而达到和master端数据一致

5、主从复制架构体系

(1)双机热备 主从复制

默认情况下master接受读写,从服务器只接受读。

 (2)级联复制

可以分担读的压力

中间服务器出现故障,就瘫痪了

(3)并联复制 ⼀主多从

解决单点故障

承担更多的读的压⼒

从服务器都从主服务器读取数据,master服务器压⼒⼤

 

(4)双主复制

看起来可以同时接收读写,实际运作中只有⼀台服务器在⼯作,另外⼀台只接受读

 

 6、编写脚本安装mysql服务

(1)主服务器

vim mysql.sh

#!/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

(2)从服务器

[root@cong ~]# vim mysql.sh

#!/bin/bash
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.33-linux-glibc2.12-x86_64.tar

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

​

7、编写配置文件

(1)主服务器

[root@zhu ~]# vim /usr/local/mysql/my.cnf

[mysqld]

basedir=/usr/local/mysql/

datadir=/usr/local/mysql/data/

socket=/tmp/mysql.sock

port=3306

log-error=/usr/local/mysql/data/db01-master.err

log-bin=/usr/local/mysql/data/binlog

server-id=10

character-set-server=utf8mb4
[root@zhu ~]# chkconfig --add mysql8

[root@zhu ~]# chkconfig mysql8 on

[root@zhu ~]# chkconfig --list

(2)从服务器

[root@zhu ~]# vim /usr/local/mysql/my.cnf

[mysqld]

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

socket=/tmp/mysql.sock

port=3310

log-error=/usr/local/mysql/data/db01-slave.err

relay-log=/usr/local/mysql/data/relaylog

server-id=11

character_set_server=utf8mb4

8、重启服务、开机自启

[root@mysql001 ~]# service mysql8 restart

[root@mysql001 ~]# chkconfig --add mysql8

[root@mysql001 ~]# chkconfig mysql8 on

[root@mysql001 ~]# chkconfig

三、主从复制之数据同步

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

2、master和slave都安装rsync

yum -y install rsync

3、同步master中的data到slave对应位置

rsync -av /usr/local/mysql/data root@10.1.1.110:/usr/local/mysql/

4、启动主服务器和从服务器

[root@mysql001 ~]# service mysql8 start

[root@slave ~]# service mysql8 start

[root@mysql001 ~]#/usr/local/mysql/bin/mysql -P3310 -pZhang_Min_666

四、主从复制的实现

1、master创建授权账号

mysql> create user 'slave'@'10.1.1.%'

identified by 'slave_123';

Query OK, 0 rows affected (0.02 sec)
mysql> grant replication slave on *.* to

'slave'@'10.1.1.%';

Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;

 

2、在master中锁表,然后查看⼆进制⽂件和位置

mysql> flush tables with read lock;

 3、在从服务器中,使⽤change master to 指定主服务器,并实现数据同步。

[root@slave ~]# /usr/local/mysql/bin/mysql -p3310 -pZhang_Min_666

 

change master to master_host='10.1.1.100',

master_user='slave',

master_password='slave_123', master_port=3306,

master_log_file='binlog.000004',

master_log_pos=1092;

4、启动slave数据同步,查看状态

mysql> start slave;

mysql> show slave status\G

 

5、解锁文件

mysql> unlock tables;

Query OK, 0 rows affected (0.00 sec)

五、ssl⾮对称加密

1、获得远程master主机的公钥

mysql -uzhangmin -pabc_123 -h 192.168.71.166 -

P3306 --get-server-public-key



quit

2、登录slave服务器本地的数据库

mysql -pZhang_Min_666 -P3310

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.coloradmin.cn/o/1986036.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蜂窝网络架构

2G/3G 4G eNB RF-RRU eCPRI RRU-BBU 光纤 5G From 38.300 AMF处理信令等,UPF 用户面,后面还有SMF

Day20 文件IO

feof(FILE*) 用于检测文件是否到达结尾 ferror(FILE*) 检测文件是否发生错误 clearerr(FILE*) 清除错误 一.文件IO的特性 1 没有缓存区 2 操作对象不在是流,而是文件描述符 3…

埃拉托斯特尼筛法,厄拉多塞筛算法,C#实现

埃拉托斯特尼筛法,厄拉多塞筛算法 这个 很多地方的定义不一样。 虽然名字相同,但是具体的定义还是有差距。 有的地方描述的是: 厄拉多塞筛算法(Eratosthenes Sieve)是一种求素数的方法,由古希腊数学家厄拉多塞提出。它的原理是&…

如何下载学术论文、专利(最全)——包含免费方法

经常有同学问,如何下载论文 一、中文论文 万方(在校生一般学校已购买权限,具体可看自己学校图书馆) 网址:https://www.wanfangdata.com.cn/ 2. 知网(在校生一般学校已购买权限,具体可看自己学…

【ML】transform 之 encode 及其实现细节

transform 之 encode 及其实现细节 1. transform (seq2seq) 是什么2. transform (seq2seq) 具体如何实现3. transform (seq2seq) 可以解决哪些类型的问题4. 补充问题4.1 残差连接(Residual Connection)是什么如何实现4.1.2 残差连接的具体实现&#xff1…

一文搞懂后端面试之MySQL MVCC【中间件 | 数据库 | MySQL | 隔离级别 | Read View】

为什么需要MVCC 锁本身就是用于并发控制的,那么为什么InnoDB还要引入MVCC,读写都加锁不就可以控制住并发吗? 锁确实可以,但是性能太差。如果是纯粹的锁,那么写和写、读和写、读和读之间都是互斥的。如果是读写锁&…

C#TreeView控件应用

1、代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace TestApp…

两数之和 II(LeetCode)

题目 给你一个下标从 1 开始的整数数组 ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 的两个数。 如果设这两个数分别是 和 ,则 。 以长度为 的整数数组 形式返回这两个整数的下标 和 。 你可以假设每个输入…

【从零开始一步步学习VSOA开发】并行RPC服务端

并行RPC服务端 概念 之前 RPC 使用方式中的所有回调函数都是串行执行的,VSOA 为 C 语言开发版本提供了并行处理 RPC 请求的功能,开发者可以通过并发 RPC 相关接口创建线程池并行处理 RPC 请求。并发服务模式通过多线程来实现,能有效提高响应…

8.06 C++作业

使用类定义实现隔离储存计算 1.头文件 #ifndef CLASS_H #define CLASS_H #include <iostream> using namespace std;class rect { private:int width;int height; public:void init(int width,int height);void show();void setw(int w);void seth(int h); };#endif //…

gradle安装及配置

文章目录 一、下载安装包二、解压文件三、环境变量配置四、验证安装结果五、配置国内源六、IDEA配置 一、下载安装包 从gradle官网下载安装包&#xff0c;官网地址为&#xff1a;https://gradle.org/releases/ 我们只需要下载编译好的文件即可。 二、解压文件 解压文件到指定…

睡前故事—星际旅行者

文章目录 欢迎来到《Bedtime Stories Time》。这是一个我们倾听、放松、并逐渐入睡的播客。感谢你收听并支持我们&#xff0c;希望你能将这个播客作为你睡前例行活动的一部分。今晚我们将讲述《星际旅行者》的故事。一个宁静的夜晚&#xff0c;希望你现在已经感到平静、放松&am…

PXE的使用

配置前提 1、挂载镜像源&#xff0c;可正常下载软件 [rootredhat-7 ~]# mkdir -p /rhel7 ----创建挂载点目录 [rootredhat-7 ~]# mount /dev/sr0 /rhel7/ ----挂载镜像源至挂载点&#xff08;临时挂载&#xff0c;重启失效&#xff09;[rootredhat-7 ~]# vim /etc/yum.repos.…

[CR]厚云填补_GridDehazeNet+

GridDehazeNet: An Enhanced Multi-Scale Network With Intra-Task Knowledge Transfer for Single Image Dehazing Abstract 雾霾等恶劣天气条件会降低自动驾驶和智能交通系统的性能。作为一种潜在的补救措施&#xff0c;我们提出了一种增强的多尺度网络&#xff0c;称为GridD…

鸿蒙(API 12 Beta2版)媒体开发【使用AudioRenderer开发音频播放功能】

音频播放开发概述 如何选择音频播放开发方式 系统提供了多样化的API&#xff0c;来帮助开发者完成音频播放的开发&#xff0c;不同的API适用于不同音频数据格式、音频资源来源、音频使用场景&#xff0c;甚至是不同开发语言。因此&#xff0c;选择合适的音频播放API&#xff…

conda pack迁移环境

文章目录 下载conda pack打包已有环境还原环境 因为有的服务器没有网络&#xff0c;如果想要安装自己的虚拟环境&#xff0c;就需要在有网络的服务器安装好环境后迁移到没有网络的服务器。conda-pack是一个命令行工具&#xff0c;用于打包 conda 环境&#xff0c;pip inatall和…

【Python实战】完美实现 WPS 会员功能,自动化处理 PDF 文档(建议收藏)

数字化办公已成常态&#xff0c;文档管理和处理是很多小伙伴的日常工作。 PDF&#xff08;Portable Document Format&#xff09;文档因其跨平台兼容性和格式固定性而备受青睐。 然而&#xff0c;对于非WPS会员用户而言&#xff0c;一些高级功能如批量处理、格式转换、添加水…

【SpringMVC】详细介绍SpringMVC的执行流程

目录 1. 概念 2.SpringMVC工作原理 3. springMVC的简单使用 1.在pom.xml中导入相关依赖 2.在web.xml中配置dispatcherServlet 3.创建springMVC.xml核心配置文件 1. 概念 什么是MVC&#xff1f; MVC是下面三个组件的简写&#xff0c;模型&#xff08;Model&#xff09;、视图…

mathtype7永久激活密钥咋子哪里获取?2024最新破解版下载附安装教程

在数字化时代&#xff0c;我们每天都与文字和符号打交道。无论是撰写论文、准备报告还是编写程序&#xff0c;数学公式的输入都是不可或缺的一环。但你有没有遇到过这样的困扰&#xff1a;在Word文档中编辑复杂的数学公式时&#xff0c;操作繁琐且不直观&#xff1f; 别担心&a…

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

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