企业 Mysql传输配置

Mysql

下载安装

源码编译
这个方法在LNMP架构里的MySQL安装里详细说过

rpm包安装
同样在官网选择下载
在这里插入图片描述
下载推荐下载:Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit), RPM Bundle,这个rpm包中包含了下面的所有模块,也方便使用,提醒一下,因为MySQL官网并不在国内所以访问和下载的时候都会比较慢
在这里插入图片描述

这里我使用的是rpm包安装的,因为源码编译起来耗时是比较长的。
RPM Bundle下载下来是一个打包的tar文件包,需要先进行拆解,选择需要的安装包留下安装即可
在这里插入图片描述
然后删除

[root@server5 Downloads]# rm -fr mysql-community-devel-5.7.28-1.el7.x86_64.rpm \
> mysql-community-embedded-5.7.28-1.el7.x86_64.rpm \
> mysql-community-embedded-compat-5.7.28-1.el7.x86_64.rpm \
> mysql-community-embedded-devel-5.7.28-1.el7.x86_64.rpm \
> mysql-community-test-5.7.28-1.el7.x86_64.rpm

在这里插入图片描述
剩下的就可以使用yum进行全部安装了
在这里插入图片描述
主配置文件: /etc/my.cnf
服务名:mysqld
端口:3306

使用rpm包安装完的MySQL会生成一个日志文件文件 /var/log/mysql.log
里面会有和源码编译一样的一个临时密码供第一次登录MySQL使用
在这里插入图片描述
在这里插入图片描述
但是这里列出数据还是没有的,需要执行安全初始化,执行安全初始化时需要注意的是rpm包安装的MySQL没有开启弱密码,所以密码设置必须要8位的字母大小写+数字+字符,设置完密码,剩下的选项都是 “y” 。
初始化完成后,使用新密码测试登录,就可以列出数据库了
在这里插入图片描述


MySQL数据库的主从复制

方法可以查看官方文档进行详细的了解
在这里插入图片描述
主从复制,所需要的测试的主机有两台,一台是作为master主机,一台从节点主机
在两台主机上都安装MySQL
第一步:主节点添加配置
在这里插入图片描述
编辑配置文件: /etc/my.cnf
在这里插入图片描述

第二步:在主节点上创建用户
在这里插入图片描述
根据文档的提示,在MySQL里创建一个用来进行复制操作的用户,名字和密码自定义,@后可以跟网段或域名,“%”表示所有
在这里插入图片描述
然后进行授权,给创建的用户复制的权限对所有库的所有表
在这里插入图片描述
这里有一个操作是读锁,就是将数据锁定不可看。保护数据安全,我们测试就不去使用了,企业中是需要执行的,但是数据同步时需要打开读锁
在这里插入图片描述
查看主节点的二进制文件名称和位置
在这里插入图片描述
在这里插入图片描述
第三步:配置从节点Slave节点
在配置文件里写上id号,和master区分开即可
在这里插入图片描述
在这里插入图片描述
执行安全初始化,同样先在mysql日志里找到初始密码
在这里插入图片描述
并且可以使用在master节点设置的用户redhat在slave节点上登录
在这里插入图片描述
在mysql程序里输入配置信息

mysql> CHANGE MASTER TO
    ->     MASTER_HOST='172.25.254.5',	#master节点IP
    ->     MASTER_USER='redhat',		#创建用来复制的用户
    ->     MASTER_PASSWORD='He1234..',	#用户的密码
    ->     MASTER_LOG_FILE='mysql-bin.000002',	#使用SHOW MASTER STATUS;在master节点查看到的二进制文件名
    ->     MASTER_LOG_POS=154;	#SHOW MASTER STATUS; 查看到的Position

在这里插入图片描述
完成后开启slave:
在这里插入图片描述
开启后查看slave节点的状态,查看到 Slave_IO_Running: Yes 和 Slave_SQL_Running: Yes 就可以了

在这里插入图片描述

