银河麒麟部署mysql8.0并连接应用

​客户需在国产化银河麒麟系统中部署软件应用,使用mysql8.0数据库。机器放置了两三年,里面命令工具和依赖都不太全。而且客户环境不联网,只能采用离线部署的方式。部署过程中踩了很多坑,也用到很多资源,记录一下。

过程概述

最开始从mysql官网下载了arm版本的安装包,但是服务器缺少的依赖太多了。我们连续装了两个依赖之后发现这是个无底洞……遂更换为docker拉包的方式部署。

资源准备

1、docker安装包,准备docker-20.10.9.tgz文件包,适用于arm架构的相近版本都可以。可以从本文顶部链接下载,也可以自行准备。

2、mysql镜像包,从网上下载一个同样适用于arm架构的mysql8.tar包。

安装步骤

部署docker

1、解压安装包:

tar -xvf docker-20.10.9.tgz   #(改成自己的版本)

2、将解压出来的docker文件内容移动到 /usr/bin/ 目录下

  mv docker/* /usr/bin/ 

3、将docker注册为service服务

vi /etc/systemd/system/docker.service

编辑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
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target

4、启动docker

chmod +x /etc/systemd/system/docker.service #设置权限
systemctl daemon-reload
systemctl start docker            #启动Docker

如果需要设置自启或查看docker状态或日志,可参考以下命令:

systemctl enable docker.service   #设置开机自启
systemctl status docker  #查看Docker状态
docker -v                #查看Docker版本
journalctl -u docker.service #查看详细日志

上传mysql镜像

1、将mysql8.tar上传到服务器,并拉取镜像

docker load -i 路径/mysql8.tar #改成存放路径

2、修改my.cnf文件

vi /etc/my.cnf

内容按需配置

[mysqld]
datadir=数据目录/data
port=3306
innodb_buffer_pool_size=2047M
character-set-server=utf8
max_length_for_sort_data = 8388608
join_buffer_size=1048576
sort_buffer_size =3145728
read_rnd_buffer_size = 838860800
#default-storage-engine=MyISAM
default-storage-engine=Innodb
max_allowed_packet=1073741824
wait_timeout=2147483
interactive_timeout=2880000
innodb_file_per_table=1
innodb_file_format=Barracuda
innodb_strict_mode = 0
[client]
port=3306

3、配置参数并启动容器,主要修改配置文件路径映射、端口映射,主机的路径、端口在冒号前,容器的路径、端口在冒号后。

docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=123456 -v /path/to/my.cnf:/etc/mysql/my.cnf -v /path/to/data:/var/lib/mysql -p 3306:3306 -d 镜像id  #自行修改

4、查看mysql是否启动成功:
进入容器,使用mysql -uroot -p密码,看看是否输出连接成功信息。

5、初始化数据库,使应用可以连接数据库而非本地连接,请参考此文章后半部分初始化数据库部分:在同一台主机上运行MySQL和MariaDB

配置宿主机上应用的JDBC

jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true

这里的ip就是localhost,因为容器和宿主机是一个网,不用修改。
启动应用,连接成功。

中途遇到的问题

1、权限不够
我使用非root用户登录的,su -root登录不成功。最后使用

sudo su

输入当前用户密码后切换到了root用户。

2、运行权限不够

./startup.sh(程序)

运行应用程序过程中总是报permission denied,最后使用

sudo bash startup(程序名)

成功运行。

3、使用rpm提示功能不存在
银河麒麟系统和ubuntu比较接近,可使用

dpkg -l | grep mysql

查询系统中是否之前安装过mysql

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

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

相关文章

GitAgent-面壁智能联合清华大学发布的大模型智能体应用框架

本文转载自:https://www.hello123.com/gitagent ** 一、🔍 GitAgent 框架:大模型智能体的工具箱革命 GitAgent 是由面壁智能与清华大学自然语言处理实验室联合研发的创新型框架,旨在解决大模型智能体在复杂任务中的工具扩展瓶颈…

灵码产品演示:Maven 示例工程生成

作者:轻眉 演示主题:由 AI 自动生成 0 到 1 的电商订单 Java 项目 演示目的 面向 Java 零基础的用户,通过灵码的产品能力(如提示词、编码智能体、项目 Rules 和 SQLite MCP 服务、单元测试)自动生成 0 到 1 的电商订单…

AI编程从0-1开发一个小程序

小伙伴们,今天我们利用AI实现从0到1开发一个小程序!需求交给AI: 我们只要说出自己的开发思路,具体需求交给AI完成!输入提示词:个人开发的小程序 能开发哪些好备案,用户喜欢使用的 AI给出…

DDoS高防IP是什么? DDoS攻击会暴露IP吗?

DDoS高防IP是什么?高防IP是指一种网络安全服务,主要用于防御DDoS攻击。随着技术的发展,黑客进行网络攻击的强度也在加大,所以我们要做好网络防护,及时预防DDoS攻击。DDoS高防IP是什么?DDoS高防IP是指基于IP…

k8s事件驱动运维利器 shell operator

Shell-Operator 概述 Shell-Operator 是 Kubernetes 的一个工具,用于通过 shell 脚本扩展集群功能。它允许用户编写简单的脚本(Bash、Python 等)来响应 Kubernetes 事件(如资源变更、定时任务),无需编译复…

(二)文件管理-文件权限-chmod命令的使用

文章目录1. 命令格式2. 基本用法2.1 符号模式2.2 八进制数字模式3. 高级用法3.1 递归操作3.2 参考权限3.3 特殊权限位(Setuid, Setgid, Sticky Bit)3.4 X 特殊执行权限4. 注意事项4.1权限与所有权4.2 Root 权限4.3 安全风险4.4 -R 的风险4.5 目录的执行权限1. 命令格式 chmod …

医院预约挂号脚本

医院预约挂号脚本 功能介绍 本脚本是一个用 Python 编写的医院预约挂号程序,支持以下功能: 自动预约:通过api交互选择医院、科室、医生和时间段。自动监控:持续检查指定医生的号源状态,发现可预约时段时自动尝试预约。…

.NET驾驭Word之力:理解Word对象模型核心 (Application, Document, Range)

在使用MudTools.OfficeInterop.Word库进行Word文档自动化处理时,深入理解Word对象模型的核心组件是至关重要的。Word对象模型提供了一套层次化的结构,使开发者能够通过编程方式控制Word应用程序、文档以及文档内容。本章将详细介绍Word对象模型中最核心的…

Kotlin在医疗大健康域的应用实例探究与编程剖析(上)

一、引言 1.1 研究背景与意义 在当今数字化时代,医疗行业正经历着深刻的变革。随着信息技术的飞速发展,尤其是人工智能、大数据、物联网等新兴技术的广泛应用,医疗行业数字化转型已成为必然趋势。这种转型旨在提升医疗服务的效率和质量,优化医疗资源配置,为患者提供更加…

AI智能体的应用前景

AI智能体的应用前景正从技术探索迈向规模化落地的关键阶段,其发展动力源于大模型能力的突破、行业需求的深化以及商业化模式的创新。以下是基于最新技术动态和行业实践的深度解析: 一、技术突破:从「有脑无手」到「知行合一」 大模型的进化显著提升了智能体的多模态交互与…

高系分四:网络分布式

目录一、我的导图和思考二、大模型对我导图的评价优点可优化之处三、大模型对这章节的建议一、网络知识范畴(一)网络基础理论(二)局域网与广域网(三)网络安全(四)网络性能优化&#…

Day24_【深度学习(1)—概念】

一、AI、ML、DL基本关系 机器学习是实现人工智能的途径,深度学习是机器学习的一种方法。人工智能 (AI)↓ 机器学习 (ML) —— 让机器从数据中学习规律↓ 深度学习 (DL) —— 使用深层神经网络的机器学习方法二、深度学习与机器学习概念深度学习(Deep Lea…

VTK基础(01):VTK中的基本概念

VTK中的基本概念 1.三维场景中的基本要素 三维场景的基本要素包含:灯光、相机、颜色和纹理映射 (1)灯光vtkLight 光的本质是特定频段的电磁波,所以灯光的本质是特定频段(可见光频段)的电磁波发射器;依据发射可见光频段…

LeetCode 2348.全0子数组的数目

给你一个整数数组 nums ,返回全部为 0 的 子数组 数目。 子数组 是一个数组中一段连续非空元素组成的序列。 示例 1: 输入:nums [1,3,0,0,2,0,0,4] 输出:6 解释: 子数组 [0] 出现了 4 次。 子数组 [0,0] 出现了 2 次。…

【wpf】从 DataContext 到依赖属性:WPF 自定义控件 ImageView 的优化之路

从 DataContext 到依赖属性:WPF 自定义控件 ImageView 的优化之路 最近我在做一个 WPF 项目,需要封装一个 ImageView 控件,用来显示图像并处理鼠标交互。 在实际开发中,我遇到了一系列和 数据绑定 有关的问题: 控件需要…

人力资源管理的思维方式学习笔记2

战略人力资源管理的思维方式——北京师范大学政府管理学院——王建民 教授3.1.理念:人力资源是第一战略资源 我们先来了解海尔集团公司实施发展战略的情况。海尔集团创立于1984年,根据官方网站的介绍,目前是一家全球领先的美好生活解决方案服…

汽车网络安全 CyberSecurity ISO/SAE 21434 测试之一

一、什么是网络安全? 在智能网联和自动驾驶技术进入汽车行业之前,功能安全 一直是汽车开发的核心。 简单来说,功能安全的目标是确保车辆的系统在出现故障时,不会对人、环境或者设备造成危害。比如,刹车失灵了&#xff…

力扣(LeetCode) ——217. 存在重复元素(C++)

题目:217. 存在重复元素 示例1: 输入: nums [1,2,3,1] 输出: true 解释: 元素 1 在下标 0 和 3 出现。 示例2: 输入: nums [1,2,3,4] 输出: false 解释: 所有元素都…

Redis 高可用与集群原理

Redis 高可用与集群原理1. 前言 Redis 单机虽然高性能,但一旦节点宕机,数据丢失或服务不可用问题会非常严重。为了解决这一问题,Redis 提供了 主从复制、哨兵(Sentinel)、Cluster 集群 等高可用机制。 这一篇文章我们重…

Oracle OCP认证考试题目详解082系列第31题

考察知识点:SET VERIFY ON命令 英文题目 Which two statements are true about the SET VERIFY ON command? A.It displays values for variables prefixed with && B.It displays values for variables created by the DEFINE command C.It can be used in SQL Dev…