32次8.21(学习playbook-roles,脚本创建数据库和表,mycat读写分离)
1.roles目录介绍
files:⽤来存放由copy模块或script模块调⽤的⽂件。 tasks:⾄少有⼀个main.yml⽂件,定义各tasks。 handlers:有⼀个main.yml⽂件,定义各handlers。 templates:⽤来存放jinjia2模板。 vars:有⼀个main.yml⽂件,定义变量。 meta:有⼀个main.yml⽂件,定义此⻆⾊的特殊设定及其依赖关系。
注意: 在每个⻆⾊的⽬录中分别创建files, tasks,handlers,templates,vars和meta⽬录,⽤不到的⽬录可以创建为空⽬录。
2.使用roles安装httpd和mysql
1.创建roles角色基础目录与文件
[root@kong ~]# cd /etc/ansible/roles [root@kong roles]# ls [root@kong roles]# mkdir nginx [root@kong roles]# ls nginx [root@kong roles]# cd nginx [root@kong nginx]# mkdir files [root@kong nginx]# mkdir tasks [root@kong nginx]# mkdir handlers [root@kong nginx]# mkdir templates [root@kong nginx]# mkdir vars [root@kong nginx]# mkdir meta [root@kong nginx]# tree . ├── files ├── handlers ├── meta ├── tasks ├── templates └── vars [root@kong nginx]# touch handlers/mian.yml [root@kong nginx]# touch tasks/mian.yml [root@kong nginx]# touch vars/mian.yml [root@kong nginx]# tree . ├── files ├── handlers │ └── mian.yml ├── meta │ └── mian.yml ├── tasks │ └── mian.yml ├── templates └── vars└── mian.yml
2.创建playbook调用角色
[root@1 roles]# vim /etc/ansible/playbook/test002.yml---- hosts: sremote_user: rootroles:- httpd- mysql [root@1 roles]# cd[root@1 ~]# vim /etc/ansible/roles/mysql/tasks/main.yml ---- name: 卸载mysqlyum: name=mysql state=absent- name: 安装mysqlyum: name=mysql state=present[root@1 ~]# vim /etc/ansible/roles/httpd/tasks/main.yml---- name: 卸载httpdyum: name=httpd state=absent- name: 安装httpdyum: name=httpd state=present- name: 启动httpdservice: name=httpd state=started enabled=yes[root@1 ~]# ansible-playbook /etc/ansible/playbook/test002.yml
3.配置⼀主⼆从的mysql服务器 mysql57
1.mysql服务器端⼝3306,不要关闭防⽕墙
# 主从配置[root@mysql57 ~]# firewall-cmd --permanent --add-port=3306/tcp success[root@mysql57 ~]# firewall-cmd --reload success[root@mysql57 ~]# firewall-cmd --list-ports 3306/tcp96 yum -y install lrzsz66 tar -zxf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz 67 cp -r mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysql68 mkdir /usr/local/mysql/mysql-files69 useradd -r -s /sbin/nologin mysql70 chown mysql:mysql /usr/local/mysql/mysql-files/71 chmod 750 /usr/local/mysql/mysql-files/72 rm -rf /etc/my.cnf# 主配置73 /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql74 /usr/local/mysql/bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data76 cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql5777 service mysql57 start79 sed -i '$aexport PATH=/usr/local/mysql/bin:$PATH' /etc/profile80 source /etc/profilevim /usr/local/mysql/my.cnf[mysqld]basedir=/usr/local/mysqldatadir=/usr/local/mysql/datasocket=/tmp/mysql.sockactivate_all_roles_on_login=onport=3306log-error=/usr/local/mysql/data/db01-master.errlog-bin=/usr/local/mysql/data/binlogserver-id=10character_set_server=utf8mb4service mysql57 restart81 mysql -p'zc0fLfoM%SDP'mysql> alter user 'root'@'localhost' identified by '123';Query OK, 0 rows affected (0.15 sec) //修改root密码mysql> create user 'slave0'@'%' identified by '123';Query OK, 0 rows affected (0.03 sec) //创建slave用户mysql> grant replication slave on *.* to 'slave0'@'%';Query OK, 0 rows affected (0.02 sec) //授予replication slave权限mysql> flush privileges; //重新加载权限表Query OK, 0 rows affected (0.00 sec)mysql> flush tables with read lock; //刷新所有表并施加一个全局读锁Query OK, 0 rows affected (0.01 sec)mysql> show master status; //查看主服务器当前二进制日志的状态信息+---------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+---------------+----------+--------------+------------------+-------------------+| binlog.000003 | 1178 | | | |+---------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)rm -rf /usr/local/mysql/data/auto.cnfrsync -av /usr/local/mysql/data root@10.0.0.58:/usr/local/mysql/rsync -av /usr/local/mysql/data root@10.0.0.59:/usr/local/mysql/# 从配置cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql57service mysql57 startsed -i '$aexport PATH=/usr/local/mysql/bin:$PATH' /etc/profilesource /etc/profilevim /usr/local/mysql/my.cnf[mysqld]basedir=/usr/local/mysqldatadir=/usr/local/mysql/datasocket=/tmp/mysql.sockactivate_all_roles_on_login=onport=3310log-error=/usr/local/mysql/data/db01-slave.errrelay-log=/usr/local/mysql/data/relaylogserver-id=11character_set_server=utf8mb4service mysql57 restartmysql -p'123'mysql> change master to-> master_host='10.0.0.57',-> master_user='slave0',-> master_password='123',-> master_port=3306,-> master_log_file='binlog.000003',-> master_log_pos=1178;Query OK, 0 rows affected, 9 warnings (0.02 sec)mysql> start slave;Query OK, 0 rows affected, 1 warning (0.03 sec)mysql> show slave status\G*************************** 1. row ***************************Slave_IO_State: Waiting for source to send eventMaster_Host: 10.0.0.57Master_User: slaveMaster_Port: 3306Connect_Retry: 60Master_Log_File: binlog.000003Read_Master_Log_Pos: 1178Relay_Log_File: relaylog.000002Relay_Log_Pos: 323Relay_Master_Log_File: binlog.000003Slave_IO_Running: YesSlave_SQL_Running: Yes
2.在mysql中添加eleme数据库设置为utf8mb4
[root@mysql57 ~]# mysql -p'123'mysql> create database if not exists eleme charset utf8mb4;Query OK, 1 row affected (0.00 sec)mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || eleme || mysql || performance_schema || sys |+--------------------+6 rows in set (0.00 sec)
3.添加表t_user
mysql> create table eleme.t_user(-> id int not null primary key,-> name varchar(32) not null,-> username varchar(32) not null,-> password varchar(32) not null,-> remark varchar(32) not null-> );Query OK, 0 rows affected (0.01 sec)mysql> desc eleme.t_user;+----------+--------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+----------+--------------+------+-----+---------+-------+| id | int(11) | NO | PRI | NULL | || name | varchar(32) | NO | | NULL | || username | varchar(32) | NO | | NULL | || password | varchar(32) | NO | | NULL | || remark | varchar(32) | NO | | NULL | |+----------+--------------+------+-----+---------+-------+5 rows in set (0.02 sec)
4.添加2⾏记录
mysql> insert into eleme.t_user values(1,'超级管理员','admin','admin','超级管理员'),(2,'普通用户','guest','guest','普通用户');Query OK, 2 rows affected (0.00 sec)Records: 2 Duplicates: 0 Warnings: 0mysql> select * from eleme.t_user;+----+-----------------+----------+----------+-----------------+| id | name | username | password | remark |+----+-----------------+----------+----------+-----------------+| 1 | 超级管理员 | admin | admin | 超级管理员 || 2 | 普通用户 | guest | guest | 普通用户 |+----+-----------------+----------+----------+-----------------+2 rows in set (0.00 sec)
5.使⽤mycat为3台数据库设置负载均衡(读写分离)
[root@mycat ~]# systemctl stop firewalld[root@mycat ~]# systemctl disable firewalld[root@mycat ~]# lsanaconda-ks.cfg Mycat-server-1.6.5-release-20180122220033-linux.tar.gzjdk-8u192-linux-x64.tar.gz v[root@mycat ~]# tar -xf jdk-8u192-linux-x64.tar.gz [root@mycat ~]# tar -xf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz [root@mycat ~]# cp -r jdk1.8.0_192/ /usr/local/jdk[root@mycat ~]# cp -r mycat/ /usr/local/[root@mycat ~]# ls /usr/local/jdk/bin lib src.zipCOPYRIGHT LICENSE THIRDPARTYLICENSEREADME-JAVAFX.txtinclude man THIRDPARTYLICENSEREADME.txtjavafx-src.zip README.htmljre release[root@mycat ~]# sed -i '$aexport JAVA_HOME=/usr/local/jdk' /etc/profile[root@mycat ~]# source /etc/profile[root@mycat ~]# $JAVA_HOME-bash: /usr/local/jdk: 是一个目录[root@mycat ~]# sed -i '$aexport PATH=$PATH:$JAVA_HOME/bin' /etc/profile[root@mycat ~]# source /etc/profile[root@mycat ~]# $PATH-bash: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/jdk/bin: 没有那个文件或目录[root@mycat ~]# javac -version javac 1.8.0_192[root@mycat ~]# ls /usr/local/mycat/bin catlet conf lib logs version.txt[root@mycat ~]# ll /usr/local/mycat/总用量 12drwxr-xr-x. 2 root root 190 8月 15 15:19 bindrwxr-xr-x. 2 root root 6 8月 15 15:19 catletdrwxr-xr-x. 4 root root 4096 8月 15 15:19 confdrwxr-xr-x. 2 root root 4096 8月 15 15:19 libdrwxr-xr-x. 2 root root 6 8月 15 15:19 logs-rwxr-xr-x. 1 root root 219 8月 15 15:19 version.txt[root@mycat ~]# ls /usr/local/mycat/bin/mycat [root@mycat ~]# vim /usr/local/mycat/conf/server.xml<user name="li" defaultAccount="true"><property name="password">li</property><property name="schemas">eleme</property><!-- 表级 DML 权限设置 --><!-- <privileges check="false"><schema name="TESTDB" dml="0110" ><table name="tb01" dml="0000"></table><table name="tb02" dml="1111"></table></schema></privileges> --></user><!--<user name="user"><property name="password">user</property><property name="schemas">TESTDB</property><property name="readOnly">true</property></user>-->[root@mycat ~]# vim /usr/local/mycat/conf/schema.xml
[root@mycat ~]# /usr/local/mycat/bin/mycat startStarting Mycat-server...[root@mycat ~]# netstat -lnput | grep 8066tcp6 0 0 :::8066 :::* LISTEN 1336/java
6.配置静态资源服务器,为前段提供图⽚和视频
7.部署2台有java17.0.3环境的后端服务器,端⼝8080,不关防⽕墙
8.部署nginx代理java服务器,负载均衡策略为轮询问,端⼝为80
相关文章:
32次8.21(学习playbook-roles,脚本创建数据库和表,mycat读写分离)
1.roles目录介绍 files:⽤来存放由copy模块或script模块调⽤的⽂件。 tasks:⾄少有⼀个main.yml⽂件,定义各tasks。 handlers:有⼀个main.yml⽂件,定义各handlers。 templates:⽤来存放jinjia2模板。 vars:…...

