shardingsphere第一课-前置课程-Mysql的集群搭建以及多数据源管理

news2024/9/28 3:22:32

一.Mysql的集群搭建(使用docker搭建省事)

1、关闭防火墙,重启docker**

#关闭docker
systemctl stop docker
#关闭防火墙
systemctl stop firewalld
#启动docker
systemctl start docker

2.1、准备主服务器
解释:
端口号是3306,
指定宿主机配置文件对应docker上mysql的配置文件,
同时指定宿主机日志信息对应docker上mysql的日志信息
指定密码默认123456
指定容器名字
privileged=true代表docker容器具备更多的权限
版本号

docker run -d \
-p 3306:3306 \
-v /renxh/mysql/master/conf:/etc/mysql/conf.d \
-v /renxh/mysql/master/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
--name renxh-mysql-master \
--privileged=true \
mysql:8.0.29

2.2创建MySQL主服务器配置文件:

vim /renxh/mysql/master/conf/my.cnf

配置如下内容

[mysqld]
# 服务器唯一id,默认值1
server-id=1
# 设置日志格式,默认值ROW
binlog_format=STATEMENT
# 二进制日志名,默认binlog
# log-bin=binlog
# 设置需要复制的数据库,默认复制全部数据库
#binlog-do-db=mytestdb
# 设置不需要复制的数据库
#binlog-ignore-db=mysql
#binlog-ignore-db=infomation_schema
重启MySQL容器
docker restart renxh-mysql-master

2.3使用命令行登录MySQL主服务器

#进入容器:env LANG=C.UTF-8 避免容器中显示中文乱码
docker exec -it atguigu-mysql-master env LANG=C.UTF-8 /bin/bash
#进入容器内的mysql命令行
mysql -uroot -p
#修改默认密码校验方式 因为mysql默认密码太简单了,这里简单设置下,不需要设置太复杂密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

2.4主机中创建slave用户:

-- 创建slave用户
CREATE USER 'renxh_slave'@'%';
-- 设置密码
ALTER USER 'renxh_slave'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
-- 授予复制权限
GRANT REPLICATION SLAVE ON *.* TO 'renxh_slave'@'%';
-- 刷新权限
FLUSH PRIVILEGES;

2.5主机中查询master状态

SHOW MASTER STATUS;

记下FilePosition的值。执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化
在这里插入图片描述
3.1准备从服务器
在docker中创建并启动MySQL从服务器:**端口3307

docker run -d \
-p 3307:3307 \
-v /renxh/mysql/slave1/conf:/etc/mysql/conf.d \
-v /renxh/mysql/slave1/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
--name renxh-mysql-slave1 \
--privileged=true \
mysql:8.0.29

3.2 创建MySQL从服务器配置文件

vim /renxh/mysql/slave1/conf/my.cnf

配置如下内容

[mysqld]
# 服务器唯一id,每台服务器的id必须不同,如果配置其他从机,注意修改id
server-id=2
# 中继日志名,默认xxxxxxxxxxxx-relay-bin
#relay-log=relay-bin

3.3使用命令行登录MySQL从服务器

#进入容器:
docker exec -it renxh-mysql-slave1 env LANG=C.UTF-8 /bin/bash
#进入容器内的mysql命令行
mysql -uroot -p
#修改默认密码校验方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

3.4在从机上配置主从关系
从机上执行以下SQL操作
MASTER_HOST对应ip地址,实际是master的mysql
MASTER_USER配置的master上的从用户,
MASTER_PASSWORD是密码
MASTER_PORT端口号
MASTER_LOG_FILE对应的二进制日志,看2.5
MASTER_LOG_POS对应的游标,从哪复制主数据,看2.5

CHANGE MASTER TO MASTER_HOST='192.168.85.200', 
MASTER_USER='renxh_slave',MASTER_PASSWORD='123456', MASTER_PORT=3306,
MASTER_LOG_FILE='binlog.000003',MASTER_LOG_POS=1357;

4.1启动主从同步
启动从机的复制功能,执行SQL:

START SLAVE;
-- 查看状态(不需要分号)
SHOW SLAVE STATUS\G

在这里插入图片描述
4.2自此实现了主从复制
在主机中执行以下SQL,在从机中查看数据库、表和数据是否已经被同步

CREATE DATABASE db_user;
USE db_user;
CREATE TABLE t_user (
 id BIGINT AUTO_INCREMENT,
 uname VARCHAR(30),
 PRIMARY KEY (id)
);
INSERT INTO t_user(uname) VALUES('zhang3');
INSERT INTO t_user(uname) VALUES(@@hostname);

4.3停止和重置

-- 在从机上执行。功能说明:停止I/O 线程和SQL线程的操作。
stop slave; 

-- 在从机上执行。功能说明:用于删除SLAVE数据库的relaylog日志文件,并重新启用新的relaylog文件。
reset slave;

