服务器离线部署docker,镜像迁移,mysql主从搭建等服务

news2024/9/22 21:36:41

公司项目要上线项目,买了两台云服务器,需进行环境部署(1台接入公网,一台只能局域网访问),主要部署以下内容

1、服务器之间配置ssh免密

2、离线docker部署

3、docker镜像迁移

4、redis服务

5、minio文件服务

6、kkFileView文件预览服务

7、mysql主从搭建

目录

1、配置两台服务器ssh免密,方便文件传输

2、离线docker部署

 3、docker镜像迁移

4、redis服务

5、minio文件服务

6、kkFileView文件预览服务

7、mysql主从搭建

1、mysql主节点

2、mysql从节点

3、出现的问题

1、slave_io_running:connecting解决方法

 2、slave_io_running:no解决方法(可能原因:server-uuid主从节点相同)

3、Slave_SQL_Running: No 


1、配置两台服务器ssh免密,方便文件传输

配置免密

1、更改host 和修改主机名

vim /etc/hosts

  在最下面映射IP,使得配置的node01,映射到192.168.52.100上面 

192.168.52.100 node01
192.168.52.101 node02

vim /etc/hostname 

2、配置免密,生成服务器的公钥私钥

 配置免密如果是root用户则进入 cd  /root/.ssh/ 

ssh-keygen -t rsa

3、把公钥拷贝到node01上去,生成authorized_keys文件包含两个节点的公钥

ssh-copy-id  node01

4、在node01上将,生成的公共密匙authorized_keys拷贝到node02中 

scp authorized_keys node02:$PWD

5、同样的操作在node02上面,此时就可以使用ssh 免密登录了

2、离线docker部署

下载地址:Index of linux/static/stable/x86_64/

我下载的是下面这个

因为我是将下载好的docker文件上传到公网的,然后再 通过局域网上传到宁外的node02服务器上,

scp docker-24.0.4.tgz node02:$PWD

1、解压文件

tar zxf  docker-24.0.4.tgz 

 2、将docker 相关命令拷贝到 /usr/bin

