【数据库】mysql主从复制与读写分离

MySQL 数据库——主从复制与读写分离 文章目录前言一、MySQL主从复制1.支持的复制类型2.主从复制的工作过程是基于日志3.请求方式4.主从复制的原理5.MySQL集群和主从复制分别适合在什么场景下使用6.为什么使用主从复制、读写分离7.用途及条件8.mysql主从复制存在的问题9.MySQL主从复制延迟二、主从复制的形式三、读写分离1.原理2.为什么要读写分离呢?3.什么时候要读写分离?4.主从复制与读写分离5.目前较为常见的MySQL读写分离分为以下两种①基于程序代码内部实现②基于中间代理层实现四、案例实施1.案例环境2.实验思路(解决需 阅读详情


一、读写分离

1. 什么是读写分离

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

2. 为什么要读写分离

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

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

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

3. 什么时候要读写分离

  数据库不一定要读写分离,如果程序使用数据库较多时,而更新少,查询多的情况下会考虑使用。利用数据库主从同步,再通过读写分离可以分担数据库压力,提高性能。

4. 主从复制与读写分离

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

5. Mysql 主从复制原理(主从复制的类型)

Mysql主从复制基于二进制文件日志,而二进制文件日志的类型又分为以下三种:

  • STATEMENT∶基于语句的复制,并发量较小时使用。在服务器上执行sgl语句,在从服务器上执行同样的语句,mysql默认采用基于语句的复制,执行效率高。

  • ROW∶ 基于行的复制,精确性高,但是效率比较低、二进制文件占用空间大。把改变的内容复制过去, 而不是把命令在从服务器上执行一遍。

  • MIXED∶混合类型的复制。默认采用基于语句的复制,一旦发现基于语句无法精确复制时,就会采用基于行的复制。

6. Mysql 主从复制的工作过程

(1)主服务器数据进行更新,写入二进制日志文件中;

(2)从服务器开启IO线程,向主服务器请求二进制日志事件/记录;

(3)主服务器为每个IO线程开启dump线程,并向从服务器发送二进制日志事件;

(4)从服务器保存主服务器发来的二进制日志事件到本地的中继日志中;

(5)在5.7版本开启了半同步复制的情况下,主服务器在从服务器保存中继日志之后,用ack collector线程接收从服务器反馈的确认信息;

(6)从服务器开启sql线程读取中继日志中的二进制事件并解析成sql语句,然后重放/逐一执行sql语句。

在这里插入图片描述

注意:

  中继日志通常会位于 os缓存中,所以中继日志的开销很小。

  复制过程有一个很重要的限制,即复制在Slave上是串行化的,也就是说Master上的并行更新操作不能在 slave上并行操作。

7. Mysql 读写分离原理

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

二、主从复制的配置操作

1. 环境配置

systemctl stop firewalld.service
setenforce 0
rpm -q ntp ntpdate

主服务器:192.168.145.45
从服务器1:192.168.145.105
从服务器2:192.168.145.120

2. 搭建 MySQL主从复制

2.1 mysql主从服务器时间同步

主服务器

[root@localhost ~]#vim /etc/ntp.conf
#restrict default nomodify notrap nopeer noquery
restrict default nomodify
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server ntp.aliyun.com

[root@localhost ~]# systemctl restart ntpd

从服务器

[root@localhost ~]# crontab -e
*/30 * * * * /usr/sbin/ntpdate 192.168.145.45
[root@localhost ~]# systemctl restart crond
[root@localhost ~]# crontab -l
*/30 * * * * /usr/sbin/ntpdate 192.168.145.45

2.2 主服务器的mysql配置

[root@localhost ~]# vim /etc/my.cnf
...
[mysqld]
...
#skip-grant-tables
server-id=1
log-bin=mysql-bin									#添加,主服务器开启二进制日志
binlog_format=mixed
...
[root@localhost ~]# systemctl restart mysqld		#重启服务
[root@localhost ~]# systemctl status mysqld			#查看状态
[root@localhost ~]# mysql -u root -p123456
mysql> GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'192.168.145.%' IDENTIFIED BY '123456';#给从服务器授权
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> show master status;							#File 列显示日志名,Position 列显示偏移量
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000007 |      604 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
选配项
expire_logs_days=7									#设置二进制日志文件过期时间,默认值为0,表示logs不过期
max_binlog_size=500M								#设置二进制日志限制大小,如果超出给定值,日志就会发生滚动,默认值是1GB
skip_slave_start=1									#阻止从库崩溃后自动启动复制,崩溃后再自动复制可能会导致数据不一致的
双1设置
innodb_flush_logs_at_trx_commit=1		#redo log(事务日志)的刷盘策略,每次事务提交时MySQL都会把事务日志缓存区的数据写入日志文件中,并且刷新到磁盘中,该模式为系统默认

sync_binlog=1							#在进行每1次事务提交(写入二进制日志)以后,Mysql将执行一次fsync的磁盘同步指令,将缓冲区数据刷新到磁盘

  "双1设置"适合数据安全性要求非常高,而且磁盘IO写能力足够支持的业务,比如订单、交易、充值、支付消费系统。

  "双1模式"下,当磁盘IO无法满足业务需求时,比如11.11活动的压力。推荐一下性能较快的设置,并使用带蓄电池后备电源,防止系统断电异常。

innodb_flush_logs_at_trx_commit=2		#每次事务提交时MySQL都会把日志缓存区的数据写入日志文件中,但是并不会同时刷新到磁盘上。该模式下,MySQL会每秒执行一次刷新磁盘操作
sync_binlog=500							#在进行500次事务提交以后,Mysql将执行一次fsync的磁盘同步指令,将缓冲区数据刷新到磁盘

2.3 从服务器的mysql配置

[root@localhost ~]# vim /etc/my.cnf
...
[mysqld]
...
server-id = 2										#修改,注意id与Master的不同,两个Slave的id也要不同
#skip-grant-tables
relay-log=relay-log-bin								#开启中继日志,从主服务器上同步日志文件记录到本地
relay-log-index=relay-log-bin.index					#定义中继日志文件的位置和名称,一般和relay-log在同一目录
...
[root@localhost ~]# systemctl restart mysqld
[root@localhost ~]# mysql -u root -p123456
mysql> change master to master_host='192.168.145.45',master_port=3306,master_user='myslave',master_password='123456',master_log_file='mysql-bin.000007',master_log_pos=604;						#配置同步,注意 master_log_file 和 master_log_pos 
Query OK, 0 rows affected, 2 warnings (0.07 sec)
mysql> start slave;									#启动同步,如有报错执行 reset slave;		
mysql> show slave status\G
*************************** 1. row ***************************
				...									#确保 IO 和 SQL 线程都是 Yes,代表同步正常。
             Slave_IO_Running: Yes					#负责与主机的io通信
            Slave_SQL_Running: Yes					#负责自己的slave mysql进程
				...
选配项
innodb_buffer_pool_size=2048M		#用于缓存数据和索引的内存大小,让更多数据读写内存中完成,减少磁盘操作,可设置为服务器总可用内存的 70-80%
sync_binlog=0						#MySQL不做任何强制性的磁盘刷新指令,而是依赖操作系统来刷新数据到磁盘
innodb_flush_log_at_trx_commit=2	#每次事务log buffer会写入log file,但一秒一次刷新到磁盘
log-slave-updates=0					#slave 从 master 复制的数据会写入二进制日志文件里,从库做为其他从库的主库时设置为 1
relay_log_recovery=1				#当 slave 从库宕机后,假如 relay-log 损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的 relay-log, 并且重新从 master 上获取日志,这样就保证了 relay-log 的完整性。默认情况下该功能是关闭的,将 relay_log_recovery 的值设置为 1 时, 可在 slave 从库上开启该功能,建议开启。
数据显示No的原因
#一般 Slave_IO_Running: No 的可能性:
1.网络不通
2.my.cnf配置有问题
3.密码、file文件名、pos偏移量不对
4.防火墙没有关闭
#Last_IO_Erro::quitr: Fatal error
1.数据库是克隆的,删除/usr/local/mysql/data/auto.cnf,重启服务

3. Mysql 主从复制延迟

3.1 延迟的产生

1、网络延迟
2、主从硬件设备导致(cpu主频、内存io、硬盘io)
3、使用的是同步复制、而不是异步复制
4、master服务器高并发,形成大量事务

3.2 延迟的解决

  网络方面:将从库分布在相同局域网内或网络延迟较小的环境中,避免跨机房实现同步。

  硬件方面:从库配置更好的硬件(包括cpu强悍、内存加大、避免使用虚拟云主机,使用物理主机、适用SSD磁盘),提升随机写的性能。

  配置方面:从库优化Mysql参数,让更多操作在Mysql内存中完成,减少磁盘操作。

sync_binlog=0								#设置操作系统不定期把文件内容刷新到磁盘
innodb_flush_log_at_trx_commit=2			#每秒刷新磁盘
logs-slave-updates=0						#不设置日志记录
增大 innodb_buffer_pool_size

3.3 验证主从复制效果

主服务器上进入执行 create database db_test;
去从服务器上查看 show databases;

3.4 主从复制的同步模式

异步复制(Asynchronous replication)

  Mysql默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给客户端,并不关心从库是否已经按收并处理,这样就会有一个问题,主如果creast掉了,此时主上已经提交的事务可能并没有传到从上,如果此时,强行将从提升为主,可能导致新主上的数据不完整。

全同步复制(Fully synchronous replication)

  指当主库执行完一个事务,所有的从库都执行了该事务才返回给客户端。因为需要等特所有从库执行完该事务才能返回,所以全同步复制的性能必然会收到严重的影响。

半同步复制(semisynchronous replication )

  介于异步复制和全同步复制之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到relay log中才返回给客户端。相对于异步复制,半同步复制提高了数据的安全性,同时它也造成了一定程度的延迟,这们运迟最少是一个TCP/IP往运的时间。所以,半同步复知最好在低延时的网络中使用。

三、读写分离

1. Mysql 读写分离原理

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

2. Mysql 读写分离的类型

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

2.1 基于程序代码内部实现

  在代码中根据 select、insert 进行路由分类,这类方法也是目前生产环境应用最广泛的。

  优点是性能较好,因为在程序代码中实现,不需要增加额外的设备为硬件开支;缺点是需要开发人员来实现,运维人员无从下手。

  但是并不是所有的应用都适合在程序代码中实现读写分离,像一些大型复杂的Java应用,如果在程序代码中实现读写分离对代码改动就较大。

2.2 基于中间代理层实现

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

  • MySQL-Proxy。MySQL-Proxy 为 MySQL 开源项目,通过其自带的 lua 脚本进行SQL 判断。
  • Atlas。是由奇虎360的Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。360内部使用Atlas运行的mysql业务,每天承载的读写请求数达几十亿条。支持事物以及存储过程。
  • Amoeba。由陈思儒开发,作者曾就职于阿里巴巴。该程序由Java语言进行开发,阿里巴巴将其用于生产环境。但是它不支持事务和存储过程。
  • Mycat。是一款流行的基于Java语言编写的数据库中间件,是一个实现了MySql协议的服务器,其核心功能是分库分表。配合数据库的主从模式还可以实现读写分离。

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

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

3. Amoeba 实现读写分离安装与配置

Master服务器 192.168.145.45
salve1服务器 192.168.145.105
salve2服务器 192.168.145.120
Ameoba服务器 192.168.145.15
客户端       192.168.145.30
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0

3.1 Amoeba 服务器配置

安装 Java 环境

因为 Amoeba 基于是 jdk1.5 开发的,所以官方推荐使用 jdk1.5 或 1.6 版本,高版本不建议使用。

[root@localhost ~]# cd /opt/
[root@localhost opt]# ls
amoeba-mysql-binary-2.2.0.tar.gz  jdk-6u14-linux-x64.bin  rh
[root@localhost opt]# cp jdk-6u14-linux-x64.bin /usr/local/
[root@localhost opt]# cd /usr/local/
[root@localhost local]# chmod +x jdk-6u14-linux-x64.bin 
[root@localhost local]# ./jdk-6u14-linux-x64.bin
//按yes,按enter

在这里插入图片描述

[root@localhost local]# ls
bin  games    jdk1.6.0_14             lib    libexec  share
etc  include  jdk-6u14-linux-x64.bin  lib64  sbin     src
[root@localhost local]# mv jdk1.6.0_14/ /usr/local/jdk1.6
[root@localhost local]# ls
bin  games    jdk1.6                  lib    libexec  share
etc  include  jdk-6u14-linux-x64.bin  lib64  sbin     src
[root@localhost local]# vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.6
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export AMOEBA_HOME=/usr/local/amoeba
export PATH=$PATH:$AMOEBA_HOME/bin

在这里插入图片描述

[root@localhost local]# java -version
openjdk version "1.8.0_262"
OpenJDK Runtime Environment (build 1.8.0_262-b10)
OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)
[root@localhost local]# source /etc/profile
[root@localhost local]# java -version
java version "1.6.0_14"
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) 64-Bit Server VM (build 14.0-b16, mixed mode)

