春风十里不如你 —— Taozi - 部署 2023-06-14T20:42:42+08:00 Typecho https://xiongan.host/index.php/feed/atom/tag/%E9%83%A8%E7%BD%B2/ <![CDATA[【MySQL】主从复制介绍及配置]]> https://xiongan.host/index.php/archives/216/ 2023-06-14T20:42:42+08:00 2023-06-14T20:42:42+08:00 admin https://www.xiongan.host MySQL的主从复制

什么是mysql的主从复制?

MySQL 主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。
MySQL 默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可
以在远程连接上进行,从节点可以复制主数据库中的所有数据库或者特定的数据库,或者特定的表。

主从原理三个步骤:

  • 在主库上把数据更改记录到二进制日志中(Binary Log)中,这些记录称为二进制日志事件。
  • 从库通过IO线程将主库上的日志复制到自己的中继日志(Relay Log)中。
  • 从库通过SQL线程读取中继日志中的事件,将其重放到自己数据上。

主从形式(五个)

包括一主一从、主主复制、一主多从、多主一从、连级复制

mysql主从复制安装配置(一主一从)

主机名ip
master192.168.11.10(mysql5.7)
node192.168.11.20(mysql5.7)

数据库安装rpm方式(两台)

下载rpm文件

wget https://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm

68670917464

安装下载好的rpm文件

yum -y localinstall mysql57-community-release-el7-10.noarch.rpm

安装成功后会在/etc/yum.repos.d/下看到两个新增加的repo文件

68670938840

使用yum安装mysql

yum -y install mysql-community-server --nogpgcheck

68670970003

设置mysql服务开机自启

#启动mysql服务
systemctl start mysqld
#设置mysql开机启动
systemctl enable mysqld --now

获取mysql服务的临时密码

grep "password" /var/log/mysqld.log

68670979253

使用临时密码登录,进入后修改密码,并修改远程访问权限(也可以不用)

mysql -uroot -p
#输入密码
//修改密码
set global validate_password_policy=0; 修改密码策略
set global validate_password_length=1; 修改密码长度
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; 修改密码为123456
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant
option; 允许其他机器远程连接
flush privileges;

68671008383

主从配置

在两台数据库中分别创建数据库

--注意两台必须全部执行
create database tz;

在主(master)服务器进行如下配置:

#修改配置文件,执行以下命令打开mysql配置文件
vi /etc/my.cnf
#在mysqld模块中添加如下配置信息
log-bin=master-bin #二进制文件名称
binlog-format=ROW #二进制日志格式,有row、statement、mixed三种格式,row指的是把改变的内
容复制过去,而不是把命令在从服务器上执行一遍,statement指的是在主服务器上执行的SQL语句,在从服
务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。mixed指的是默认采用基于语句的复
制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。
server-id=1 #要求各个服务器的id必须不一样
binlog-do-db=zq #同步的数据库名称

68671052097

配置从服务器登录主服务器的账号授权

--授权操作
set global validate_password_policy=0;
set global validate_password_length=1;
grant replication slave on *.* to 'root'@'%' identified by '123456';
--刷新权限
flush privileges;

68671065825

从服务器配置(node节点)

#修改配置文件,执行以下命令打开mysql配置文件
vi /etc/my.cnf
#在mysqld模块中添加如下配置信息
log-bin=master-bin #二进制文件的名称
binlog-format=ROW #二进制文件的格式
server-id=2 #服务器的id

68671075815

重启主服务器的mysql服务

#重启mysql服务
systemctl restart mysqld
#登录mysql数据库
mysql -uroot -p
#查看master的状态
show master status;

68671085837

重启从服务器(node)并进行相关配置

#重启mysql服务
systemctl restart mysqld
#登录mysql
mysql -uroot -p
#连接主服务器
change master to master_host='192.168.11.10',master_user='root',master_password='123456',master_port=3306,master_log_file='master-bin.000001',master_log_pos=154;
#启动slave
start slave;
#查看slave的状态
show slave status\G(注意没有分号)

68671110334

验证主从数据库

