【MySQL 主从复制、分离解析】

2023-05-16

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、MySQL主从复制
    • 1.主从复制架构和原理
    • 1..1服务性能扩展方式
    • 1.2 MySQL的扩展
    • 1.2.1什么是读写分离
    • 1.2.2为什么要读写分离
    • 1.2.3什么时候要读写分离
    • 1.2.4主从复制与读写分离
    • 1.3复制的功用
    • 1.4复制架构
    • 1.5主从复制原理
  • 二、实际操作
    • 1.环境配置
    • 2.初始环境准备
    • 3.搭建mysql主从复制
    • 3.1配置主服务器(192.168.239.3)
    • 3.2配置从服务器 (192.168.239.4、192.168.239.6)
    • 3.3验证主从同步
    • 4.搭建Amoeba 实现读写分离(192.168.239.5)
    • 4.1安装Java环境
    • 4.2配置amoeba
    • 4.3在客户端测试(192.168.239.7)


一、MySQL主从复制

1.主从复制架构和原理

1…1服务性能扩展方式

向上扩展,垂直扩展

向外扩展,横向扩展

1.2 MySQL的扩展

读写分离

复制:每个节点都有相同的数据集,向外扩展,基于二进制日志的单向复制

1.2.1什么是读写分离

1.读写分离基本原理

基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。

2.MySQL 读写分离原理

读写分离就是只在主服务器上写,只在从服务器上读。基本的原理是让主数据库处理事务性操作,而从数据库处理 select 查询。数据库复制被用来把主数据库上事务性操作导致的变更同步到集群中的从数据库。

目前较为常见的 MySQL 读写分离分为以下两种:

1)基于程序代码内部实现

在代码中根据 select、insert 进行路由分类,这类方法也是目前生产环境应用最广泛的。 优点是性能较好,因为在程序代码中实现,不需要增加额外的设备为硬件开支;缺点是需要开发人员来实现,运维人员无从下手。 但是并不是所有的应用都适合在程序代码中实现读写分离,像一些大型复杂的Java应用,如果在程序代码中实现读写分离对代码改动就较大。

2)基于中间代理层实现

代理一般位于客户端和服务器之间,代理服务器接到客户端请求后通过判断后转发到后端数据库,有以下代表性程序。

(1)MySQL-Proxy。MySQL-Proxy 为 MySQL 开源项目,通过其自带的 lua 脚本进行SQL 判断。

(2)Atlas。是由奇虎360的Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。360内部使用Atlas运行的mysql业务,每天承载的读写请求数达几十亿条。支持事物以及存储过程。

(3)Amoeba。由陈思儒开发,作者曾就职于阿里巴巴。该程序由Java语言进行开发,阿里巴巴将其用于生产环境。但是它不支持事务和存储过程。

由于使用MySQL Proxy 需要写大量的Lua脚本,这些Lua并不是现成的,而是需要自己去写。这对于并不熟悉MySQL Proxy 内置变量和MySQL Protocol 的人来说是非常困难的。

Amoeba是一个非常容易使用、可移植性非常强的软件。因此它在生产环境中被广泛应用于数据库的代理层。

1.2.2为什么要读写分离

因为数据库的“写”(写10000条数据可能要3分钟)操作是比较耗时的。

但是数据库的“读”(读10000条数据可能只要5秒钟)。

所以读写分离,解决的是,数据库的写入,影响了查询的效率。

1.2.3什么时候要读写分离

数据库不一定要读写分离,如果程序使用数据库较多时,而更新少,查询多的情况下会考虑使用。

利用数据库主从同步,再通过读写分离可以分担数据库压力,提高性能。

1.2.4主从复制与读写分离

在实际的生产环境中,对数据库的读和写都在同一个数据库服务器中,是不能满足实际需求的。无论是在安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的。
因此,通过主从复制的方式来同步数据,再通过读写分离来提升数据库的并发负载能力。有点类似于rsync,但是不同的是rsync是对磁盘文件做备份,而mysql主从复制是对数据库中的数据、语句做备份。

1.3复制的功用

数据分布

负载均衡读操作

备份

高可用和故障切换

MySQL升级测试

1.4复制架构

在这里插入图片描述

在这里插入图片描述

1.5主从复制原理

