MySQL 主从复制

概念

MySQL 主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL 默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行,从节点可以复制主数据库中的所有数据库或者特定的数据库,或者特定的表。

支持的复制类型

1、基于语句(statement)的复制

在主服务器上执行sql语句,在从服务器上执行相同的语句。mysql默认基于语句的复制,效率较高。

2、基于行(row)的复制

将改变的内容复制过去,而不是把命令在从服务器上执行一遍。

3、混合型(mixed)的复制

一旦发现基于语句的复制无法精确复制时,就采用基于行的复制。

为什么做主从复制的原因

在这里插入图片描述
1、灾备:遇到各种原因导致的数据库数据丢失时,有备份,不会造成上海;

2、数据分布:数据库的数据存储过多时,有可能访问效率降低,从,主数据库会各自存储;

3、负载均衡:当数据库压力过大,效率降低,从服务器会承担负载压力;

4、读写分离

5、提高并发能力

主从复制的原理

在这里插入图片描述
MySQL之间数据复制的基础是二进制日志文件(binary log file)。一台MySQL数据库一旦启用二进制日志后,其作为master,它的数据库中所有操作都会以“事件”的方式记录在二进制日志中,其他数据库作为slave通过一个I/O线程与主服务器保持通信,并监控master的二进制日志文件的变化,如果发现master二进制日志文件发生变化,则会把变化复制到自己的中继日志中,然后slave的一个SQL线程会把相关的“事件”执行到自己的数据库中,以此实现从数据库和主数据库的一致性,也就实现了主从复制。

1、在主库上把数据更换记录到二进制文件(binary log)日志
2、备库将主库的日志复制到自己的中继日志(relay log)中。
3、备库读取中继日志的事件,将其重新放到备库数据库中。

半同步复制原理

1)事务在主库写完binlog后需要从库返回一个已接受,才放回非客户端
2)5.5集成到mysql,以插件的形式存在,需要单独安装
3)确保事务提交后binlog至少传输一个从库
4)不保证从库应用完成这个事务的binlog
5)性能有一定的降低
6)网络异常或从库宕机,卡主库,直到超时或从库恢复

在这里插入图片描述

并行复制原理

1)从库多线程apply binlog
2)在社区5.6中新增
3)库级别并行应用binlog,同一个库数据更改还是串行的
4)5.7版本并行复制基于事务组

在这里插入图片描述
主机宕机后,数据丢失的解决:半同步复制

主库写压力大,因从库只有一个sql
线程持久化,复制可能延迟的解决:并行复制

主从复制的实现

在这里插入图片描述
1、环境准备

两台虚拟主机(一台为主库,192.168.76.164 端口为3306;另一台为从库,192.168.76.165 ),从库多实例安装 端口为3306 3307

2、主库配置

1)设置server_id 值并开启binlog 参数

cp   /usr/share/my-defaults.cnf   /etc/my.cnf

vim   /etc/my.cnf
[mysqld]
log_bin=mysql
server_id=2
  1. 建立同步账号

    mysql -uroot -p123

    mysql>grant replication slave on . to ‘rep’@‘192.167.76.%’ identified by ‘123456’;

3)查看主库状态

show    master   status;

4)备份主库数据库

mysql -uroot -p123 -S /data/3306/mysql.sock - A  > all_db.sql

5)主库备份数据上传到从库

scp   all_db.sql   192.168.76.165:/tmp/all_db.sql

6)创建数据库db1

 create   database   db1;

在这里插入图片描述
3、从库设置

1)

mysql -uroot -p123 -P3306 -S /data/3306/mysql.sock </tmp/all_db.sql 

mysql -uroot -p123456 -P3307 -S /data/3307/mysql.sock

2)还原数据库

mysql -uroot -p123456 -P3306 -S /data/3307/mysql.sock -e "show databases;"

mysql -uroot -p123456 -P3307 -S /data/3307/mysql.sock -e "show databases;"

在这里插入图片描述
还原成功

设置数据同步

1)在从数据库设置从主库同步

change master to
MASTER_HOST=‘192.168.76.164’,
MASTER_PORT=3306,
MASTER_USER=‘rep’,
MASTER_PASSWORD=‘123’,
MASTER_LOG_FILE=‘mysql.000001’,
MASTER_LOG_POS=120;

2)启动从库同步

slave   start

检查状态

show slave status\G
在这里插入图片描述
此时发现,slave_SQL_Running并未打开

解决的办法是将数据库重启即可

在这里插入图片描述
3)在主库中创建表student并插入数据

create table student ( id int, name varchar(20));

insert into student values (1,'zs');

insert into student values (2,'lisi');

4)在从库中查看是否数据同步成功

show tables;

select * from student;

在这里插入图片描述

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值