在这里插入图片描述

安装 Amoeba 软件
[root@localhost local]# cd /opt/
[root@localhost opt]# mkdir /usr/local/amoeba
[root@localhost opt]# tar xf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/
[root@localhost opt]# chmod -R 755 /usr/local/amoeba/
[root@localhost opt]# /usr/local/amoeba/bin/amoeba
amoeba start|stop		#如显示amoeba start|stop说明安装成功

在这里插入图片描述

配置 Amoeba 读写分离,两个 Slave 读负载均衡

在Master、Slave1、Slave2 的mysql上开放权限给 Amoeba 访问

mysql> grant all on *.* to test@'192.168.145.%' identified by '123.com';
Query OK, 0 rows affected, 1 warning (0.00 sec)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DnDYnUQ4-1687771441602)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230626141958721.png)]

Amoeba 服务器配置 Amoeba 服务
[root@localhost opt]# cd /usr/local/amoeba/conf/
[root@localhost conf]# cp amoeba.xml amoeba.xml.bak
[root@localhost conf]# vim amoeba.xml             #修改amoeba配置文件
--30行--
<property name="user">amoeba</property>
--32行-- 
<property name="password">123456</property>
--115行--
<property name="defaultPool">master</property>
--117-去掉注释-
<property name="writePool">master</property>
<property name="readPool">slaves</property>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qUIkGwxz-1687771441604)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230626143539622.png)]