sudo cp docker/* /usr/bin/

3. 启动Docker守护程序

 sudo dockerd &

4、验证是否安装成功,执行docker info命令,若正常打印版本信息则安装成功。

 docker info

5、在 /usr/lib/systemd/system/ 目录下创建docker.service 文件

sudo vi /usr/lib/systemd/system/docker.service

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
 
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
 
[Install]
WantedBy=multi-user.target
 

6、设置docker开机启动

systemctl enable/disable docker 

 3、docker镜像迁移

因为局域网的docker,不能远程拉取镜像,所以需要,公网拉取镜像文件之后,通过局域网传递目标服务器

1、公网服务器打包镜像(我打包的是mysql)

docker save mysql:5.7 > /home/soft/mysql5.7.tar

2、传递打包的镜像到局域网node02服务器

 scp  mysql5.7.tar node02:$PWD

3、在node02服务器上将压缩包恢复成镜像

docker load < /home/soft/mysql5.7.tar

4、redis服务

requirepass:redis密码

 docker run --name=redis -p 6333:6379  \
    -v /data/redis/data:/data  \
     -v /data/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf  \
    -d redis:latest --requirepass 123456 redis-server /usr/local/etc/redis/redis.conf  \
    --appendonly yes

5、minio文件服务

拉取最新版本,或者其他版本

docker pull minio/minio

MINIO_ACCESS_KEY:登录用户名

MINIO_ACCESS_KEY:登录用户密码

docker run -p 9000:9000 -p 9090:9090 \
 --name minio \
 -d --restart=always \
 -e "MINIO_ACCESS_KEY=test" \
 -e "MINIO_SECRET_KEY=123456" \
 -v /root/docker/minio/data:/data  \
 -v /root/docker/minio/config:/root/.minio \
 minio/minio  server\
 /data --console-address ":9090" -address ":9000"

6、kkFileView文件预览服务

kkFileView官网:kkFileView - 在线文件预览

# 网络环境方便访问docker中央仓库

docker pull keking/kkfileview:4.1.0

docker run -it -p 8012:8012 keking/kkfileview:4.1.0 

7、mysql主从搭建

1、mysql主节点

1、部署mysql主节点容器

docker run -p 3333:3306 --name mysql-master \
-v /mydata/mysql-master/log:/var/log/mysql \
-v /mydata/mysql-master/data:/var/lib/mysql \
-v /mydata/mysql-master/conf:/etc/mysql/conf.d \
-e  MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7

 目录说明:

-v /mydata/mysql-master/conf:/etc/mysql ;将配置文件夹挂载到主机上
-v /mydata/mysql-master/log:/var/log/mysql:将日志文件夹挂载到主机上
-v /mydata/mysql-master/data:/var/lib/mysql:将数据文件夹挂载到主机上

2、 修改主节点my.conf配置

vim /mydata/mysql-master/conf/my.cnf 

[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=101 
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql  
## 开启二进制日志功能
log-bin=mall-mysql-bin  
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M  
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed  
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7  

##忽略大小写配置

 lower_case_table_names = 1 
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062

重启主节点容器 

 docker restart mysql-master

3、进入主节点容器,新增同步用户账号

docker exec -it mysql-master /bin/bash

mysql -uroot -p123456

创建同步账号 

CREATE USER 'slave' @'%' IDENTIFIED BY '123456';


GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'slave'@'%';

2、mysql从节点

1、创建从节点容器

docker run -p 3334:3306 --name mysql-slave \
-v /mydata/mysql-slave/log:/var/log/mysql \
-v /mydata/mysql-slave/data:/var/lib/mysql \
-v /mydata/mysql-slave/conf:/etc/mysql/conf.d \
-e  MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7

2、修改主节点my.conf配置

vim /mydata/mysql-master/conf/my.cnf 

[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=122
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql  
## 开启二进制日志功能,以备Slave作为其它数据库实例的Master时使用
log-bin=mall-mysql-slave1-bin  
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M  
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed  
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7  
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062  
## relay_log配置中继日志
relay_log=mall-mysql-relay-bin  
## log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1  
## slave设置为只读(具有super权限的用户除外)
read_only=1

##忽略大小写配置
lower_case_table_names = 1 

重启子节点容器 

docker restart mysql-slave

3、查看主数据库的Position参数,因为已经有了些数据了,所以是5483771,一般刚刚开始时postion是443

show master status;

 4、进入从数据库

docker exec -it mysql-slave /bin/bash

mysql -uroot -p123456

 5、在从数据库中查看主从同步状态

show slave status \G

change master to 
master_host='10.0.0.4',master_user='slave',master_password='123456',master_port=3333,
master_log_file='mall-mysql-bin.000002',master_log_pos=684,master_connect_retry=30;

master_host:主数据库的IP地址;
master_port:主数据库的运行端口;
master_user:在主数据库创建的用于同步数据的用户账号;
master_password:在主数据库创建的用于同步数据的用户密码;
master_log_file:指定从数据库要复制数据的日志文件,通过查看主数据的状态,获取File参数;
master_log_pos:指定从数据库从哪个位置开始复制数据,通过查看主数据的状态,获取Position参数;
master_connect_retry:连接失败重试的时间间隔,单位为秒。

 6、从数据开启服务

start slave;

slave_io_running,负责与主机的io通信;
slave_sql_running,负责自己的slave mysql进程。

两个yes表示成功

3、出现的问题

1、slave_io_running:connecting解决方法

1、网络不通

ping主节点IP看是否能ping通,如果ping不通,就检查安全组或者防火墙是否开放ICMP协议

2、slave账号是否能远程连上主节点服务

docker exec -it mysql-slave /bin/bash

mysql -u slave -p123456 -h10.0.0.4 -P 3333

 3、检查从机点开启服务,命令是否正确,开始的file文件和开始节点是否正确,以及hostIP是否正确

 先停止,再修改,再开启服务

stop slave;

start slave; 

show slave status \G

 2、slave_io_running:no解决方法(可能原因:server-uuid主从节点相同)

1、找到文件位置

find / -iname "auto.cnf"

2、进入文件目录,删除文件

rm auto.cnf

3、 重启子节点服务

stop slave;

start slave; 

show slave status \G

3、Slave_SQL_Running: No 


1.程序可能在slave上进行了写操作

2.也可能是slave机器重起后,事务回滚造成的.

mysql> stop slave ;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> start slave ;

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

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

相关文章

Idea配置Maven优先从本地仓库获取依赖

idea配置maven依赖优先从指定本地仓库获取 在设置中搜索 Runner ,在VM Option中设置参数-DarchetypeCataloginternal <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http…

沐风老师MaxScript快速入门教程

Maxscript是将自定义3dMax应用的更强大的方法之一。结合内置的侦听器和编辑器&#xff0c;我们在运行时操作和测试代码&#xff0c;使其成为用户试验和探索改进软件体验的强大选项。通过Maxscript&#xff0c;我们几乎可以操作软件中的每一个对象&#xff0c;包括但不限于&…

【C++】-vector的模拟实现(以及memcpy如何使用)

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

Spring-MVC的注解扫描-spring17

包括我们业务层和Dao层&#xff0c;去帮助别人去扫 只扫controller下的注解

00_YS_硬件电路图

1.主控制芯片的型号 STM32F407IGT6&#xff0c;LQFP-176&#xff0c;1MB 内部 FLASH&#xff0c;192KB RAM USART3 RS485 通信&#xff0c;芯片使用 SP3072EEN; UART5 RS232 通信&#xff0c; CAN 1 路&#xff0c;型号 SN65HVD230 USB 支持 …

Python应用实例(二)数据可视化(三)

数据可视化&#xff08;三&#xff09; 1.使用Plotly模拟掷骰子1.1 安装Plotly1.2 创建Die类1.3 掷骰子1.4 分析结果1.5 绘制直方图1.6 同时掷两个骰子1.7 同时掷两个面数不同的骰子 1.使用Plotly模拟掷骰子 本节将使用Python包Plotly来生成交互式图表。需要创建在浏览器中显示…

代码随想录算法训练营第十九天 | 动态规划系列5,6,7,8

动态规划系列5,6,7,8 377 组合总和 Ⅳ未看解答自己编写的青春版重点代码随想录的代码我的代码(当天晚上理解后自己编写) 爬楼梯进阶322 零钱兑换未看解答自己编写的青春版写完这道题后的感受重点代码随想录的代码动态规划&#xff0c;也要时刻想着剪枝操作。我的代码(当天晚上理…

异常执行结果随笔

前段时间有朋友问我异常执行顺序问题&#xff0c;这里简单记录下哈。 伪代码描述&#xff0c;当j0和j1&#xff0c;输出结果分别是什么&#xff1f; int i 0; int j 0或1; try {j i / j&#xff1b;System.out.println(i);return i; } catch (Exception e) {System.out.pri…

win10如何使用wsl配置Ubuntu并使用vscode连接

文章目录 0. 前置资料1. 下载wsl2. 下载Ubuntu3. vscode连接wsl 0. 前置资料 wsl为适用于 Linux 的 Windows 子系统&#xff0c;可参考以下微软的官方文档 https://learn.microsoft.com/zh-cn/windows/wsl/ 1. 下载wsl 点击屏幕左下角的放大镜&#xff0c;直接在输入框键入P…

第 354 场LeetCode周赛

A 特殊元素平方和 模拟 class Solution { public:int sumOfSquares(vector<int> &nums) {int res 0;int n nums.size();for (int i 0; i < n; i)if (n % (i 1) 0)res nums[i] * nums[i];return res;} };B 数组的最大美丽值 差分数组: n u m s [ i ] nums[…

cmake处理参数时的一些问题说明

cmake处理参数时的一些问题说明 函数传参空格和分号的坑函数转发的坑demo 函数传参遇到不平衡方括号的坑 函数传参空格和分号的坑 我们在处理函数和宏的时候不过不小心会遇到很多坑例如: someCommand(a b c) someCommand(a b c)因为cmake中使用空格或者分号分隔符所以上面代…

Django实现接口自动化平台(十一)项目模块Projects序列化器及视图【持续更新中】

相关文章&#xff1a; Django实现接口自动化平台&#xff08;十&#xff09;自定义action names【持续更新中】_做测试的喵酱的博客-CSDN博客 本章是项目的一个分解&#xff0c;查看本章内容时&#xff0c;要结合整体项目代码来看&#xff1a; python django vue httprunner …

LangChain 本地化方案 - 使用 ChatYuan-large-v2 作为 LLM 大语言模型

一、ChatYuan-large-v2 模型 ChatYuan-large-v2是一个开源的支持中英双语的功能型对话语言大模型&#xff0c;与其他 LLM 不同的是模型十分轻量化&#xff0c;并且在轻量化的同时效果相对还不错&#xff0c;仅仅通过0.7B参数量就可以实现10B模型的基础效果&#xff0c;正是其如…

自动化测试-selenium环境搭建

文章目录 1. 什么是自动化2. 自动化测试分类3. selenium的环境搭建4. 测试selenium 1. 什么是自动化 自动化是指使用软件工具、脚本或程序来执行一系列的任务、操作或流程&#xff0c;而无需人工干预或指导。 自动化测试&#xff1a;使用自动化工具和脚本来执行测试用例&#x…

浅谈端口 | 80端口和8080端口是2个不同的端口吗?有何区别?

目录 写在前面 端口及其特点 端口号的范围和分类 在HTTP超文本传输协议中80端口有正式的身份 写在前面 首先&#xff0c;确定以及肯定的是他们俩是完全不同的端口。一般80作为网页服务器的访问端口&#xff0c;比如一个网站的ip地址是119.119.119.119&#xff0c;我们在浏…

如何将SAP数据抽取到Azure数据湖平台?

经过多年的发展&#xff0c;SNP Glue 在全球已成为值得信赖且广为人知的解决方案&#xff0c;支持客户将其 SAP 数据与现代化的平台集成。SNP Glue 打破了数据孤岛&#xff0c;向数据科学家开放了 SAP&#xff0c;支持基于企业 SAP 数据的多个新用例。 随着时间的推移&#xff…

MySQL数据库之事物

一、MySQL事务的概念 &#xff08;1&#xff09;事务是一种机制、一个操作序列&#xff0c;包含了一组数据库操作命令&#xff0c;并且把所有的命令作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这一组数据库命令要么都执行&#xff0c;要么都不执行。 &#xff08…

【基础理论】描述性统计基本概念

一、说明 统计学是数学的一个分支&#xff0c;涉及数据的收集、解释、组织和解释。本博客旨在回答以下问题&#xff1a; 1. 什么是描述性统计&#xff1f;2. 描述性统计的类型&#xff1f;3. 集中趋势的度量&#xff08;平均值、中位数、模式&#xff09; 4. 散布/离差度量&…

每天一道C语言编程(6):委派任务

题目描述 某侦察队接到一项紧急任务&#xff0c;要求在A、B、C、D、E、F六个队员中尽可能多地挑若干人&#xff0c;但有以下限制条件&#xff1a; 1)A和B两人中至少去一人&#xff1b; 2)A和D不能一起去&#xff1b; 3)A、E和F三人中要派两人去&#xff1b; 4)B和C都去或都不去…

使用CatBoost和SHAP进行多分类完整代码示例

CatBoost是顶尖的机器学习模型之一。凭借其梯度增强技术以及内置函数&#xff0c;可以在不做太多工作的情况下生成一些非常好的模型。SHAP (SHapley Additive exPlanation)是旨在解释具有独特视觉效果和性能价值的机器学习模型的输出。CatBoost和SHAP结合在一起构成了一个强大的…