-- 在主机上执行。功能说明:删除所有的binglog日志文件,并将日志索引文件清空,重新开始所有新的日志文件。
-- 用于第一次进行搭建主从库时,进行主库binlog初始化工作;
reset master;

二.多数据源管理

MyBatis-Plus框架的开发者就开发了这样的一个框架DynamicDataSource,可以简化多数据源访问的过程

在这里插入图片描述
引入依赖

<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>3.5.0</version>
        </dependency>

配置yaml,表名两个数据源,一个read一个write

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    #使用dynamicDatasource框架
    dynamic:
      #设置默认的数据源或者数据源组,read
      primary: read
      #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
      strict: false
      datasource:
        read:
          url: jdbc:mysql://localhost:3306/coursedb?serverTimezone=UTC
          username: root
          password: root
          initial-size: 1
          min-idle: 1
          max-active: 20
          test-on-borrow: true
          driver-class-name: com.mysql.cj.jdbc.Driver
        write:
          url: jdbc:mysql://localhost:3306/coursedb2?serverTimezone=UTC
          username: root
          password: root
          initial-size: 1
          min-idle: 1
          max-active: 20
          test-on-borrow: true
          driver-class-name: com.mysql.cj.jdbc.Driver
server:
  port: 8081

在service层加入注解就可以了在这里插入图片描述

不足:dynamic数据源无法保证多个事务情况,但是我们自己也可以拓展,查看源码,他只是针对一个数据源的链接执行的提交事务或者回滚事务,我们可以拓展获取到所有的数据源事务,一起提交或者回滚,
shardingsphere实现了这个功能
在这里插入图片描述
还可以根据session获取数据源
在这里插入图片描述
在这里插入图片描述
解释:当将数据源放到session里面后,在业务层,根据#session可以读取对应的数据源,源码如下
在这里插入图片描述
还有其他几种,根据请求头读取,或者根据spel表达式读取
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/656851.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FPGA基础知识-时序和延迟

目录 学习目标&#xff1a; 学习内容&#xff1a; 1.延迟模型的类型 2.路径延迟建模 3.时序检查 4.延迟反标注 学习时间&#xff1a; 学习总结 学习目标&#xff1a; 提示&#xff1a;这里可以添加学习目标 鉴别Verilog 仿真中用到的延迟模型的类型&#xff0c;分布延…

YOLOv5改进系列(10)——替换主干网络之GhostNet

【YOLOv5改进系列】前期回顾: YOLOv5改进系列(0)——重要性能指标与训练结果评价及分析 YOLOv5改进系列(1)——添加SE注意力机制

项目中还不会用SpringSecurity,看这篇文章就够了

安全管理是Java应用开发中无法避免的问题&#xff0c;随着Spring Boot和微服务的流行&#xff0c;Spring Security受到越来越多Java开发者的重视&#xff0c;究其原因,还是沾了微服务的光。作为Spring家族中的一员,其在和Spring家族中的其他产品如SpringBoot、Spring Cloud等进…

client-go的Indexer三部曲之而:性能测试

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码)&#xff1a;https://github.com/zq2599/blog_demos 本篇概览 本文是《client-go的Indexer》系列的第二篇&#xff0c;在前文咱们通过实例掌握了client-go的Indexer的基本功能&#xff0c;本篇咱们尝试对下面这…

6.pixi.js编写的塔防游戏(类似保卫萝卜)-游戏资源打包逻辑

游戏说明 一个用pixi.js编写的h5塔防游戏&#xff0c;可以用electron打包为exe&#xff0c;支持移动端&#xff0c;也可以用webview控件打包为app在移动端使用 环境说明 cnpm6.2.0 npm6.14.13 node12.22.7 npminstall3.28.0 yarn1.22.10 npm config list electron_mirr…