//主库中:
mysql> use tz;
mysql> create table user(id int,age int);
mysql> insert into user values(1,1);

68671122292

从库中查看

mysql> use tz;
mysql> show tables;
mysql> select * from user;

68671129271

注意:

  • 主库中插入数据,从库中会实现同步。
  • 从库中插入数据,主库不会实现同步。
]]>
<![CDATA[【k8s】将Go服务上传到k8s]]> https://xiongan.host/index.php/archives/215/ 2023-06-07T22:56:55+08:00 2023-06-07T22:56:55+08:00 admin https://www.xiongan.host 将Go服务发布到k8s集群

首先安装go环境

下载go的tar.gz包,可以前往阿里云镜像站go页面下载相应版本地址:https://mirrors.aliyun.com/golang/?spm=a2c6h.13651104.mirror-free-trial.1.75b41e57BOxyw5

然后下载到虚拟机中,并且解压到/usr/local/src中

//解压缩go包
[root@master ~]# tar -zxf go1.18.10.linux-amd64.tar.gz -C /usr/local/src
//添加环境变量
[root@master src]# vim /etc/profile
//添加如下:
export GOROOT=/usr/local/src
export PATH=$PATH:$GOROOT/bin
//保存退出后source一下
source /etc/profile
//查看是否成功
go version

创建源码文件

[root@master ~]# mkdir 0607tz
[root@master ~]# cd 0607tz/
[root@master 0607tz]# vim main.go
//编辑到文件中
package main

import (
        "net/http"

        "github.com/gin-gonic/gin"
)

func statusOKHandler(c *gin.Context) {
        c.JSON(http.StatusOK, gin.H{"status": "success~welcome to study"})
}

func versionHandler(c *gin.Context) {
        c.JSON(http.StatusOK, gin.H{"version": "v1.1版本"})
}

func main() {
        router := gin.New()
        router.Use(gin.Recovery())
        router.GET("/", statusOKHandler)
        router.GET("/version", versionHandler)
        router.Run(":8080")
}

Go mod初始化项目

初始化项目

[root@master 0607tz]# go mod init 0607tz
go: creating new go.mod: module 0607tz
go: to add module requirements and sums:
        go mod tidy
//成功初始化
//设置代理
[root@master 0607tz]# go env -w GOPROXY=https://goproxy.cn,direct
[root@master 0607tz]# go mod tidy
//构建源码
[root@master 0607tz]# CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o k8s-demo main.go

68609962763

68609970371

创建镜像

编写dockerfile文件

[root@master 0607tz]# vim Dockerfile
FROM alpine
ADD k8s-demo /data/app/
WORKDIR /data/app/
CMD ["/bin/sh","-c","./k8s-demo"]

构建镜像

[root@master 0607tz]# docker build -t taozheng/k8sdemo:v1 .

68610002587

打包镜像,传到k8s工作节点

[root@master 0607tz]# docker save -o k8sdemo.tar.gz taozheng/k8sdemo:v1 
[root@master 0607tz]# scp k8sdemo.tar.gz node:/root/
k8sdemo.tar.gz                                100%   16MB  68.0MB/s   00:00
//在node节点解压镜像

68610036977

创建deployment的yaml文件

[root@master 0607tz]# vim k8s.yaml
//k8s.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: k8s-demo
  namespace: default
  labels:
    app: k8s-demo
    cy: taozheng
spec:
  selector:
    matchLabels:
      app: k8s-demo
  replicas: 4
  template:
    metadata:
      labels:
        app: k8s-demo
    spec:
      containers:
      - image: taozheng/k8sdemo:v1
        imagePullPolicy: IfNotPresent
        name: k8s-demo
        ports:
        - containerPort: 8080
          protocol: TCP
        resources:
          limits:
            cpu: 100m
            memory: 100Mi
          requests:
            cpu: 50m
            memory: 50Mi
        livenessProbe:
          tcpSocket:
            port: 8080
          initialDelaySeconds: 10
          timeoutSeconds: 3
        readinessProbe:
          httpGet:
            path: /
            port: 8080
          initialDelaySeconds: 10
          timeoutSeconds: 2