I2C通信协议(软件I2C和硬件I2C)
相比于之前学的异步全双工且需要两条通信线的串口通信,I2C则为同步半双工,仅需要一条通信线,全双工与半双工区别如下: 全双工(Full Duplex)半双工(Half Duplex)数据传输方式同时双向…...

Linux入门——08 进程间通讯——管道
1.进程间通讯 1.1什么是通讯 进程具有独立性(每个进程都有自己的PCB,独立地址空间,页表)但是要进行进程的通信,通信的成本一定不低,打破了独立性 进程间通信目的 数据传输:一个进程需要将它的数据发送给…...

深入探讨SD NAND的SD模式与SPI模式初始化
在嵌入式系统和存储解决方案中,SD NAND的广泛应用是显而易见的。CS创世推出的SD NAND支持SD模式和SPI模式,这两种模式在功能和实现上各有优劣。在本文中,我们将深入探讨这两种模式的初始化过程,并比较它们在不同应用场景下的优劣&…...
【jvm】栈和堆的区别
目录 1. 用途2. 线程共享性3. 内存分配和回收4. 生命周期5. 性能特点 1. 用途 1.堆:主要用于存储对象实例和数组。在Java中,所有通过new关键字创建的对象都会被分配到堆上。堆是一个大的内存池,用于存储所有的Java对象,包括实例变…...
智能的意义是降低世界的不确定性
世界充满着不确定性,而智能天生就追求一定的确定性,因为不确定性会危及智能的生存。智能本身是一种有序、相对确定的结构产生的,虽然也有一定的不确定性,而且这些不确定性有利于智能的进化,但是,相对而言&a…...