[root@localhost conf]# cp dbServers.xml dbServers.xml.bak
[root@localhost conf]# vim dbServers.xml			#修改数据库配置文件
--23行--注释掉  作用:默认进入test库 以防mysql中没有test库时,会报错
<!-- <property name="schema">test</property> -->
--26--修改
<property name="user">test</property>
--28-30--去掉注释
<property name="password">123.com</property>
--45--修改,设置主服务器的名Master
<dbServer name="master"  parent="abstractServer">
--48--修改,设置主服务器的地址
<property name="ipAddress">192.168.145.45</property>
--52--修改,设置从服务器的名slave1
<dbServer name="slave1"  parent="abstractServer">
--55--修改,设置从服务器1的地址
<property name="ipAddress">192.168.145.105</property>
--58--复制上面6行粘贴,设置从服务器2的名slave2和地址
<dbServer name="slave2"  parent="abstractServer">
<property name="ipAddress">192.168.145.120</property>
--65行--修改
<dbServer name="slaves" virtual="true">
--71行--修改
<property name="poolNames">slave1,slave2</property>

在这里插入图片描述

启动与查看
/usr/local/amoeba/bin/amoeba start&					#启动Amoeba软件,按ctrl+c 返回
netstat -anpt | grep java							#查看8066端口是否开启,默认端口为TCP 8066

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vim5mfYx-1687771441606)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230626143937253.png)]

