部署mysql主从同步,部署mysql数据读写分离结构+mycat2
主要命令
- [root@mysql59 ~]# yum –y install mysql-server mysql
- [root@mysql59 ~]# systemctl start mysqld
- [root@mysql59 ~]# vim /etc/my.cnf.d/mysql-server.cnf
- [mysqld]
- server-id=59
- log-bin=mysql59
- :wq
- [root@mysql59 ~]# systemctl restart mysqld
- //用户授权
- [root@mysql59 ~]# mysql
- mysql> create user repluser@"%" identified by "123qqq...A"; 创建用户
- Query OK, 0 rows affected (0.11 sec)
- mysql> grant replication slave on *.* to repluser@"%"; 授予权限
- Query OK, 0 rows affected (0.09 sec)
- //查看日志信息
- mysql> show master status;
- +----------------+----------+--------------+------------------+-------------------+
- | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
- +----------------+----------+--------------+------------------+-------------------+
- | mysql59.000001 | 667 | | | |
- +----------------+----------+--------------+------------------+-------------------+
- 1 row in set (0.00 sec)
配置slave服务器MySQL60
- //指定server-id 并重启数据库服务
- [root@mysql60 ~]# yum –y install mysql-serv er mysql
- [root@mysql60 ~]# systemctl start mysqld
- [root@mysql60 ~]# vim /etc/my.cnf.d/mysql-server.cnf
- [mysqld]
- server-id=60
- :wq
- [root@mysql60 ~]# systemctl restart mysqld
- //登陆服务指定主服务器信息
- [root@mysql60 ~]# mysql
- mysql> change master to master_host="192.168.88.59" , master_user="repluser" , master_password="123qqq...A" ,master_log_file="mysql59.000001" , master_log_pos=667;
- Query OK, 0 rows affected, 8 warnings (0.34 sec)
- //启动slave进程
- mysql> start slave ;
- Query OK, 0 rows affected, 1 warning (0.04 sec)
- //查看状态信息
- mysql> show slave status \G
- *************************** 1. row ***************************
- Slave_IO_State: Waiting for source to send event
- Master_Host: 192.168.88.59
- Master_User: repluser
- Master_Port: 3306
- Connect_Retry: 60
- Master_Log_File: mysql59.000001
- Read_Master_Log_Pos: 667
- Relay_Log_File: mysql60-relay-bin.000002
- Relay_Log_Pos: 322
- Relay_Master_Log_File: mysql59.000001
- Slave_IO_Running: Yes //IO线程
- Slave_SQL_Running: Yes //SQL线程
- Replicate_Do_DB:
- Replicate_Ignore_DB:
- Replicate_Do_Table:
- Replicate_Ignore_Table:
- Replicate_Wild_Do_Table:
- Replicate_Wild_Ignore_Table:
- Last_Errno: 0
- Last_Error:
- Skip_Counter: 0
- Exec_Master_Log_Pos: 667
- Relay_Log_Space: 533
- Until_Condition: None
- Until_Log_File:
- Until_Log_Pos: 0
- Master_SSL_Allowed: No
- Master_SSL_CA_File:
- Master_SSL_CA_Path:
- Master_SSL_Cert:
- Master_SSL_Cipher:
- Master_SSL_Key:
- Seconds_Behind_Master: 0
- Master_SSL_Verify_Server_Cert: No
- Last_IO_Errno: 0
- Last_IO_Error:
- Last_SQL_Errno: 0
- Last_SQL_Error:
- Replicate_Ignore_Server_Ids:
- Master_Server_Id: 59
- Master_UUID: 38c02165-005e-11ee-bd2d-525400007271
- Master_Info_File: mysql.slave_master_info
- SQL_Delay: 0
- SQL_Remaining_Delay: NULL
- Slave_SQL_Running_State: Replica has read all relay log; waiting for more updates
- Master_Retry_Count: 86400
- Master_Bind:
- Last_IO_Error_Timestamp:
- Last_SQL_Error_Timestamp:
- Master_SSL_Crl:
- Master_SSL_Crlpath:
- Retrieved_Gtid_Set:
- Executed_Gtid_Set:
- Auto_Position: 0
- Replicate_Rewrite_DB:
- Channel_Name:
- Master_TLS_Version:
- Master_public_key_path:
- Get_master_public_key: 0
- Network_Namespace:
- 1 row in set, 1 warning (0.00 sec)
- mysql>
主(master)数据库服务器角色
网站连接后用来存储数据的服务器(只有一台)
从(slave)数据库服务器角色
自动同步主服务器上的数据(可以有很多台)
配置mysql主从
54连接53把53上面的命令copy过去在54上执行一遍
IP 192.168.88.53 做master服务器
1.启用binlog日志文件,配置文件:/etc/my.cnf.d/mysql-server.cnf
2.用户授权
create user repluser@"%" identified by "123"
grant replication slave on *.* to repluser@"%";
3.查看正在使用的binlog日志文件
主从同步的工作原理
Slave_IO_Running: yes
负责联系master 复制master主机 bnlog 日志文件里的sql命令到本机的relay-log文件里
从主服务器总mysql主机名-relay-log 中继日志文件
Slave_SQL_Running:yes
执行本机relay-log里的日志文件,实现与master内容一致
必须io线程和sql线程是yes
单向同步,永远是从去同步主上的内容.
排错方法
Last_IO_Error: IO线程报错信息
报错原因 通常是change master to 的配置项不正确
解决办法: 重新指定主服务 stop slave change msater to start slave;
Last_SQL_Error: SQL线程报错信息
通常是执行relay-log文件里的sql命令时 失败 导致的
show slave status \G
可以竖着看
配置"一主多从"结构
配置数据读写分离结构(主从同步+mycat软件实现)
IP 192.168.88.54 做clave服务器
指定server_id 并重启数据库服务,指定主服务器信息,启动slave进程,查看状态信息
show slave status
1.指定server_id (不能重复,唯一的) 重启binlog服务器
要手动同步 主服务器 比自己多的
在master 服务器执行完全备份 把备份文件copy给slave主机
show master status;
]#mysqldump -B bbsdb > /root/bbsdb.sql
]# scp /root/bbsdb.sql root@192.168.88.55/root/
在slave服务器执行 备份文件 恢复数据
mysql < /rootbbsdb.sql
在slave 服务器执行 备份文件 恢复数据
2.指定主服务器信息
服务器的ip 用户名 密码 日志文件 偏移量
3.启动slave
4.查看状态信息
一主一从
一主多从
主从主
主主结构
主从同步
master服务器配置
1.启用binlog日志
2.创建用户并授权
3.查看正在使用的日志文件
slave服务器的配置
1.指定server_id (不能重复,唯一的) 重启binlog服务器
2.指定主服务器信息
服务器的ip 用户名 密码 日志文件 偏移量
3.启动slave
4.查看状态信息
Slave_IO_Running: yes
Slave_SQL_Running:yes
部署mysql数据读写分离结构+mycat2
理论:把客户端访问数据库服务的查询访问select 和 写访问 insert 分别给不同的数据库服务器处理.
功能:减轻单台数据库服务器的并发访问压力
如何实现数据读写分离
人肉分离 select ----------> 57
insert -----------> 56
proxy -----------> 58
通过搭建读写分离服务实现
能够实现数据读写分离服务的软件(中间件)有哪些
mysql-proxy mycat,mycat2(可以实现读写分离,高可用,分布式存储等功能)
环境准备:后端两台服务器一定是主从结构,配置,mysql主从结构
配置mycat服务器 192.168.88.58
1.安装mycat
2.修改配置
设置客户端连接mucat 服务器时 使用的用户名和密码:定义客户端连接mycat服务使用用户及密码:
设置mycat服务启动时连接的数据库服务器
根据配置在本机运行mysql服务并创建plj用户
3.启动mycat
mycat服务监听的是8066端口 mysql默认访问3306端口
三.连接mycat服务配置读写分离
mysql -h127.0.0.1 -P8066 -umycat -p654321
添加数据源 定义数据库服务器的ip地址
- /*+ mycat:createdatasource{
- "name":"whost56", "url":"jdbc:mysql://192.168.88.56:3306","user":"plja","password":"123456"}*/;
测试配置
mysql -h192.168.88.58 -Pmycat服务的端口 -umycat -p654321
2.在数据服务器 上添加plja用户
3.创建集群 把57()和56()组成工作组
删除
ls /usr/local/mycat/conf/datasources/
所添加的数据源所在位置
/*+mycat:showDataSources{}*/ \G
json命令查看数据源
- /*!mycat:createcluster{
- "name":"rwcluster",
- "masters":["whost56"],
- "replicas":["rhost57"]
- }*/ ;
4. 指定数据库服务器的角色
master 角色服务器负责insert 访问
slave角色服务器负责
5.定义集群出来读访问的策略
集群处理查询访问的方式
支持的策略有:BALANCE_ALL 获取集群中所有
默认的是发给所有BALANCE_ALL_READ 获取集群中允许读数据源
BALANCE_NONE 获取集群中允许
6.创建网站存储数据使用的库,并定义 库存储数据使用rwcluster
相关文章:
部署mysql主从同步,部署mysql数据读写分离结构+mycat2
主要命令 [rootmysql59 ~]# yum –y install mysql-server mysql[rootmysql59 ~]# systemctl start mysqld[rootmysql59 ~]# vim /etc/my.cnf.d/mysql-server.cnf[mysqld]server-id59log-binmysql59:wq[rootmysql59 ~]# systemctl restart mysqld//用户授权[rootmysql59 ~]# my…...
【最新!超详细C++入门】
01_C语言基础 一、课程目标 1、掌握 C基本语法:变量、常量、注释、标识符命名规范 2、掌握C数据类型 3、掌握C的输入和输出 4、掌握C运算符和表达式 5、掌握条件语句 6、掌握循环语句 二、课程内容 1 C初识 1.1 第一个C程序 编写一个C程序总共分为4个步骤…...

