中间件
  • 系统安全及其应用

    系统安全及其应用 部署服务器的初始化步骤: 1、配置IP地址,网关,DNS解析 2、安装源,外网(在线即可yum) 内网(只能用源码包编译安装) 3、磁盘分区 lvm raid 4、系统权限配置和基础安全加固 系统安全 1、保护数据安全,客户信息,财务信息。 2、互联网,网络业务服务,必须要通过工信部的资质审核。 3、保护品牌形象。信息安全是红线。工资 应用: 1、不需要或者不想登录的用户设置为nologin。 ​ usermod -s nologin 用户 管理员权限 [root@localhost ~]# usermod -s nologin qqq #qqq用户无法登录系统 [root@localhost ~]# usermod -s /bin/bash qqq #qqq用户可以登录系统 2、锁定用户: ​ usermod -L 用户 #锁定用户 [root@localhost ~]# usermod -L qqq 锁定用户 [root@localhost ~]# passwd -S qqq 查看用户状态 qqq LK 2024-05-30 0 99999 7 -1 (密码已被锁定。)  usermod -U 用户 #解锁   [root@localhost ~]# usermod -U qqq [root@localhost ~]# passwd -S qqq qqq PS 2024-05-30 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)  passwd -l 用户   [root@localhost ~]# passwd -l qqq #锁定用户qqq的密码 锁定用户 qqq 的密码 。 passwd: 操作成功 passwd -u   [root@localhost ~]# passwd -u qqq 解锁用户 qqq 的密码。 passwd: 操作成功 3、删除无用账号 ​ userdel -r 用户名 [root@localhost ~]# userdel -r qqq 4、锁定重要文件 ​ passwd shadow fstab ifcfg-ens33 (重要文件) lsattr 文件 查看文件状态 [root@localhost ~]# lsattr /etc/passwd /etc/fstab ---------------- /etc/passwd ---------------- /etc/fstab #表示没有状态 锁定/解锁 文件:   [root@localhost ~]# chattr +i /etc/pa……

    SE_Gai 2024-06-18
    15 0 0
  • MySQL出现(2003)错误的解决方法(三种思路)

      MYSQL的2003错误代码是:"cant connection to mysql server on ‘IP’" 意思为:"无法连接到“IP”上的 mysql 服务器". 我下列描述的问题中,第一种和第三种是以虚拟机连接MYSQL的2003方法; 而第二种是用的typora-setup-x64在本机中使用构建MYSQL服务的方法(没接触的朋友可以理解是轻量化的进入mysql的方式,大概可以理解为:虚拟机等于是把一个电脑劈开,然后分开操作,这种方法是直接本机作为虚拟机) 1.防火墙问题(在FinalShell中可以根据需求查看防火墙状态): systemctl status firewalld.service 查看防火墙状态; 之后看到输出的代码: Active: active (running) since xxxx xxxx xxxx Active"active(running)就是在运行,since后面的是时间,这里我没启动,使用就不上图了. 再输入代码:systemctl stop firewalld.service 意思是关闭防火墙. 然后再次查看防护火墙状态,现在,running应该就会变成变成dead. 之后,可以尝试是否可以连接上Navict premium也就是数据库. ========================================================================= 2.MYSQL的错误关闭/启动(就是MYSQL的服务异常,右击"此电脑",然后点击'管理",之后如图: 寻找提到的"MYSQL80",点进去选择重启, 注意这里不止是mysql80,版本不同后缀也不同,如:Mysql57 这种情况下的2003错误就是网关被占用问题,也就是可能是别人占用了你的网关(他的桥接IP地址恰巧和你一样等等原因) 那么在终端打开,输入ping + 你的电脑ip地址,因为虚拟机和本机是需要互联的,所以两个ip都不可以出错,然后输入ping+本机IP地址,看是否有响应 如下图就是有相应,否则就是无响应. 如果是ip无响应,那么只需要点击左上角的"虚拟机"图标,点击设置,如下图:  然后继续设置,如下图:   选择NAT模式,点击右下角的确定即可.他会自动寻找对应ip.之后可以再次尝试ping+IP地址,查看是否有……

    SE_Gai 2024-06-13
    86 0 0
  • Apache 服务的搭建与配置

      Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。 一.安装Apache 1关闭防火墙和selinux [root@testhost ~]# systemctl stop firewalld [root@testhost ~]# systemctl disable firewalld [root@testhost ~]# setenforce 0 setenforce: SELinux is disabled 2.yum安装httpd yum - y install httpd #安装httpd systemctl start httpd #开启httpd (推荐) netstat -ntlp | grep httpd #查看httpd端口 tcp6 0 0 :::80 :::* LISTEN 63101/httpd 方法二: httpd -k start #启动 httpd -k stop #关闭 3.apache的目录介绍 conf 存储配置文件 conf.d 存储配置子文件 logs 存储日志 modules 存储模块 run 存储Pid文件,存放的pid号码。是主进程号 主配置文件: # vim /etc/httpd/conf/httpd.conf ServerRoot "/etc/httpd" #定义工作目录 Listen 80 #监听端口 User apache # 子进程的用户,有可能被人改称www账户 Group apache # 子进程的组 ServerAdmin root@localhost # 设置管理员邮件地址 DocumentRoot "/var/www/html" # 发布网站的默认目录,想改改这里。 IncludeOptional conf.d/*.conf # 包含conf.d目录下的所有*.conf配置文件 # 设置DocumentRoot指定目录的属性 <Directory "/var/www/html"> # 网站容器开始标识 Options Indexes FollowSymLinks # 找不到主页时,链接到网站目录以外,如测试页面 AllowOverride None # 对网站设置特殊属性:none不设置特殊属性,all允许 Require all granted # granted表示允许所有人访问,denied表示拒绝所有人访问 </Directory> # 容器结束 DirectoryIndex index.html # 定……

    SE_Meng 2024-06-05
    16 0 0
  • 用压缩包安装MySQL

                                           用压缩包安装MySQL   1.  下载zip安装包 2.   解压缩 3.   F:\mysql-8.0.23-winx64\bin 4.  设置环境变量 5.  Path F:\mysql-8.0.23-winx64\bin 6.  用系统管理员启动cmd 7.  mysqld -install MySQL80 8.  在F:\mysql-8.0.23-winx64\bin 新建my.ini文件敲入以下内容 [mysqld] basedir=F:\mysql-8.0.23-winx64 datadir=F:\mysql-8.0.23-winx64\data port=3306 执行mysqld --initialize --console 完成初始化 记住初始化用户名和密码 root@localhost: OuoEnX?+K67a 修改默认密码 ALTER USER 'root'@'localhost'identified by '123456'; 12下载dbever客户端软件,直接解压缩找到dbever.exe双击运行。 按照提示安装驱动(必须安装) 报错解决办法 把下图中false值改为true

    SE_Zhang 2024-05-29
    12 0 0
  • MySQL中间件之ProxySQL(15):ProxySQL代理MySQL组复制

    1.ProxySQL+组复制前言 在以前的ProxySQL版本中,要支持MySQL组复制(MGR,MySQL Group Replication)需要借助第三方脚本对组复制做健康检查并自动调整配置,但是从ProxySQL v1.4.0开始,已原生支持MySQL组复制的代理,在main库中也已提供mysql_group_replication_hostgroups表来控制组复制集群中的读、写组。 Admin> show tables ; +--------------------------------------------+ | tables | +--------------------------------------------+ | global_variables | | mysql_collations | | mysql_group_replication_hostgroups | | mysql_query_rules | ... | runtime_mysql_group_replication_hostgroups | ... | scheduler | +--------------------------------------------+ admin> show tables from monitor; +------------------------------------+ | tables | +------------------------------------+ | mysql_server_connect_log | | mysql_server_group_replication_log | | mysql_server_ping_log | | mysql_server_read_only_log | | mysql_server_replication_lag_log | +------------------------------------+ 尽管已原生支持MGR,但仍然需要在MGR节点中创建一张额外的系统视图sys.gr_member_routing_candidate_status为ProxySQL提供监控指标。创建该视图的脚本addition_to_sys.zip我已上传。在后文需要创建该系统视图的地方,我会将这个脚本的内容贴出来。 本文先解释mysql_group_replication_hostgroups表中各字段的意义,然后按……

    SE_You 2024-04-02
    20 0 0
  • MySQL中间件之ProxySQL(14):ProxySQL+PXC

    1.ProxySQL+PXC 本文演示ProxySQL代理PXC(Percona XtraDB Cluster)的方法,不涉及原理,纯配置过程,所以如有不懂之处,请先掌握相关理论。 ProxySQL要代理PXC,需要使用ProxySQL额外提供的脚本/usr/share/proxysql/tools/proxysql_galera_checker.sh做健康检查并动态调整,通过Scheduler来调用实现。ProxySQL v2.0版本将原生支持Galera并增加相关表mysql_galera_hostgroups,到时就无需借用第三方脚本。 实验环境: Node HostName IP_address Node1 proxysql 192.168.100.21 Node2 pxc1 192.168.100.32 Node3 pxc2 192.168.100.33 Node4 pxc3 192.168.100.34 1.1 配置PXC 1.安装percona xtradb cluster 3个节点上(pxc1、pxc2、pxc3)都操作: 提供yum源: [percona] name=percona_repo baseurl = https://mirrors.tuna.tsinghua.edu.cn/percona/release/$releasever/RPMS/$basearch enabled = 1 gpgcheck = 0 ##安装 yum install Percona-XtraDB-Cluster-client-57 2.提供配置文件 第一个节点(pxc1)配置文件/etc/my.cnf: [mysqld] server-id=100 # 各节点不同 datadir=/data socket=/data/mysql.sock log-error=/data/error.log pid-file=/data/mysqld.pid log-bin=/data/master-bin log_slave_updates wsrep_provider=/usr/lib64/galera3/libgalera_smm.so wsrep_cluster_name=pxc-cluster wsrep_cluster_address=gcomm://192.168.100.32,192.168.100.33,192.168.100.34 wsrep_node_name=pxc1 # 各节点不同 wsrep_node_address=192.168.100.32 # 各节点不同 wsrep_sst_method=xtrabackup-v2 wsrep_sst_auth=sstuser:P@ssword1! pxc_strict_mode=ENFORCING binlog_format=ROW default_storage_engine=InnoDB innodb_autoinc_loc……

    SE_You 2024-04-01
    50 0 0
  • MySQL中间件之ProxySQL(13):ProxySQL集群

    ProxySQL有原生的集群功能,但是这个原生的集群功能还正在试验阶段。本文会详细介绍这个原生集群的实现细节。 1.ProxySQL部署在哪 在拓扑结构中,ProxySQL部署在应用程序和MySQL集群的中间位置。应用程序向ProxySQL发起SQL语句,ProxySQL分析收到的SQL语句,进行匹配、重写等操作,然后路由给后端MySQL集群中的某实例。 如图: 上图描述的是多个application共用一个ProxySQL实例,但需求总是多变的。例如有些app比较繁忙,我们想要将这些繁忙的app使用的ProxySQL分离出来,让不同的application独立使用一个ProxySQL甚至一个ProxySQL集群,让那些不太繁忙的app共用一个ProxySQL。这种情形如下图: 还可以为每个app都配置一个ProxySQL,如下图。 这种配置的好处是明显的,没有单点故障,不需要额外的负载均衡,app+proxysql的节点可以轻松扩展。但是,也有缺点,各ProxySQL之间无法共享查询缓存。但无论如何,这是一种良好的配置方式。 此外,还可以使用多层结构,对ProxySQL群进行负载均衡。如下图: 上图几个注意点: 负载软件层,也可以使用ProxySQL对ProxySQL集群进行负载均衡,因为ProxySQL自身就是一个代理,而且是专门负责MySQL协议的代理。 在负载均衡层,要保证事务持久,不能让一个事务内的不同语句路由到不同的目标上,也就是说负载的目标是"有状态"的。因此在使用lvs/haproxy时,必须想办法保证事务持久性。通用性方法是,从多个ProxySQL节点中取出一个作为逻辑写节点(可以有backup),haproxy/lvs通过端口(也可以用户名,但通常采用端口)代理的方式,强制将所有写语句路由到这个固定的ProxySQL节点上。 而通过ProxySQL来代理ProxySQL集群,因为ProxySQL内部支持事务持久(在mysql_users表中字段transaction_persistent控制持久性)。 综上分析,通过lvs/haproxy负载ProxySQL或者负载MySQL、Galera……

    SE_You 2024-03-29
    84 0 0
  • MySQL中间件之ProxySQL(12):禁止多路路由

    1.multiplexing multiplexing,作用是将语句分多路路由。开启了multiplexing开关,读/写分离、按规则路由才能进行。但有时候,有些语句要求路由到同一个主机组,甚至是同一个主机组中的同一个节点上。这时会自动禁用multiplexing。禁用multiplexing后,语句会根据同一个连接进行路由。 也就是说,在禁用multiplexing情况下,会将语句路由到同一个主机组中的同一个节点上。 什么情况下会禁用多路路由(disable multiplexing)? 激活事务时 当某连接中激活了一个事务,则在该事务提交或回滚之前,multiplexing将一直被禁用。 表被锁 当执行了LOCK TABLE, LOCK TABLES 或 FLUSH TABLES WITH READ LOCK 时,将一直禁用multiplexing,直到执行UNLOCK TABLES。 使用GET_LOCK()时 如果执行了GET_LOCK(),将一直禁用multiplexing,且永不再次启用。 使用某些特定的会话/用户(session/user)变量 所有查询的query_digest部分包含了@的都将禁用multiplexing,且永不再次启用。 下面的命令是类似的情况,都会禁用multiplexing且不再次启用: SET SQL_SAFE_UPDATES=?,SQL_SELECT_LIMIT=?,MAX_JOIN_SIZE=? (mysql --safe-updates) SET FOREIGN_KEY_CHECKS SET UNIQUE_CHECKS SET AUTO_INCREMENT_INCREMENT (v 1.4.4+) SET AUTO_INCREMENT_OFFSET (v 1.4.4+) SET GROUP_CONCAT_MAX_LEN (v 1.4.4+) 但下面两个语句是例外,因为它们被硬编码为不禁用multiplexing: SELECT @@tx_isolation SELECT @@version 之所以要硬编码这两个例外,是因为很多应用程序在每个连接中都会执行这两个语句。 使用SQL_CALC_FOUND_ROWS 如果查询语句中包含了SQL_CALC_FOUND_ROWS,那么该连接上将禁用multiplexing且不再启用。 临时表 如果执行了CREATE TEMPORARY TABLE,那么该连接上将禁用multiplexing且不再启用。 使用PREPARE 如……

    SE_You 2024-03-28
    28 0 0
  • MySQL中间件之ProxySQL(11):链式规则( flagIN 和 flagOUT )

    1.理解链式规则 在mysql_query_rules表中,有两个特殊字段"flagIN"和"flagOUT",它们分别用来定义规则的入口和出口,从而实现链式规则(chains of rules)。 链式规则的实现方式如下: 当入口值flagIN设置为0时,表示开始进入链式规则。如未显式指定规则的flagIN值,则默认都为0。 当语句匹配完当前规则后,将记下当前规则的flagOUT值,如果flagOUT值非空(NOT NULL),则为该语句打上flagOUT标记。如果该规则的apply字段值不是1,则继续向下匹配。 如果语句的flagOUT标记和下一条规则的flagIN值不同,则跳过该规则,继续向下匹配。直到匹配到flagOUT=flagIN的规则,则匹配该规则。该规则是链式规则中的另一条规则。 直到某规则的apply字段设置为1,或者已经匹配完所有规则,则最后一次被评估的规则将直接生效,不再继续向下匹配。 通过下面两张图,应该很容易理解链式规则的生效方式。 必须注意,规则是按照rule_id的大小顺序进行的。且并非只有apply=1时才会应用规则,当无规则可匹配,或者某规则的flagIN和flagOUT值相同,都会应用最后一次被评估的规则。 以下几个示例,可以解释生效规则: # rule_id=3 生效 +---------+-------+--------+---------+ | rule_id | apply | flagIN | flagOUT | +---------+-------+--------+---------+ | 1 | 0 | 0 | 23 | | 2 | 0 | 23 | 23 | | 3 | 0 | 23 | NULL | +---------+-------+--------+---------+ # rule_id=2 生效 +---------+-------+--------+---------+ | rule_id | apply | flagIN | flagOUT | +---------+-------+--------+---------+ | 1 | 0 | 0 | 23 | | 2 | 0 | 23 | 23 | | 3 | 0 | 24 | NULL | +---------+-----……

    SE_You 2024-03-27
    19 0 0
  • MySQL中间件之ProxySQL(10):读写分离方法论

    1.不同类型的读写分离 数据库中间件最基本的功能就是实现读写分离,ProxySQL当然也支持。而且ProxySQL支持的路由规则非常灵活,不仅可以实现最简单的读写分离,还可以将读/写都分散到多个不同的组,以及实现分库sharding(分表sharding的规则比较难写,但也能实现)。 本文只描述通过规则制定的语句级读写分离,不讨论通过 ip/port, client, username, schemaname 实现的读写分离。 下面描述了ProxySQL能实现的常见读写分离类型。 1.1 最简单的读写分离 如图。 这种模式的读写分离,严格区分后端的master和slave节点,且slave节点必须设置选项read_only=1。在ProxySQL上,分两个组,一个写组HG=10,一个读组HG=20。同时在ProxySQL上开启monitor模块的read_only监控功能,让ProxySQL根据监控到的read_only值来自动调整节点放在HG=10(master会放进这个组)还是HG=20(slave会放进这个组)。 这种模式的读写分离是最简单的,只需在mysql_users表中设置用户的默认路由组为写组HG=10,并在mysql_query_rules中加上两条简单的规则(一个select for update,一个select)即可。 例如,下面实现的就是这种读写分离模式。 mysql_replication_hostgroups: +------------------+------------------+----------+ | writer_hostgroup | reader_hostgroup | comment | +------------------+------------------+----------+ | 10 | 20 | cluster1 | +------------------+------------------+----------+ mysql_servers: +--------------+----------+------+--------+--------+ | hostgroup_id | hostname | port | status | weight | +--------------+----------+------+--------+--------+ | 10 | master | 3306 | ONLINE | 1 | | 20 | slave1 | 3306 | O……

    SE_You 2024-03-26
    26 0 0