创建go的服务

[root@master 0607tz]# vim gosvc.yaml
kind: Service
apiVersion: v1
metadata:
  name: k8s-demo-svc
  namespace: default
  labels:
    app: k8s-demo
    cy: taozheng
spec:
  ports:
    - name: api
      port: 8080
      protocol: TCP
      targetPort: 8080
  selector:
    app: k8s-demo

k8s部署

68610144309

查看pod和服务信息

68610148691

修改svc的type类型变成nodePort

[root@master 0607tz]# kubectl edit svc k8s-demo-svc

68610160469

保存后再次查看,已经修改成功

68610172769

查看svc标签

68610189875

浏览器测试访问:

68610205900

68610208689

]]>
<![CDATA[【Hive】Hadoop下的部署(未上接)]]> https://xiongan.host/index.php/archives/194/ 2023-03-27T23:41:04+08:00 2023-03-27T23:41:04+08:00 admin https://www.xiongan.host Hive的部署

MySQL安装

安装

首先上传mysql数据库的rpm压缩包到主机/opt/software

image-20230327163403445

//解压缩包到当前目录中
[root@master-tz software]# unzip mysql-5.7.18.zip
//进入到rpm软件目录中,首先检查mariadb,如果有就要卸载

image-20230327163858423

//安装数据库
[root@master-tz mysql-5.7.18]# rpm -ivh mysql-community-common-5.7.18-1.el7.x86_64.rpm
[root@master-tz mysql-5.7.18]# rpm -ivh mysql-community-libs-5.7.18-1.el7.x86_64.rpm
[root@master-tz mysql-5.7.18]# rpm -ivh mysql-community-client-5.7.18-1.el7.x86_64.rpm
//安装下面的rpm需要首先安装perl软件
[root@master-tz mysql-5.7.18]# yum install -y net-tools perl
[root@master-tz mysql-5.7.18]# rpm -ivh mysql-community-server-5.7.18-1.el7.x86_64.rpm

配置

修改配置文件/etc/my.cnf

vim /etc/my.cnf
//最后添加五行
default-storage-engine=innodb
innodb_file_per_table
collation-server=utf8_general_ci
init-connect='SET NAMES utf8'
character-set-server=utf8
//最后保存退出

image-20230327164618444

启动

[root@master-tz mysql-5.7.18]# systemctl start mysqld
[root@master-tz mysql-5.7.18]# systemctl status mysqld

image-20230327164839744

查看MySQL初始密码

[root@master-tz mysql-5.7.18]# cat /var/log/mysqld.log | grep password
2023-03-27T08:52:43.074230Z 1 [Note] A temporary password is generated for root@localhost: KbVXiHlul3:> //查看初始密码,下方需要填写
[root@master-tz mysql-5.7.18]# mysql_secure_installation //重新设定密码,并把密码设置为Password123$
//注:允许远程连接设定为n,表示允许远程连接,其它设定为y

除了以下是n其他都是y

image-20230327165755870

登录数据库客户端

[root@master-tz mysql-5.7.18]# mysql -uroot -pPassword123$

image-20230327165944986

新建hive用户与元数据

mysql>create database hive_db;
mysql>create user hive identified by 'Password123$';
mysql>grant all privileges on *.* to hive@'%' identified by 'Password123$' with grant
option ;
mysql>grant all privileges on *.* to 'root'@'%'identified by 'Password123$' with grant
option;
mysql>flush privileges;

Hive安装

安装

首先将hive的压缩包上传到虚拟机,并解压,重命名hive,设置hive权限

[root@master-tz ~]# tar -zxf apache-hive-2.0.0-bin.tar.gz -C /usr/local/src/
[root@master-tz ~]# cd /usr/local/src/
[root@master-tz src]# mv apache-hive-2.0.0-bin/ hive
[root@master-tz src]# chown -R hadoop:hadoop hive/

修改环境变量