配置legacyUnhandledExceptionPolicy属性防止处理异常后程序崩溃退出(C#)

这是这篇文章后面遗留的问题&#xff1a; winform中的全局异常信息_winform全局异常捕获_zxy2847225301的博客-CSDN博客 就是线程抛出异常后&#xff0c;被AppDomain.CurrentDomain.UnhandledException注册的事件捕获后&#xff0c;程序依旧崩溃退出。 解决方案&#xff1a;在…

架构-嵌入式模块

章节架构 约三分&#xff0c;主要为选择题 #mermaid-svg-z6RGCDSEQT5AhE1p {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-z6RGCDSEQT5AhE1p .error-icon{fill:#552222;}#mermaid-svg-z6RGCDSEQT5AhE1p .error-text…

【产品经理】从用户体验五要素出发,谈如何设计与体验一款产品

用户体验五要素是产品人必备的知识技能&#xff0c;由于网络碎片化的了解&#xff0c;往往容易造成其高深莫测&#xff0c;晦涩难懂的形象&#xff0c;进而对其束之高阁。但实质不过是一种产品分析与设计的方法论&#xff0c;正确姿势去了解它能帮助我们更好地理解一款产品和从…

移动端小于12px的字体处理方法

今天在按设计稿坐页面时&#xff0c;遇到了下图的情况 ​​​​​ 由于浏览器对字体最小为12px的限制&#xff0c;所以我查阅资料后尝试使用transform:scale来处理 代码如下&#xff1a; <div class"icon"><span class"iconfont icon-a-xuexi3 icon-…

ZYNQ——PL端流水灯的实现

文章目录 一、介绍二、代码编写三、引脚分配四、仿真分析五、添加 ILA IP六、板上验证 一、介绍 本文介绍的是在ZYNQ 7020黑金开发板上实现PL端流水灯的例子&#xff0c;开发板上PL端的LED灯总共有4个&#xff0c;在原理图中找到 PL LED 如下图所示&#xff0c;通过看图可知&a…

【MarkDown】CSDN Markdown之四象限图quadrantChart详解

四象限图 四象限图是一种将数据分为四个象限的可视化方法。它用于在二维网格上绘制数据点&#xff0c;其中一个变量表示x轴&#xff0c;另一个变量表示y轴。根据针对正在分析的数据集的一组标准&#xff0c;将图表分成四个相等的部分来确定四个象限。经常使用四象限图来识别数…

父亲节|祝天下所有父亲节日快乐,长寿安康!

父亲节&#xff0c;是一个感谢父亲的节日。普遍认为的日期是每年6月的第三个星期日&#xff0c;在这一天世界上有52个国家和地区在过父亲节。同时注重孝道也是我们中华民族的传统文化。 在这个感恩的节日里 把最真诚美好的祝福 送给天下所有的父亲们 祝福他们 节日快乐&…

OpenAI 大模型生态

目录标题 1. 语言类大模型2. 图像多模态大模型3. 语音识别模型4. 文本向量化模型5. 审查模型6. 编程大模型1. 语言类大模型 包括GPT-3、GPT-3.5、GPT-4系列模型。并且,OpenAl在训练GPT-3的同时,训练了参数不同、复杂度各不相同的A、B、C、D四项大模型(基座模型),用于不同场景…

mysql 集群 MGR

mysql安装&#xff08;3台服务&#xff09; 1下载 wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz 2解压mysql wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz tar -zxvf…

键盘按键事件 通过键盘上下左右按键移动界面上图标

#main.c文件 #include “keyevent.h” #include int main(int argc, char *argv[]) { QApplication a(argc, argv); KeyEvent w; w.show(); return a.exec();} #include “keyevent.h”//头文件 #ifndef KEYEVENT_H #define KEYEVENT_H #include #include #include cl…

Windows安装Make工具(make.exe和mingw)

1、make.exe 官网介绍&#xff1a;Make是一个工具&#xff0c;它控制从程序的源文件生成程序的可执行文件和其他非源文件。Make从一个名为Makefile的文件中获取如何构建程序的知识&#xff0c;该文件列出了每个非源文件以及如何从其他文件中计算它。当你编写一个程序时&#x…

[性能测试工具]——Loadrunner的使用及安装指南

目录 一、基本概念 1.1 什么是性能测试&#xff1f; 1.2 性能测试和功能测试的区别&#xff1f; 1.3 什么样的软件属于性能好&#xff0c;什么样的软件属于性能不好&#xff1f; 1.4 哪些因素会影响到软件性能&#xff1f; 二、为什么对软件进行性能测试&#xff1f; 三、性…

压测工具Jmeter学习

压测工具Jmeter Jmeter介绍 Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试&#xff0c;它最初被设计用于Web应用测试&#xff0c;但后来扩展到其他测试领域。 它可以用于测试静态和动态资源&#xff0c;例如静态文件、Java 小服务程序、CGI …

Django基础入门④:数据表显示和Django模板详讲

Django基础入门④&#xff1a;数据表显示和Django模板详讲 数据表显示字段显示表单显示分块内联显示列表显示搜索栏目创建筛选排序分页导入导出 Django模板什么是模板模板使用render方法详解 &#x1f3d8;️&#x1f3d8;️个人简介&#xff1a;以山河作礼。 &#x1f396;️&…

CVPR | 时尚领域视觉语言预训练模型Kaleido-BERT

来源&#xff1a;投稿 作者&#xff1a;小灰灰 编辑&#xff1a;学姐 这是一篇在时尚领域、往细粒度方向做视觉-语言预训练的工作。 论文标题&#xff1a;Kaleido-BERT: Vision-Language Pre-training on Fashion Domain 论文链接&#xff1a;https://arxiv.org/abs/2103.1611…