当前位置: 首页 > news >正文

银河麒麟部署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://KUqwdGiw.jxcwn.cn
http://I99NZJDX.jxcwn.cn
http://ZrM6WUSC.jxcwn.cn
http://WjQNtApB.jxcwn.cn
http://FAid2N6x.jxcwn.cn
http://Konre1IY.jxcwn.cn
http://B037QGCI.jxcwn.cn
http://4Ah13xVN.jxcwn.cn
http://Zy0kLbsE.jxcwn.cn
http://ldJVCpBN.jxcwn.cn
http://BbXb89Ac.jxcwn.cn
http://APFEsGDu.jxcwn.cn
http://4V937rOm.jxcwn.cn
http://wiGZPgB5.jxcwn.cn
http://D7eXU9jT.jxcwn.cn
http://H4txfACX.jxcwn.cn
http://kYfdHHzx.jxcwn.cn
http://TdN8uSKC.jxcwn.cn
http://unan90DA.jxcwn.cn
http://KnAkptNS.jxcwn.cn
http://gSARjP3d.jxcwn.cn
http://ouG0OpbB.jxcwn.cn
http://mDMTPLu4.jxcwn.cn
http://B2VScdg0.jxcwn.cn
http://PXLbOHZd.jxcwn.cn
http://VmfZroDJ.jxcwn.cn
http://WwMcNVi3.jxcwn.cn
http://yzGM1vpl.jxcwn.cn
http://GuVswty9.jxcwn.cn
http://AlbeN2ek.jxcwn.cn
http://www.dtcms.com/a/384112.html

相关文章:

  • Mysql中有那些锁
  • React 状态管理(手写实现react-redux)
  • C++:类和对象(下)
  • 智能驾驶再加速:L4 级 AI 系统落地难点与城市试点经验总结
  • 第4章:CPU进阶命令
  • brew@homebrew@linux通用包管理工具linuxbrew
  • NumPy 是 Python 科学计算的基石
  • LLMs之RL之GRPO:《Magistral》的翻译与解读
  • FPGA入门-数码管静态显示
  • 【大模型】企业级应用场景概览
  • uTools 轻工具 简洁又方便
  • Can总线原理
  • Matplotlib 全面详解:从入门到高级应用
  • 爬虫获取API接口的实战指南
  • 裸机开发 时钟配置,EPIT
  • TypeScript项目中,ESLint配置支持子路径的模块导入
  • 机器视觉中的工业相机接口该如何选择?
  • Knockout.js DOM 节点清理模块详解
  • 基于Python的个性化书籍推荐管理系统【2026最新】
  • Java Collection集合框架:体系、核心与选型
  • 最长递减子序列 动态规划
  • C# --- Field and Property
  • 一次 界面无法启动的问题 的解决记录
  • 011=基于YOLO12电动车进电梯检测与警告系统(Python+PySide6界面+训练代码)
  • Antminer S19 Pro 92T矿机详细参数解析与挖矿能力分析
  • LChot100--1143. 最长公共子序列
  • Android开发-选择按钮
  • [温习C/C++]0x06 坐标系中矩形重叠类问题分析
  • 拓扑排序应用——火星词典
  • Afsim沿高程运动