在这里插入图片描述
首先client端(tomcat)将数据写入到master节点的数据库中,master节点会通知存储引擎提交事务,同时会将数据以(基于行、基于SQL、基于混合)的方式保存在"二进制日志"中
SLAVE节点会开启I/O线程,用于监听master的二进制日志的更新,一旦发生更新内容,则向master的dump线程发出同步请求
master的dump线程在接收到SLAVE的I/O请求后,会读取二进制日志文件中更新的数据,并发送给slave的I/O线程
SLAVE的I/o线程接收到数据后,会保存在slave节点的中继日志中
同时,slave节点中的sQL线程,会读取中继日志中的数据,更新在本地的mysql数据库中
最终,完成slave 复制master数据,达到主从同步的效果
1.5.1主从复制相关线程
主节点:

dump Thread:为每个Slave的I/O Thread启动一个dump线程,用于向其发送binary log events

从节点:

I/O Thread:向Master请求二进制日志事件,并保存于中继日志中

SQL Thread:从中继日志中读取日志事件,在本地完成重放

1.5.2跟复制功能相关的文件
master.info:用于保存slave连接至master时的相关信息,例如账号、密码、服务器地址等
relay-log.info:保存在当前slave节点上已经复制的当前二进制日志和本地relay log日志的对应关系
mariadb-relay-bin.00000#: 中继日志,保存从主节点复制过来的二进制日志,本质就是二进制日志
1.5.3 MySQL主从复制延迟
1、master服务器高并发,形成大量事务

2、网络延迟

3、主从硬件设备导致 cpu主频、内存io、硬盘io/

4、本来就不是同步复制、而是异步复制 从库优化Mysql参数。比如增大innodb_buffer_pool_size,让更多操作在Mysql内存中完成,减少磁盘操作。 从库使用高性能主机。包括cpu强悍、内存加大。避免使用虚拟云主机,使用物理主机,这样提升了i/o面性。 从库使用SSD磁盘 网络优化,避免跨机房实现同步

二、实际操作

1.环境配置



1 master服务器: 192.168.229.3
2 slave1服务器: 192.168.229.4
3 slave1服务器: 192.168.229.6
4 Amoeba服务器: 192.168.229.5

2.初始环境准备



1 #四台服务器上都初始化
2 systemctl stop firewalld
3 setenforce 0
 

3.搭建mysql主从复制

3.1配置主服务器(192.168.239.3)



1. #开启二进制日志
vim /etc/my.cnf
 
log-bin=master-bin        #开启二进制日志
binlog_format=MIXED       #二进制日志格式
log-slave-updates=true    #开启从服务器同步
 
2. #重启服务
systemctl restart mysqld.service 
 
3. #登入mysql,给从服务器在网段授权
mysql -uroot -p123456
grant replication slave on *.* to 'myslave'@'192.168.239.%' identified by '123456';
 
#刷新数据库
flush privileges;
 
#查看主服务器二进制文件
show master status;
开启二进制日志

3.2配置从服务器 (192.168.239.4、192.168.239.6)



 1 #开启二进制日志
 2 vim /etc/my.cnf
 3 server-id = 11 #slave1和slave2的id不能相同,我slave2设置的22
 4 relay-log=relay-log-bin
 5 relay-log-index=slave-relay-bin.index
 6  
 7 #重启服务
 8 systemctl restart mysqld.service 
 9  
10 #登入mysql,配置同步注意master_log_file和master_log_pos的值要和master查询的一致
11 mysql -uroot -p123456
12 change master to master_host='192.168.239.4',master_user='myslave',master_password='123456',master_log_file='master-bin.000001',master_log_pos=604;
13  
14 #启动同步,如果报错,执行restart slave试试
15 start slave;
16 show slave status\G;
17 ##以下两个必须要是YES
18 #Slave_IO_Running: Yes
19 #Slave_SQL_Running: Yes
20  
21  
22 #########slave2:192.168.239.6与以上操作相同######

3.3验证主从同步



1 #在主服务器上创建一个库
2 create database kgc;
3  
4 #在从服务器上查看
5 show databases;

