IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Mysql实现主从复制 -> 正文阅读

[大数据]Mysql实现主从复制

本文会与SpringBoot实现读写分离实现业务的读写分离。
首先准备三台mysql
mysql-1:192.168.31.62
mysql-2:192.168.1.5
mysql-3:192.168.1.6
并且在三台机器上使用ping命令测试网络是否通畅。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在Master主库开启log_bin功能
windows是 my.ini
linux是 my.cnf
添加以下内容(注意备份源文件,并且尽量不要用原始编辑器打开,会修改编码格式,导致mysql无法正常启动

# 配置要给Slave同步的数据库
binlog-do-db=life_account_db
# 不用给Slave同步的数据库,一般是Mysql自带的数据库就不用给Slave同步了
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
# 自动清理30天前的log文件
expire_logs_days=30
# 启用二进制日志
log-bin=mysql-bin

#集群唯一ID
server-id=1

在这里插入图片描述
查看log_bin开启状态

show variables like '%log_bin%';

在这里插入图片描述
在主库中创建用户,并设置该用户授予复制权限

#切换至mysql库中
use mysql
#创建用户并设置可访问的地址为所有,密码为123456
CREATE USER 'master'@'%' IDENTIFIED BY '123456'
#刷新
FLUSH PRIVILEGES	
#给master用户配置复制权限,可访问库为所有,可访问地址为所有
grant replication slave on *.* to 'master'@'%'	
#查看权限是否配置成功
show grants for master	
#查看网络访问策略是否配置成功
select user,host from user

在这里插入图片描述
在这里插入图片描述
查看当前库中数据的日志名称及偏移量
File和Position的值后面配置从库时需要用到。

show master status

在这里插入图片描述
在从库中配置(192.168.1.5)
linux的 /etc/my.cnf

server-id=2

在这里插入图片描述
重启mysql

systemctl restart mysqld

登录mysql进行从库的读取配置

#停止主从
stop slave
#设置主从配置 
change master to master_host='192.168.31.62', master_port=3306, master_user='master', master_password='123456', master_log_file='mysql-bin.000051', master_log_pos=649
#启动主从
start slave;

设置主从配置语句解释:

#master_host 主库ip
#master_port 主库端口
#master_user 主库提供可用来主从复制的用户名
#master_password 同上的密码
#master_log_file  主库中log日志的名称 也就是File
#master_log_pos 主库中log日志的偏移量 也就是Position

在这里插入图片描述
查看主从状态:

#\G会有格式
show slave status\G;

当以下两种状态都为yes时就设置成功
Slave_IO_Runing:Yes
Slave_SQL_Runing:Yes
在这里插入图片描述
配置从库2(192.168.1.6)
由于我是复制的192.168.1.5的虚拟机,所以需要删除以下文件
复制过来的uuid是一样的,后面是会出错的,删除之后重启mysql会重新生成一个不一样的。

rm  /var/lib/mysql/auto.cnf 

/etc/my.cnf中的service-id的值不要重复

测试
首先清空测试表数据

delete from acc_order where id >0

发现192.168.1.6没有删除数据,执行show slave status发现
Slave_SQL_Runing:No

#这个参数会跳过从主节点接下来的N个事件。这个参数用来修复由SQL语句导致的复制停止。
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1

并且发现如果使用范围删除,如果主库删了id为112,113的数据,但是从库有id为111的数据,那么就只会删除112,113的数据。id为111的数据依旧存在(说明log-bin保存的是真正执行的sql),所以实际操作之前需要将主库的sql同步至从库中,保证起始阶段的数据一致性。

测试删除
主库执行删除操作:
在这里插入图片描述
从库执行查询操作:在这里插入图片描述
在这里插入图片描述
测试新增
主库执行新增操作:
在这里插入图片描述
从库执行查询操作
在这里插入图片描述
在这里插入图片描述
至此mysql的一主两从基本实现。
在实施的过程中遇到很多问题,并且实际工作中由运维来提供的主从读取用户的权限和地址都是会限制的。如果用于实际工作中,用户和可访问地址都要尽可能的缩小,来减少数据被恶意篡改的风险。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-24 18:15:37  更:2022-05-24 18:19:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:44:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码