3.2 测试读写分离

主服务器

mysql> create database db_test;
Query OK, 1 row affected (0.00 sec)
mysql> use db_test;
Database changed
mysql> create table test (id int(10),name varchar(10),address varchar(20));
Query OK, 0 rows affected (3.80 sec)
mysql> insert into test values('3','wangwu','this_is_master');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UHvpbBKo-1687771441607)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230626162911189.png)]

两台从服务器

mysql> stop slave;											#关闭同步
mysql> use db_test;
#在slave1上
insert into test values('1','zhangsan','this_is_slave1');

#在slave2上
insert into test values('2','lisi','this_is_slave2');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qkrYBui1-1687771441608)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230626162834023.png)]

客户端

[root@localhost ~]# yum install -y mariadb-server mariadb
[root@localhost ~]# systemctl start mariadb.service
[root@localhost ~]# mysql -u amoeba -p123456 -h 192.168.145.15 -P 8066
MySQL [db_test]> use db_test;
MySQL [db_test]> select * from test;	
#客户端会分别向slave1和slave2读取数据,显示的只有在两个从服务器上添加的数据,没有在主服务器上添加的数据

[外链图片转存中...(img-xEPPSpRB-1687771441609)]

数据库应用——MySQL主从复制和Atlas读写分离 MySQL主从复制和读写分离MySQL在企业中的拓扑图MySQL主从复制MySQL主从复制的类型主从复制的工作过程MySQL主从复制步骤安装MySQL建立时间同步环境配置主从复制主节点配置从节点配置验证MySQL读写分离MySQL读写分离原理Atlas的简介安装并配置Atlas配置读写分离测试 MySQL在企业中的拓扑图 在企业网站中,后端MySQL数据库只有一台时,会有以下问题 单点故障,服务不可用 无法处理大量的并发数据请求 数据丢失—大灾难 改造方法 增加MySQL数据库服务器,对数据进行备份, 阅读详情