2.4搭建Amoeba 实现读写分离(192.168.239.5)
2.4.1安装Java环境

 1 ################安装 Java 环境###############
 2 1.#下载安装包:jdk-6u14-linux-x64.bin、amoeba-mysql-binary-2.2.0.tar.gz 
 3 cd /opt
 4  
 5 2.#把jdk复制到/usr/local下
 6 cp jdk-6u14-linux-x64.bin /usr/local/
 7  
 8 3.#赋予jdk权限并执行
 9 chmod +x /usr/local/jdk-6u14-linux-x64.bin
10 cd /usr/local/
11 ./jdk-6u14-linux-x64.bin  #一路回车到底,最后输入yes 自动安装
12  
13 4.#jdk改个名字
14 mv jdk1.6.0_14/ jdk1.6
15  
16 5.#配置环境并刷新
17 vim /etc/profile
18 export JAVA_HOME=/usr/local/jdk1.6
19 export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
20 export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin/:$PATH:$HOME/bin
21 export AMOEBA_HOME=/usr/local/amoeba
22 export PATH=$PATH:$AMOEBA_HOME/bin
23  
24 source /etc/profile      #刷新配置文件

4.搭建Amoeba 实现读写分离(192.168.239.5)

4.1安装Java环境



 1 ################安装 Java 环境###############
 2 1.#下载安装包:jdk-6u14-linux-x64.bin、amoeba-mysql-binary-2.2.0.tar.gz 
 3 cd /opt
 4  
 5 2.#把jdk复制到/usr/local下
 6 cp jdk-6u14-linux-x64.bin /usr/local/
 7  
 8 3.#赋予jdk权限并执行
 9 chmod +x /usr/local/jdk-6u14-linux-x64.bin
10 cd /usr/local/
11 ./jdk-6u14-linux-x64.bin  #一路回车到底,最后输入yes 自动安装
12  
13 4.#jdk改个名字
14 mv jdk1.6.0_14/ jdk1.6
15  
16 5.#配置环境并刷新
17 vim /etc/profile
18 export JAVA_HOME=/usr/local/jdk1.6
19 export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
20 export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin/:$PATH:$HOME/bin
21 export AMOEBA_HOME=/usr/local/amoeba
22 export PATH=$PATH:$AMOEBA_HOME/bin
23  
24 source /etc/profile      #刷新配置文件

4.2配置amoeba



############## 安装amoeba ###########
 
1.#在/usr/local目录下创建amoeba目录
mkdir /usr/local/amoeba
 
2.#切换至opt解压amoeba
cd /opt/
tar zxvf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba
 
cd /usr/local/ 切换至目录查看
 
 
3.#给目录/usr/local/amoeba赋予执行权限
chmod -R 755 /usr/local/amoeba/
 
4.#运行amoeba
/usr/local/amoeba/bin/amoeba
 
 
###########配置 Amoeba读写分离 ####
5.#先在Master、Slave1mysql上开放权限给 Amoeba 访问
grant all on *.* to test@'192.168.239.%' identified by '123456';
flush privileges;
 
6.#备份amoeba配置
cd /usr/local/amoeba/conf/
cp amoeba.xml amoeba.xml.bak
cp dbServers.xml dbServers.xml.bak
 
7.#修改amoeba配置
vim amoeba.xml
30 <property name="user">amoeba</property>
#设置登录用户名
32<property name="password">123456</property>
#设置密码
 
115<property name="defaultPool">master</property>
#设置默认池为master
118<property name="writePool">master</property>
#设置写池
119<property name="readPool">slaves</property>
#设置读池
 
vim dbServers.xml 
23 <!-- <property name="schema">test</property> -->
#23行注释
26<property name="user">test</property>
#设置登录用户
28 <!--  mysql password -->
#删除
29<property name="password">123456</property>
#解决28注释,添加密码
 
45<dbServer name="master"  parent="abstractServer">
#服务池名
48<property name="ipAddress">192.168.239.3</property>
#添加地址
 
52<dbServer name="slave1"  parent="abstractServer">
55<property name="ipAddress">192.168.239.4</property>
复制6行 添加另一从节点
59<dbServer name="slave2"  parent="abstractServer">
62<property name="ipAddress">192.168.239.6</property>
 
66<dbServer name="slaves" virtual="true">
#定义池名
72<property name="poolNames">slave1,slave2</property>
#写上从节点名
 