第四步:测试主从复制
这里测试写操作必须是在master节点进行的,因为我们复制是从master节点到slave节点
在master节点创建新的数据库
在这里插入图片描述
在slvae节点可以接收到了新建的数据库
在这里插入图片描述
这样就完成了主从复制,需要注意的是测试时要配置火墙或者关闭防止干扰实验。
主从复制的真实工作方式并不是将数据进行传输,而是复制master节点上的操作,通过二进制日志文件记录,这些操作都记录在/var/lib/mysql里,这里有我们查看到的二进制日志文件,并且Position号也是记录在内


主从复制:GTID方式复制

二进制日志文件的主从复制弊端是如果在复制过程中系统奔溃了,文件里的操作步骤并没有进行完,就会出现数据丢失。
GTID(global transaction identifier)复制是通过将整个作为一个事物,分为事物1、事物2,复制操作是将整个事物进行复制,要么成功要么失败,这样就保证不会出现复制一般时中断而导致的数据丢失。
操作步骤同样可以在官方文档里看到。
在这里插入图片描述

操作配置:
第一步:配置master节点
在配置文件里打开gtid功能
在这里插入图片描述
在这里插入图片描述
重启mysqld服务

第二步:配置slave节点
上面的配置操作在slave节点同样需要操作一次
在这里插入图片描述
写完配置重启配置节点的MySQL服务
在mysql程序里停止之前的slave复制
在这里插入图片描述
再去更改新的master配置
在这里插入图片描述

mysql> CHANGE MASTER TO
     >     MASTER_HOST = '172.25.254.5',	#master节点的ip
     >     MASTER_PORT = 3306,			#master节点的mysql的端口
     >     MASTER_USER = 'redhat',		#用户名
     >     MASTER_PASSWORD = 'He1234..',	#密码
     >     MASTER_AUTO_POSITION = 1;	#设定从事物1开始复制

在这里插入图片描述
然后再执行开启复制,查看复制的状态
在这里插入图片描述

第三步:测试
在master节点里登录数据库写入数据
在这里插入图片描述
去slave节点查看是否同步数据
在这里插入图片描述
看到数据已经同步过来了,再去查看复制状态里的gtid的设定,这里是捕捉到一个事物1,并且复制过来了
在这里插入图片描述


半同步复制

主从复制的方式是通过主节点的操作产生事物1,写入bin-log buffer,通知slave,经过bin-log buffer检测后传输到slave的relay-log,再写入slave的数据库里。
如果在事物1在给slave传输过程中slave没有收到,并且master节点宕机了,slave节点会提升为了master节点,这就会丢失事物1.

半同步复制:
从mysql5.5之后,mysql为了保证主从库数据一致性,引进了semi-sync功能。在半同步复制的架构下,当master在将自己binlog发给slave上的时候,要确保slave已经接受到了这个二进制日志以后,才会返回数据给客户端。对比两种架构:异步复制对于用户来说,可以确保得到快速的响应结构,但是不能确保二进制日志确实到达了slave上;半同步复制对于客户的请求响应稍微慢点,但是他可以保证二进制日志的完整性。

半同步复制的概念:
1,当Slave主机连接到Master时,能够查看其是否处于半同步复制的机制。
2,当Master上开启半同步复制的功能时,至少应该有一个Slave开启其功能。此时,一个线程在Master上提交事务将受到阻塞,直到得知一个已开启半同步复制功能的Slave已收到此事务的所有事件,或等待超时。
3,当一个事务的事件都已写入其relay-log中且已刷新到磁盘上,Slave才会告知已收到。在 Master 实例上,有一个专门的线程(ack_receiver)接收备库的响应消息,并以通知机制告知主库备库已经接收的日志,可以继续执行。
4,如果等待超时,也就是Master没被告知已收到,此时Master会自动转换为异步复制的机制。当至少一个半同步的Slave赶上了,Master与其Slave自动转换为半同步复制的机制。
5,半同步复制的功能要在Master,Slave都开启,半同步复制才会起作用;否则,只开启一边,它依然为异步复制。
6,半同步特性的出现,就是为了保证在任何时刻主备数据一致的问题。相对于异步复制,半同步复制要求执行的每一个事务,都要求至少有一个备库成功接收后,才返回给用户。