相关推荐

因果表示学习 (Causal Representation Learning, CRL)

传统的机器学习,尤其是深度学习,非常擅长学习数据中的相关性 (Correlation)。但它常常会走“捷径”,学到一些虚假的、不稳定的“表面联系”。一个AI模型在学习识别“牛”时,如果训练数据里所有的牛都在绿色的草地上,模型很可能会学到一个错误的规则:“牛 = 四条腿的生物 + 绿色背景”。你给它一张牛在海滩上的照片,它就可能不认识了。因果表示学习的目标,就是让模型超越这种表面相关性,去学习数据背后。

Xuxiansir的博客 1181

mysql的主从复制和读写分离

读写分离 半同步复制 mysql主从复制延迟

zhangchang3的博客 1575

WPF的基础设施:XAML基础语法

XAML是WPF的核心标记语言,采用XML语法实现界面与逻辑分离。其基础语法包括:1)控件声明方式(特性语法和属性元素语法);2)x:Name与Name的区别(适用范围和编译行为);3)注释规范与代码折叠技巧;4)实用特性如属性继承、附加属性等。文章还提供了常见错误排查方法,建议通过实践练习掌握XAML开发技巧。全文系统介绍了XAML的核心语法与应用场景,是WPF开发者的基础学习指南。

Hare的博客 1755

搭建高性能数据库集群之一:MySQL主从复制(一主一从、双主双从)

主从数据库是什么意思呢,主是主库的意思,从是从库的意思。数据库主库对外提供读写的操作,从库对外提供读的操作。高可用,实时灾备,用于故障切换。比如主库挂了,可以切从库。读写分离,提供查询服务,减少主库压力,提升性能备份数据,避免影响业务。主从复制原理,简言之,分三步曲进行:①主数据库有个 binlog 二进制文件,记录了所有增删改 SQL 语句;②(binlog线程)从数据库把主数据库的binlog文件的 SQL 语句复制到自己的中继日志relaylog;

hualinger的博客 4055

从标记基因到功能分析:手把手教你人工注释单细胞亚群的完整流程

本文详细介绍了人工注释单细胞亚群的完整流程,从标记基因筛选到功能分析验证,特别针对肿瘤微环境、发育轨迹等复杂场景提供解决方案。通过差异表达分析、多维数据整合和实验验证,帮助研究者准确识别细胞类型,提升单细胞转录组研究的生物学解读深度。

jenkins8butler的博客 244

用ESP32-S3和USB摄像头DIY一个无线图传监控(附完整代码和接线图)

本文详细介绍了如何利用ESP32-S3开发板和USB摄像头打造一套高性价比的无线图传监控系统。从硬件选型、接线图到代码实现,提供了完整的DIY方案,特别适合家庭监控、宠物看护等场景。通过优化WiFi传输和双核任务分配,实现了稳定的视频流传输,整套方案成本控制在200元以内。