8.#启动amoeba,并测试
amoeba start
netstat -ntap |grep java

vim amoeba.xml

vim dbServers.xml

4.3在客户端测试(192.168.239.7)



 1 1.#安装mariadb
 2 yum install mariadb mariadb-server.x86_64 -y
 3  
 4 2.#登入并查看数据库
 5 mysql -uamoeba -p123456 -h 192.168.239.5 -P8066
 6  
 7  
 8 3.#测试同步
 9 ##在主服务器服务器上新建表
10 use kgc;
11 create table info(id int(10),name char(40));
12 show tables;
13  
14 ##在客户机上,插入数据会同步到所有数据库中
15  use kgc;
16  insert into info values(1,'zhangsan');
17  
18 ##在主从服务器上查看
19  
20 4.#测试读写分离
21 #停止slave1和slave2的slave同步功能
22 stop slave;
23  
24 #在master、slave1和slave2上插入数据

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【MySQL 主从复制、分离解析】 的相关文章

  • STL vector map遍历失效,顺序容器和关联容器遍历时的erase()注意事项

    1 区别 关联容器 Associative Container xff1a 通过键 key 存储和读取元素的 xff08 vector list deque stack queue heap priority queue slist xff
  • 正向,反向,闪烁流水灯

    单片机 中简单的流水灯问题 include 34 reg52 h 34 void led delay void unsigned char i j for i 61 0 i lt 200 i 43 43 for j 61 0 j lt 22
  • DS18B20温度传感源代码

    本文是对DS18b20传感器 xff0c 驱动代码的编写 include lt reg52 h gt include lt intrins h gt define uint unsigned int define uchar unsigne
  • 归并(合并)排序

    归并排序 xff0c 一种比较排序 xff0c 通过对数组中的元素进行比较得出排序结果 时间复杂度 O nlogn 空间复杂度 O n 43 O logn 排序时间与输入无关 xff0c 最佳情况 xff0c 最坏情况都是如此 稳定 原理
  • 字符串加减计算

    描述 xff1a 通过键盘输入100以内正整数的加 减运算式 xff0c 请编写一个程序输出运算结果字符串 输入字符串的格式为 xff1a 操作数1 运算符 操作数2 xff0c 操作数 与 运算符 之间以一个空格隔开 补充说明 xff1a
  • C/C++中,为什么字符串可以赋值给字符指针变量,单引号和双引号的区别

    本文是通过几篇转帖的文章整理而成的 xff1a http www slyar com blog c quotation marks html http www cnblogs com KingOfFreedom archive 2012 1
  • 操作符优先级全列表,一览表

    在一个表达式中可能包含多个有不同运算符连接起来的 具有不同数据类型的数据对象 xff1b 由于表达式有多种运算 xff0c 不同的运算顺序可能得出不同结果甚至出现错误运算错误 xff0c 因为当表达式中含多种运算时 xff0c 必须按一定顺
  • 枚举类的赋值和基本操作

    枚举类型的定义 枚举类型 enumeration 是C 43 43 中的一种派生数据类型 xff0c 它是由用户定义的若干枚举常量的集合 定义格式 xff1a 枚举类型的定义格式为 xff1a enum lt 类型名 gt lt 枚举常量表
  • AttributeError: module ‘gym.envs.atari‘ has no attribute ‘atari_env‘ 解决方案

    问题描述 今天在执行以下代码时 xff1a is atari 61 hasattr gym envs 39 atari 39 and isinstance env unwrapped gym envs atari atari env Ata
  • linux 防火墙常用命令

    firewalld防火墙 CentOS 7 1 查看firewalld服务状态 systemctl status firewalld 出现 Active active running 高亮显示则表示是启动状态 出现 Active inact
  • 2020年百度之星·程序设计大赛-初赛三 补题/解题

    Title Discount题解 Game题解 Permutation题解 Intersection题解 ChessAntFightGraph Discount Problem Description 学皇来到了一个餐馆吃饭 他觉得这家餐馆
  • 实习前言

    2018年4 19正式实习入职科大讯飞 xff0c 18日下午到达科大讯飞股份有限公司 第一时间拎着行李赶到提前与HR约定好的时间下午3 30地点A2综合服务中心 xff0c 进行住宿安排 入住的是所有实习生住的某工业园 xff0c 离A1
  • 科大讯飞总裁办实习第1周

    正式实习第一周 xff0c 从4月23日开始 根据上周五灿武哥给的邮件任务为导向 xff0c 开始学习输入 对于ibpms设计器的学习 xff0c 灿武哥给了3份学习文档资料 xff0c 其实是针对不同使用人群的使用手册 xff08 针对管
  • 科大讯飞总裁办实习第二周

    五一放假回来第一天上班就是周三啦 xff0c 这周只需要上三天班 xff0c 在上下午间隙时间 xff0c 研读流程管理使用手册 xff0c 整理以下几个概念知识点 流程管理的目标 xff1a 使企业的流程运作从整体上更加顺畅 协调 xff
  • 科大讯飞总裁办实习第三周

    5 7号周一上班收到的第一个消息 xff1a 带我流程的瑞哥请假三天 经理在群里说这块找张杰确认 xff0c 突然就一个重担砸到我的身上了 之前一直站在瑞哥的身后 xff0c 需求来自于瑞哥直接吩咐 xff0c 现在直接需求来源于项目推进
  • 科大讯飞总裁办实习第5周

    5 21 周一上班首先补充试点推广流程文件详细信息 xff0c 上午共导出5 xff0c 6 xff0c 7 xff0c 8四个流程文件 上午经理在群里下达最后截止日期 xff0c 所有的规范 xff0c 流程 xff0c 文件都要周五之前
  • 科大讯飞实习第八周日志

    0611早上欲打算与业务部门尽快完善流程 xff0c 大早上联系那边的流程设计人员 xff0c 不巧的是他早上有会 xff0c 然后就自己看华为变革及管理流程框架 xff0c 下午一点半和宇婴哥一起参加了销委会商机研讨会议 xff0c 回来
  • PostgreSQL数据库导出建表语句的方法

    pg dump U postgres d dbname s gt sql txt
  • spyder导入tensorflow包

    一 xff0e spyder介绍 Anaconda中自带的集成开发环境用于科学计算还是蛮好的 xff0e 它和其他的Python开发环境相比 xff0c 它最大的优点就是模仿MATLAB的 工作空间 的功能 xff0c 可以很方便地观察和修
  • ValueError: Disable frame-skipping in the original env. 解决方案

    问题描述 今天试图在Atari上运行以下代码时 xff0c 出现了题目中的bug xff1a env 61 AtariPreprocessing env grayscale obs 61 True scale obs 61 True ter