配置半同步复制
第一步:配置master节点
在MySQL程序里安装master的插件

mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so'; 

在这里插入图片描述
查看插件是否正确安装

mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS
    ->        FROM INFORMATION_SCHEMA.PLUGINS
    ->        WHERE PLUGIN_NAME LIKE '%semi%';

在这里插入图片描述
激活插件

mysql> set global rpl_semi_sync_master_enabled= 1;

在这里插入图片描述

第二步:配置slave节点
在MySQL程序里安装slave的插件

mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so'; 

在这里插入图片描述
查看插件是否正确安装

mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS
    ->        FROM INFORMATION_SCHEMA.PLUGINS
    ->        WHERE PLUGIN_NAME LIKE '%semi%';

在这里插入图片描述

激活插件

mysql> set global rpl_semi_sync_slave_enabled= 1;

在这里插入图片描述
重启IO线程

mysql> STOP SLAVE IO_THREAD;
mysql> START SLAVE IO_THREAD;

在这里插入图片描述

第三步:测试半同步传输
在master节点查看状态,可以看到有一个节点在等待数据同步,因为我们只有一个从节点
在这里插入图片描述
查看master节点的变量,里面有超时时间,单位是毫秒,还有我们开启的半同步插件

# 超时时间的设定
mysql> SET GLOBAL rpl_semi_sync_master_timeout =10000000000000000000;	#一般设置为最大值

在这里插入图片描述
测试数据复制,在master节点写数据
在这里插入图片描述
在slave节点查看是没有问题的,
在这里插入图片描述
为了验证半同步复制的效果,关闭slave节点的IO线程,再去master节点写数据
在这里插入图片描述
master节点写的数据等待了10s钟,原因是我们设置的超时时间就是10s,超过时间之后就会自动转为异步复制,除非slave节点的IO线程再开启。这时master节点的写的数据是无法传输到slave节点的。
在这里插入图片描述

全同步复制,组复制

组复制和半同步复制的区别的是:
半同步复制是至少有一个slave节点返回信号;
组复制是需要组内所有节点返回信号。

这里测试需要将之前的数据库内容全部清除,将配置文件里新增的配置也删除
在这里插入图片描述
因为是组复制所以需要3台主机进行实验,一台主节点,两台作为从节点

编辑配置文件,写入以下配置内容

server_id=1    #三台主机的id号不同
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW

plugin_load_add='group_replication.so'
transaction_write_set_extraction=XXHASH64  
loose-group_replication_group_name="8053c671-0622-11e8-a300-525400b9c5e8"        #此ID可以自己指定格式一样就可以
loose-group_replication_start_on_boot=off  
loose-group_replication_local_address= "172.25.92.5:33061"                #绑定本地的172.25.92.1以及25901端口接受其他组成员的连接,
loose-group_replication_group_seeds="172.25.254.5:33061,172.25.254.6:33061,172.25.254.7:33061"          #本行为告诉服务器当服务器加入组,本设置可以不是全部的组成员服务地址
loose-group_replication_bootstrap_group= off   #配置是否自动引导组
loose-group_replication_single_primary_mode=FALSE  #设置组自动选择一个 server 来处理读/写工作。 这个 server 是主(PRIMARY),所有其他的都是从
loose-group_replication_enforce_update_everywhere_checks=FALSE  #多主模式下为多主更新启用或禁用严格一致性检查。
loose-group_replication_ip_whitelist="127.0.0.1,172.25.254.0/24" #添加白名单本机和172.25.254网段的主机
loose-group_replication_enforce_update_eveywhere_checks=ON  #打开检测查看所有节点数据是否是同步的
loose-group_replication_single_primary_mode=OFF #关闭单主节点模式,因为我们设置的是从节点也是可以接替主节点工作的