python实现指数平滑法进行时间序列预测
python实现指数平滑法进行时间序列预测 一、指数平滑法定义 1、指数平滑法是一种常用的时间序列预测算法,有一次、二次和三次平滑,通过加权系数来调整历史数据权重; 2、主要思想是:预测值是以前观测值的加权和,且对不同的数据给予不同的权数,新数据给予较大的权数,旧数…...

linux文件——用户缓冲区——概念深度探索、IO模拟实现
前言:本篇文章主要讲解文件缓冲区。 讲解的方式是通过抛出问题, 然后通过分析问题, 将缓冲区的概念与原理一步一步地讲解。同时, 本节内容在最后一部分还会带友友们模拟实现一下c语言的printf, fprintf接口,…...

Hive3:常用查询语句整理
一、数据准备 建库 CREATE DATABASE itheima; USE itheima;订单表元数据 1 1000000 100058 6 -1 509.52 0.00 28155.40 499.33 0 0 lisi shanghai 157 2019-06-22 17:28:15 2019-06-22 17:28:15 1 2 5000000 100061 72 -1 503.86 0.00 38548.00 503.86 1 0 zhangsan shangha…...

Ubuntu下载安装教程|Ubuntu最新长期支持(LTS)版本24.04 LTS下载安装
安装Ubuntu Ubuntu最新长期支持(LTS)版本24.04 LTS Ubuntu 24.04 LTS | 概览 Ubuntu长期支持(LTS)版本,LTS意为“长期支持”,一般为5年。LTS版本将提供免费安全和维护更新至 2029年4月。 Ubuntu 24.04 LTS(代号“Noble Numbat”,…...

通知:《自然语言及语音处理设计开发工程师》即将开课!
自然语言及语音处理设计开发工程师:未来职业的黄金选择 下面我们来看看证书颁发的背景: 为进一步贯彻落实中共中央印发《关于深化人才发展体制机制改革的意见》和国务院印发《关于“十四五”数字经济发展规划》等有关工作的部署要求,深入实…...

Vim youcompleteme Windows 安装保姆级教程
不说废话。 准备 检查 Vim 的 Python 配置 安装好 vim 和 python 后(python 必须 ≥ \ge ≥ 3.6),在 cmd 下运行 vim --version会弹出以下窗口。 如果发现 python/dyn 和 python3/dyn 都是 - (我不知道只有前者是 能不能运行…...
港迪技术IPO提交注册,拟募资6.56亿元
武汉港迪技术股份有限公司(下称“港迪技术”)拟在创业板IPO上市,并于近期在深交所提交招股书(注册稿),进入提交注册阶段。 港迪技术IPO招股书(注册稿)显示,公司是一家专…...
retinaface在ubuntu20.04(wsl2)下使用tensorrt(c++)部署
1. 参考博客: 1. Retinaface Tensorrt Python/C部署:https://blog.csdn.net/weixin_45747759/article/details/124534079 2. B站视频教程:https://www.bilibili.com/video/BV1Nv4y1K727/ 3. Retinaface_…...

vue打包设置 自定义的NODE_ENV
默认NODE_ENV 自定义process.env.NODE_ENV的值_process.node.env的值-CSDN博客 NODE_ENV开发环境下:NODE_ENVdevelopment(默认) 生产环境下:NODE_ENVproduction(默认) NODE_ENV 除了默认的 development 和 production 以外,确实可以自定义…...

python爬虫521
爬虫521 记录 记录 最近想学爬虫,尝试爬取自己账号下的文章标题做个词云 csdn有反爬机制 原理我就不说啦 大家都写了 看到大家结果是加cookie 但是我加了还是521报错 尝试再加了referer 就成功了(╹▽╹) import matplotlib import requests from wordcloud impor…...
CSS中flex:1是什么属性
flex: 1 是 CSS 中的一个简写属性,用于设置 Flex 项目的灵活伸缩比例(flex-grow)、收缩比例(flex-shrink)以及基础大小(flex-basis)。具体来说,flex: 1 实际上是以下三个属性的简写&…...
网络硬件升级指南:提升性能的策略与实践
随着企业对网络依赖程度的增加,网络性能的提升已成为信息技术部门的首要任务。本文将探讨如何通过升级网络硬件来提高网络性能,包括选择正确的硬件、实施升级策略和考虑未来网络的可扩展性。 一、网络性能的重要性 在数字化时代,网络是企业…...

XSS-过滤特殊符号的正则绕过
目录 靶场练习地址:https://xss.pwnfunction.com/ 题目源码: 代码分析: 方法一:匿名函数 方法二:使用eval函数绕过限制 示例: 方法三:利用hash绕过 靶场练习地址:https://xs…...

CocosCreator3.8 IOS 构建插屏无法去除的解决方案
CocosCreator3.8 IOS 构建插屏无法去除的解决方案 在实际项目开发过程中,我们通常无需CocosCreator 自带的插屏,一般采用自定义加载页面。 然后在构建IOS 项目时,启用(禁用)插屏无法操作,如下图所示&#…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...

uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...