weixin_33701251的博客 519

MySQL主从复制与读写分离

概述:在企业应用中,成熟的业务通常数据量都比较大。单台mysql在安全性、高可用性和高并发方面都无法满足实际的需求。配置多台主从数据服务器以实现读写分离。主从复制:解决高可用问题读写分离:解决高并发的问题。

OuOOutlier_的博客 214

迭代牛顿-欧拉法——机器人动力学逆解

迭代牛顿-欧拉法牛顿欧拉法的步骤向外回归(outward recursion)step 1step 2向内回归(inward recursion)step 3step 4牛顿欧拉法的三种形式无坐标系NE算法(Coordinate-Free Algorithm)连杆坐标系NE算法(Link-Coordinates Algorithm)3-D向量NE算法 牛顿欧拉法的步骤 牛顿欧拉法(NE)是求解机器人动力学逆解的一种方法。动力学逆解定义为:已知机器人的构型qqq和运动的速度q˙\dot{q}q˙​和加速度q¨

qq_41845878的博客 4096

【MySQL】数据库——主从复制和读写分离

读写分离,主数据库处理事务性增、改、删操作从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。

2401_83330816的博客 3597

保姆级教程:用CST 2023一步步复现一个1-8GHz Vivaldi天线(含参数优化与结果分析)

本文提供了一份详细的CST 2023教程,指导读者如何从零开始设计并优化1-8GHz Vivaldi天线。内容涵盖工程设置、参数化建模、仿真加速技巧以及性能优化策略,特别适合需要实现宽带天线设计的工程师和研究人员。通过实战案例,帮助用户掌握Vivaldi天线的核心设计要点和CST高级功能应用。

weixin_30800987的博客 618

在 Eclipse 里快速用上 SAP Joule:ABAP 开发者的 AI 助手上手指南

本文介绍了SAP Joule for developers如何集成在ABAP开发工具中,为开发者提供AI辅助能力。主要内容包括: Joule作为ADT的增强层,直接嵌入开发流程,支持在项目资源管理器、代码编辑器等场景下通过上下文菜单调用AI功能。 核心使用方式:打开Joule视图后,可在开发对象、代码片段等上下文中使用自然语言交互,请求解释、生成测试或获取示例代码。 重点功能: Explain:解释现有代码逻辑,降低理解成本 ABAP Unit测试生成:快速创建与上下文相关的测试用例 支持在传输管理器等完整

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 393

数据库主从复制

MySQL数据库的主从复制(Master-Slave Replication)是一种常见的数据库复制架构,用于提高数据库的可用性、可靠性和性能。

weixin_56770318的博客 2577

6、核函数与再生核希尔伯特空间:原理、应用与实践

本文系统介绍了核函数与再生核希尔伯特空间(RKHS)的理论基础、核心性质及其在机器学习和信号处理中的广泛应用。文章从核方法的优势出发,阐述了其在非线性建模、正则化和算法核化方面的独特价值,并深入探讨了正定核、Mercer定理、表示定理等关键理论。通过构建多种标准核与工程专用核,展示了核函数的设计灵活性。结合支持向量回归(SVR)模型与多个MATLAB示例,详细说明了核方法的实际应用流程与操作技巧。最后,总结了核方法的应用领域、未来发展方向及学习实践建议,为读者提供了一套完整的理论与实践指南。

z2a3b4c5d的博客 143

MySQL数据库主从复制与读写分离

MySQL数据库主从复制与读写分离

Z__Cheng的博客 1408

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

MySQL数据库的主从复制与读写分离

在实际的生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是在安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的。因此,一般来说都是通过主从复制(Master-Slave)来同步数据,再通过读写分离来提升数据库并发负载能力的方案来进行部署与实施。如图所示,一台主 MySQL服务器带两台从 MySQL服务器做数据复制,前端应用在进行数据库写操作时,对主服务器进行操作,在进行数据库读操作时,对两台从服务器进行操作,这样大量减轻了对主服务器的压力。

Fan394778945的博客 2513

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

数据库应用——MySQL主从复制与读写分离