在这里插入图片描述

第一台节点上的操作
配置完后重新启动mysql,如果失败清空/var/lib/mysql目录里的内容,启动后还是去mysql.log日志里找初始密码,执行安全初始化
在mysql程序里关闭二进制日志

mysql> SET SQL_LOG_BIN=0;

在这里插入图片描述
创建用户,并授权复制,刷新列表

mysql> CREATE USER rpl_user@'%' IDENTIFIED BY 'He1234..'; #创建用户
mysql> GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%' IDENTIFIED BY 'He1234..';		#授权
mysql> FLUSH PRIVILEGES; #刷新授权表

然后再开启二进制日志
在这里插入图片描述
使用组复制方式

mysql> CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='He1234..' FOR CHANNEL 'group_replication_recovery';  

安装组复制的插件

mysql> INSTALL PLUGIN group_replication SONAME 'group_replication.so';

启动组复制,开启后关闭参数是防止每次开启时都会产生新的组名

mysql> SET GLOBAL group_replication_bootstrap_group=ON;	#打开参数
mysql> START GROUP_REPLICATION;	#开启组复制
mysql> SET GLOBAL group_replication_bootstrap_group=OFF;	#关闭参数

查看组状态

SELECT * FROM performance_schema.replication_group_members;

在这里插入图片描述

其他节点配置
2台从节点的配置和主节点上的是一样的,配置完,同样进行安全初始化
在这里插入图片描述
在这里插入图片描述
在程序里同样进行操作

mysql> SET SQL_LOG_BIN=0;
mysql> CREATE USER rpl_user@'%' IDENTIFIED BY 'He1234..'; 
mysql> GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%' IDENTIFIED BY 'He1234..';		
mysql> FLUSH PRIVILEGES; 
mysql> SET SQL_LOG_BIN=1;
mysql> CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='He1234..' FOR CHANNEL 'group_replication_recovery';
mysql> INSTALL PLUGIN group_replication SONAME 'group_replication.so';
mysql> set global group_replication_allow_local_disjoint_gtids_join=ON; #强制开启加入组复制
mysql> START GROUP_REPLICATION;

测试
配置需要在所有节点主机上配置地址解析
配置完成后,在任意节点上可以查看到3台服务器都是online状态
在这里插入图片描述
组复制的特点是在任意节点上插入数据其他节点都会同步,任何节点在写的时候都是主节点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
OPC UA是一种用于工业自动化领域的通信协议,它提供了一种标准化的方式,使得不同设备和系统之间可以进行可靠的数据传输和通信。OPC UA是一种开放的、跨平台的协议,可用于连接各种设备,包括传感器、控制器和工业设备。 MySQL是一种流行的关系型数据库管理系统,它使用结构化查询语言(SQL)来管理和操作数据库MySQL被广泛应用于各种应用程序中,包括网站开发、数据分析和企业应用。 在上述引用中,第一段引用提到了开发工业实时数据库OPC UA数据接口实现方法,以解决已有实时数据库与OPC UA设备之间数据无法传输的问题。第二段引用提到了实现实时数据库OPC UA数据接口可以解决已有实时数据库与OPC UA设备之间数据无法传输、系统集成度低、信息存储慢的问题。这表明OPC UA和实时数据库之间的数据传输是相关的。 第三段引用提到了在node-red中访问MySQL数据库需要下载相应的节点,并通过配置节点信息来进行增删查改操作。这说明MySQL在node-red中可以通过合适的节点进行数据操作。 综上所述,OPC UA是一种用于工业自动化领域的通信协议,用于实现不同设备和系统之间的数据传输和通信。而MySQL是一种关系型数据库管理系统,用于管理和操作数据库。在特定的场景中,可以使用OPC UA和MySQL来实现实时数据库与OPC UA设备之间的数据传输和存储。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Howei__

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

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

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

打赏作者

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

抵扣说明:

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

余额充值