[root@master-tz src]# vim /etc/profile
# set Hive environment
export HIVE_HOME=/usr/local/src/hive # Hive安装目录
export PATH=$HIVE_HOME/bin:$PATH # 添加将Hive的bin目录
export HIVE_CONF_DIR=$HIVE_HOME/conf #Hive的环境变量
[root@master-tz src]# source /etc/profile

修改配置文件

hive-site.xml文件

首先切换到hadoop用户

[hadoop@master-tz conf]$ cd /usr/local/src/hive/conf
[hadoop@master-tz conf]$ vim hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!--元数据库地址-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master-tz:3306/hive_db?createDatabaseIfNotExist=true</value>
</property>
<!--mysql用户名-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<!--mysql中hive用户密码-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>Password123$</value>
</property>
<!--mysql驱动-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/usr/local/src/hive/tmp</value>
</property>
<property>
<name>hive.exec.local.scratchdir</name>
<value>/usr/local/src/hive/tmp/${hive.session.id}_resources</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/usr/local/src/hive/tmp</value>
</property>
<property>
<name>hive.server2.logging.operation.log.location</name>
<value>/usr/local/src/hive/tmp/operation_logs</value>
</property>
<property>
<name>hive.server2.webui.host</name>
<value>master-tz</value>
</property>
<property>
<name>hive.server2.webui.port</name>
<value>10002</value>
</property>
</configuration>

hive-env.sh

[hadoop@master-tz conf]$ cp hive-env.sh.template hive-env.sh
[hadoop@master-tz conf]$ vim hive-env.sh
//增加如下配置项
# Set JAVA
export JAVA_HOME=/usr/local/src/java
# Set HADOOP_HOME to point to a specific hadoop install directory
export HADOOP_HOME=/usr/local/src/hadoop
# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/usr/local/src/hive/conf
# Folder containing extra ibraries required for hive compilation/execution can be
controlled by:
export HIVE_AUX_JARS_PATH=/usr/local/src/hive/lib

MySQL的驱动jar包上传至虚拟机,然后将该jar包复制到hive安装路径下的lib文件夹中

[root@master-tz software]# cp mysql-connector-java-5.1.46.jar /usr/local/src/hive/lib/

确保hadoop集群正常,然后初始化hive元数据库

[hadoop@master-tz conf]$ schematool -initSchema -dbType mysql

image-20230327174225761

进入hive shell界面

[hadoop@master-tz ~]$ hive
hive>

如果出现以下情况

image-20230327174414446

则需要去hive-site.xml配置文件修改为

<value>jdbc:mysql://master-tz:3306/hive_db?createDatabaseIfNotExist=true&useSSL=false</value>

image-20230327174701459

]]>
<![CDATA[【Rabbitmq】集群服务部署]]> https://xiongan.host/index.php/archives/82/ 2022-10-17T12:23:00+08:00 2022-10-17T12:23:00+08:00 admin https://www.xiongan.host 主机名ip角色Node1192.168.123.23节点1Node2192.168.123.123节点2

两个节点:

都需要安装两个软件

Yum install -y erlang rabbitmq-server

安装完成后检查信息

rabbitmq-plugins list

image.png

运行rabbitmq-server服务

image.png

提前修改主机名

分别是node1 node2

查看插件状态

rabbitmqctl cluster_status

image.png

查看端口开放情况:

netstat -ntap | grep 5672

image.png

停掉节点的服务:

Systemctl stop rabbitmq-server

查看node1的cookie的值

cat /var/lib/rabbitmq/.erlang.cookie

image.png

image.png

将node1的cookie值复制到node2节点上

scp /var/lib/rabbitmq/.erlang.cookie
192.168.123.123:/var/lib/rabbitmq/

image.png

image.png

image.png

这样node1和node2的cookie值相同了

开启各节点的rabbitmq服务

systemctl start rabbitmq-server

只在node2节点操作:

关闭app应用

systemctl start rabbitmq-server

image.png

在node2作为磁盘节点与node1连接起来

rabbitmqctl join_cluster --ram rabbit@node1-tz

image.png

启动app服务并且查看状态

rabbitmqctl start_app

rabbitmqctl cluster_status

image.png

访问http://192.168.123.23:15672

账号密码guest

image.png

]]>