【Linux】【实战系列】10 分钟掌握日常开发中 Linux 网络处理相关命令
文章目录 lsofnetstatpingnslookupsshssh-keygenscpsftp 网络工具 curl网络工具 wget最后个人简介 hello,大家好,我是 Lorin,上一期和大家分享一期日常开发中常用的 Linux 文件和文本命令实战教学,这一期给大家带来常用的网络处理…...

语义分割常用评价指标
在图像处理领域中,语义分割是很重要的一个任务。在实际项目开发中,评估模型预测效果以及各指标的含义对于优化模型极为重要。 本文将主要评价指标的计算算法进行了详细说明,并加上注释解释每个指标的含义。这对理解各指标背后的数学原理以及能否在实践中应用或许有…...
从0开始学习C++ 第一课:你的第一个C++程序
第一课:你的第一个C程序 当然可以。让我们从C的基础开始,我们的第一课将覆盖以下几个主题: 程序结构编写和运行你的第一个C程序基本的输入输出(I/O) 第一课:你的第一个C程序 在C中,所有的程…...

Dubbo-admin监控中心
监控中心 Dubbo-admin监控中心执行操作启动provider和consumer项目进行测试总体流程 Dubbo-admin监控中心 dubbo-admin下载路径 git clone https://github.com/apache/dubbo-admin.git图1-1 dubbo-admin项目文件展示 执行操作 # 启动zookeeper# 前端 cd dubbo-admin-ui npm i…...