随机推荐

  • OpenKylin适配和虚拟打印机

    最近在测国产OS客户端部分 首先客户端程序在CentOS全部使用没毛病 xff0c 但是CentOS桌面体验比较差 然后就试了UOS xff0c 在UOS上测试到打印这块花了很多时间 xff0c 碰到问题是CUPS有反应 xff0c 但是没
  • 基础命令整理

    1 who显示的是当前真正登录系统中的用户 16 05 59 root 64 localhost who ZT tty2 2021 11 03 10 45 tty2 ZT pts 1 2021 11 05 08 28 10 0 0 1 2
  • ubuntu apache2 配置安装ssl证书,https

    1 申请免费阿里证书 2 配置证书 在这里 xff0c 我假设你已经会配置基本的 etc apache2 sites available 000 default conf这个文件来达到已经可以通过 http 的方式来访问你的站点 在 etc
  • 今日头条2018校招笔试题之字符串的问题

    今日头条 xff0c 很干脆 xff0c 直接就四个编程 xff0c 一个改错 做的很烂 xff0c 只能来写一个题 字符串S由小写字母构成 xff0c 长度为N xff0c 定义一种操作 xff0c 每次都可以挑选字符串中任意的两个相邻字
  • ios 瀑布流

    瀑布流 xff0c 又称瀑布流式布局 是比较流行的一种 页面布局 xff0c 视觉表现为参差不齐的多栏布局 xff0c 随着页面滚动条向下滚动 xff0c 这种布局还会不断加载 数据块并附加至当前尾部 说明 xff1a xff08 1 xf
  • 旧电脑变废为宝成为nas

    老台式机1台 可用任意电脑一台 xff0c 用来调试nas U盘1个 xff0c 64M以上 黑群晖安装包 显示器 下载黑群晖安装工具包 xff1a http pan baidu com s 1eRSAwAQ 使用ChipEasy检查并记录
  • debian的初始化操作

    设置默认的编辑器为vim uppdate alternatives config editor 输入你选择的编辑器即可 配置visudo z ALL ALL ALL NOPASSWD ALL 增加开启termial的快捷键 系统设置 快捷键
  • go调用本地python代码

    go调用本地python代码 1 mac环境下测试 目录结构 xff1a go代码 xff1a xff08 windows没有python3命令 xff0c windows的话改成python即可 xff09 span class toke
  • (四) Docker之Dockerfile编写与指令解析,自定义镜像实战

    Docker之编写Dockerfile 1 Dockerfile介绍1 1 docker build1 2 dockerignore文件1 3 Dockerfile格式 2 Dockerfile构建过程解析2 1 Dockerfile内容基
  • 如何安装指定版本Pytorch:

    如何安装指定版本Pytorch 使用conda安装指定版本 conda install pytorch 61 0 1 10 c soumith 使用pip安装指定版本 pip install pytorch 61 61 0 1 10 如何查
  • gym ValueError: too many values to unpack (expected 4) 解决方案

    问题描述 今天在执行以下代码时出现了题述错误 xff1a new obs rew done info 61 self env step action new obs rew done info 61 self env step action
  • linux查看openjdk的安装的路径(环境变量)

    前言 xff1a 现在基本上linux为了避免版权问题都会默认的为你安装开源的openjdk xff0c 而不是jdk 有些时候需要运行一些环境需要用到jdk的环境变量 xff0c 本文就是简单描述下如何查看openjdk的环境变量 1 e
  • linux图形界面基本知识(X、X11、Xfree86、Xorg、GNOME、KDE之间的关系)

    转载 xff1a http apps hi baidu com share detail 11596555 LINUX初学者经常分不清楚linux和X之间 xff0c X和Xfree86之间 xff0c X和KDE xff0c GNOME等
  • windows xp远程连接

    本节将用到windows网络共享 xff0c 实现外网可以远程连接局域网内的任意主机 实验环境 两台windows xp虚拟机 xff08 内网 43 外网 xff09 xff0c 一台主机 配置外网虚拟机 首先 xff0c 为虚拟机添加两
  • 系统架构之三(业务运营支撑系统)

    本人从事过3年的移动业务运营支撑系统开发 xff0c 行业术语叫做boss系统 xff0c 后又转入游戏行业进行游戏开发 现设计一个业务运营支撑系统的架构如下 xff1a 详细解释各模块如下 xff1a gateway dispatch x
  • Debian下安装xfce4

    环境 Debian wheezy stable 步骤 1 第一张光盘安装Debian 速度快 xff0c 可定制 2 设置 etc apt sources list 去掉cdrom的路径 3 安装apt spy xff0c 搜索最符合自己的
  • 天天讲路由,那 Linux 路由到底咋实现的!?

    大家好 xff0c 我是飞哥 容器是一种新的虚拟化技术 xff0c 每一个容器都是一个逻辑上独立的网络环境 Linux 上提供了软件虚拟出来的二层交换机 Bridge 可以解决同一个宿主机上多个容器之间互连的问题 xff0c 但这是不够的
  • 面向对象的概念和类和对象的概念

    面向对象 1 概念 ES6中的面向对象是和其他语言基本比较相似 JS正常来说是基于对象语言 很多程序都是基于对象开发 不是面向对象 但是在ES6中 我们引入了其他语言中的面向对象 面向过程就是 你需要什么 写什么 面向对象 他就是 你直接封
  • ubuntu系统安装完nvidia显卡驱动后黑屏,不能进入系统

    昨天想看显卡 xff0c 更新了下驱动 xff0c 发现服务器重启进不去 步骤 1 开机按esc 进入 选项界面2 进去以后选择一个括号里面带recovery mode的选项3 然后它自动黑屏出现代码 xff0c 然后弹出一个选择框 xff
  • 【MySQL 主从复制、分离解析】

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 一 MySQL主从复制1 主从复制架构和原理1 1服务性能扩展方式1 2 MySQL的扩展1 2 1什么是读写分离1 2 2为什