前言:在实际生产环境中,如果对MySQL数据库的读和写都在一台数据库服务器中操作,无论是在安全性、高可用性,还是高并发等各个方面都是不能满足实际需求的,于是有了MySQL的主从复制与读写分离 文章目录一、案例分析1.案例概述2.原理1)MySQL主从复制原理2)MySQL读写分离原理3.案例环境二、实例1.搭建MySQL主从复制 一、案例分析 1.案例概述 在实际生产环境中,如果对数据库的读和写都...

weixin_45724795的博客 843

MySQL 数据库--主从复制与读写分离

一、案例分析 在实际的生产环境中,如果对 MySQL 数据库的读和写都在一台数据库服务器中操作,无论在安全性、高可用性,还是高并发性等各个方面都是完全不能满足实际需求的 因此,一般来说都是通过主从复制(Master-Slave)的方式来同步数据,再通过读写分离来提升数据库的并发负载能力这样的方案进行部署与实施 如下图所示,一台主 MySQL 带着两台从 MySQL 进行了数据复制,前端应用在进行数据库写操作时,对主设备进行操作,在进行数据库读操作时,对两台从设备进行操作,这样大量减轻了对主设备的压力

Arlssaze的博客 2911

数据库之MySQL主从复制与读写分离

MySQL主从复制与读写分离 一、案例概述 在实际的生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是在安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的。因此,一般来说 都是通过主从复制(Master-Slave)来同步数据,再通过读写分离来提升数据库并发负载能力的方案来进行部署与实施 二、MySQL 主从复制原理 MySQL 的主从复制和 MySQL 的读写分离两者有着紧密联系,首先要部署主从复制, 只有主从复制完成了,才能在此基础上进行数据的读写分离。 1、MySQL 支

ljj的学习笔记 742

Mysql数据库:主从复制与读写分离

本文主要介绍mysql数据库的主从复制和读写分离的概念和工作原理,以及详细阐释了如何搭建mysql主从复制和读写分离的过程和步骤,希望对你有帮助!

十七拾的博客 2934

MySQL数据库之主从复制与读写分离

前言:上章和拐友们讲解了数据库中的高阶语句,这章来讲讲数据库的主从复制,因为在实际的生产环境中,如果对MySQL数据库的读和写都在一台数据库服务器中操作,无论在安全性,高可用性,还是高并发等各个方面都是不能满足实际需求的,本章首先讲解MySQL主从复制和MySQL读写分离的原理,然后介绍如何配置MySQL主从复制总结:master将数据保存在二进制日志中,I/O向dump发出同步请求,dump把数据发送给I/O线程,I/O写入本地的中继日志SQL会读取本地的中继日志数据,同步到自己的数据库中,完成同步

weixin_67474417的博客 1265

MySQL数据库主从复制与读写分离(图文详解!)

MySQL数据库主从复制与读写分离 文章目录MySQL数据库主从复制与读写分离前言一、主从复制的原理及过程1.MySQL 支持的复制类型2.主从复制的过程二、MySQL读写分离1.读写分离的概念2.读写分离存在意义3.什么时候要读写分离4.MySQL 读写分离原理5.常见的 MySQL 读写分离三、MySQL主从复制和读写分离实验部署 前言 在实际的生产环境中,如果对mysql数据库的读和写都在一台数据库服务器中操作,无论是在安全性、高可用性,还是高并发等各个方面都是不能满足实际需求的。因此,一般通过主从复

qq_35456705的博客 1617

mysql数据库主从复制和读写分离

导读:昨天将测试环境的数据库同步数据到自己的库中,结果发现一直报“1286 - Unknown table engine ‘InnoDB’”的错,刚开始怀疑是自己本地数据库的 my.ini配置文件中的 INNODB配置有问题,参照网上各种修改其配置,结果还是无效。后来偶尔一次只执行一个表的复制,发现是成功的,但是多个表就会报错,通过请教别人才发现,原来这是一个读写分离的库,是个物理库,至于具体的解释

sdizoea的博客 1037
上一篇: 【Mysql】双1设置
下一篇: 【数据库】MHA高可用配置及故障切换
我的宝贝大唐
博客等级 码龄7年 96粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我的宝贝大唐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值