216. 组合总和 III - 力扣(LeetCode)
题目描述 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。 输入示例 k 3, n 7输出示例 [[1,2,…...
LeetCode-题目整理【5】:O(1) 时间插入、删除和获取随机元素
RandomizedSet结构体存在切片和哈希表的原因: 变长数组由于可以根据下标定位到特定元素,因此可以在 O(1)的时间内完成获取随机元素操作,但是由于无法在 O(1) 的时间内判断元素是否存在,因此不能在 O(1) 的时间内完成插入和删除操作…...

服务器感染了.wis[[Rast@airmail.cc]].wis勒索病毒,如何确保数据文件完整恢复?
导言: 在当今数字化的时代,恶意软件攻击已经变得越来越复杂和狡猾,[[MyFilewaifu.club]].wis [[backupwaifu.club]].wis[[Rastairmail.cc]].wis勒索病毒是其中的一种新威胁。本文91数据恢复将深入介绍[[MyFilewaifu.club]].wis [[backupwaif…...
ContentNegotiationManagerFactoryBean 内容协商
一.什么是内容协商 简单点说,就是同一资源,可以有多种表现形式,比如xml、json等,具体使用哪种表现形式,是可以协商的。 这是RESTfull的一个重要特性,Spring Web MVC也支持这个功能。 1.Spring MVC REST是如何决定采用…...
html css js 开发一个猜数字游戏
以下是一个使用HTML、CSS和JS开发的简单猜数字游戏的示例: HTML代码: <!DOCTYPE html> <html> <head><title>猜数字游戏</title><link rel"stylesheet" type"text/css" href"style.css&quo…...

HDD 东山再起,单块 30TB 起步新品想要颠覆储存行业
不得不承认,这年头机械硬盘(HDD)是越来越不受待见了。 体积大,耗电高,速度慢等多年祖传特点无不脱离当前消费者所追求的轻量化,高性能。 个人消费市场不约而同选择全面奔向固态硬盘(SSD&#x…...

【网络安全】-基本工具msf
secure 1、有此漏洞的目标主机2、无此漏洞的目标主机(常用) ps.本着兴趣爱好,加强电脑的安全防护能力,并严格遵守法律和道德规范。msf(metasploit framework)是一个开源的渗透测试框架,用于开发…...
Vue3的ref和reactive
目录 1、ref的基本使用 2、reactive的基本使用 3、ref操作dom 4、ref与reactive的异同 1、ref的基本使用 ref创建数据可以是基本类型也可以是引用类型 ref函数创建响应式数据,返回值是一个对象 模版中使用ref数据,省略.value,js代码中不能省略 获…...

Flink编程——风险欺诈检测
Flink 风险欺诈检测 文章目录 Flink 风险欺诈检测背景准备条件FraudDetectionJob.javaFraudDetector.java 代码分析执行环境创建数据源对事件分区 & 欺诈检测输出结果运行作业欺诈检测器 欺诈检测器 v1:状态欺诈检测器 v2:状态 时间完整的程序期望的…...
Day37 贪心算法 part06 738. 单调递增的数字 968. 监控二叉树
贪心算法 part06 738. 单调递增的数字 968. 监控二叉树 738. 单调递增的数字 class Solution { public:int monotoneIncreasingDigits(int n) {string strNum to_string(n);int tag strNum.size();for(int i strNum.size()-1; i>1; i--){if(strNum[i]<strNum[i-1]){…...

SpringBoot Redis入门(四)——Redis单机、哨兵、集群模式
单机模式:单台缓存服务器,开发、测试环境下使用;哨兵模式:主-从模式,提高缓存服务器的高可用和安全性。所有缓存的数据在每个节点上都一致。每个节点添加监听器,不断监听节点可用状态,一旦主节点…...
获取数组中的第一个、第二个、第三个......元素
常规操作可以直接使用索引(下标)获取: const arr [5,8,6,9,10] const first arr[0] //5 const second arr[1] //8 const third arr[2] //6 不使用索引,如何获取: const [first] [5,8,6,9,10] //…...

前端面试题(持续更新~~)
文章目录 一、基础1、数组常用的方法2、数组有哪几种循环方式?分别有什么作用?3、字符串常用的方法4、原型链5、闭包6、常见的继承7、cookie 、localstorage 、 sessionstrorage区别8、数组去重方法9、http 的请求方式10、数据类型的判断方法11、cookie …...
ubuntu下无法访问和ping通github的一种解决方法
近期在ubuntu下突然无法访问github了,ping也无法ping通,尝试过更换不同的网络也无济于事。后来在https://blog.csdn.net/weixin_48544978/article/details/133899687 这个文章中找到了解决办法。 运气比较好,只按照文章中的第一步将http://…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...

MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...