封装适用于CentOS7的MySQL离线包「终于解决」

封装适用于CentOS7的MySQL离线包「终于解决」1 构建一个centos7.6.1810的docker镜像,用于下载MySQL+xtrabackup所需安装包 7.6.1810的docker镜像,低版本最小安装,会尽可能把所需的包拉齐。 Docke

封装适用于CentOS7的MySQL离线包

1 构建一个centos7.6.1810的docker镜像,用于下载MySQL+xtrabackup所需安装包

7.6.1810的docker镜像,低版本最小安装,会尽可能把所需的包拉齐。

Dockerfile文件如下

FROM centos:7.6.1810
 
CMD yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm https://repo.mysql.com//mysql80-community-release-el7-7.noarch.rpm epel-release && 
rm -rf /yum/mysql8.0 && mkdir -p /yum/mysql8.0 && 
yum --downloadonly --downloaddir=/yum/mysql8.0 install -y mysql-community-server percona-xtrabackup-80 zip unzip telnet lrzsz iotop ftp python-pip && 
yum-config-manager --disable mysql80-community && yum-config-manager --enable mysql57-community && 
rm -rf /yum/mysql5.7 && mkdir -p /yum/mysql5.7 && 
yum --downloadonly --downloaddir=/yum/mysql5.7 install -y mysql-community-server percona-xtrabackup-24 zip unzip telnet lrzsz iotop ftp python-pip

构建镜像:

docker build -t mysql_xtrabackup_download .

2 运行镜像自动下载MySQL5.7 / 8.0 + 对应版本的xtrabackup安装包

docker run --rm 
  -v /etc/localtime:/etc/localtime 
  -v ${PWD}/yum:/yum 
  mysql_xtrabackup_download

docker容器跑完会自动销毁,并在当前目录的yum文件夹下生成mysql5.7 / mysql8.0两个安装包

传输到无网络的centos7上,可以使用yum localinstall *.rpm进行安装

3 解决冲突

下载的rpm可以用于离线安装,但是安装时会报错

新版本的MySQL已经不再提供libmysqlclient.so.18.1.0,但是xtrabackup需要这个文件,所以就有一个Percona-Server-shared-56-5.6.51-rel91.0.1.el7.x86_64.rpm包提供

这个包又提供了一个/etc/my.cnf文件,导致和MySQL主包冲突,无法安装成功,所以要替换掉它。

Transaction check error:
  试图安装 mysql-community-server-8.0.31-1.el7.x86_64 和 Percona-Server-shared-56-5.6.51-rel91.0.1.el7.x86_64 会导致文件 /etc/my.cnf 冲突

下载Percona-Server-shared-56-5.6.51-rel91.0.1.el7.x86_64.rpm到Windows,解压,得到两个文件

封装适用于CentOS7的MySQL离线包「终于解决」

 

 创建文件libmysqlclient.spec

Name:     libmysqlclient
Version:  18.1.0
Release:  1
Summary:  libmysqlclient-18.1.0
Summary(zh_CN):  libmysqlclient-18.1.0
License:  GPLv3+
 
Packager: XX Software
 
%description
libmysqlclient,Resolve MySQL and Xtrabackup installation conflicts
 
%description -l zh_CN
libmysqlclient,解决MySQL和xtrabackup安装冲突
 
%install
mkdir -p %{buildroot}/usr/lib64
install -m 755 -t %{buildroot}/usr/lib64 /usr/lib64/libmysqlclient.so.18.1.0
install -m 755 -t %{buildroot}/usr/lib64 /usr/lib64/libmysqlclient_r.so.18.1.0
 
 
%files
/usr/lib64/libmysqlclient.so.18.1.0
/usr/lib64/libmysqlclient_r.so.18.1.0

创建文件Dockerfile

FROM centos:7.6.1810
 
RUN sed -e "s|^mirrorlist=|#mirrorlist=|g" 
        -e "s|^#baseurl=http://mirror.centos.org|baseurl=https://mirrors.tuna.tsinghua.edu.cn|g" 
        -i.bak 
        /etc/yum.repos.d/CentOS-*.repo && 
    yum install -y rpm-build rpmdevtools
 
CMD cd /tmp/libmysqlclient/ && 
    mkdir -p /usr/lib64 && 
    cp libmysqlclient*.so.18.1.0 /usr/lib64 && 
    rpmbuild -bb libmysqlclient.spec --define "_topdir ${PWD}/rpmbuild"

四个文件放同一个目录,然后build + run

docker build -t rpm_libmysqlclient .
 
docker run --rm 
  -v /etc/localtime:/etc/localtime 
  -v ${PWD}:/tmp/libmysqlclient/ 
  rpm_libmysqlclient

最后会得到rpmbuild/RPMS/x86_64/libmysqlclient-18.1.0-1.x86_64.rpm包

替换掉Percona-Server-shared-56-5.6.51-rel91.0.1.el7.x86_64.rpm,再安装就没问题了。

原文地址:https://www.cnblogs.com/abo6364/archive/2022/11/22/16915045.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/4516.html

(0)
上一篇 2023-06-16
下一篇 2023-06-16

相关推荐

  • COSCon'19 | 如何设计新一代的图数据库 Nebula

    COSCon'19 | 如何设计新一代的图数据库 Nebula11 月 2 号 – 11 月 3 号,以“大爱无疆,开源无界”为主题的 2019 中国开源年会(COSCon'19)正式启动,大会以开源治理、国际接轨、社区发展和开源项目为切入点同全球开…

    2022-12-17
    83
  • Python中-inf的用法

    Python中-inf的用法在Python中,-inf是一个特殊的值,表示负无穷大。这个值在某些场景中非常有用,如在算法中使用它来表示最小值或无限小的数。本文将从多个方面详细阐述Python中-inf的用法。

    2024-05-04
    16
  • 优化Python GUI布局的秘诀——使用minsize属性

    优化Python GUI布局的秘诀——使用minsize属性在使用Python编写GUI应用程序时,我们通常需要摆放各种控件,如文本框、按钮、标签等。这些控件需要放在不同的容器中,如Frame、Grid等。在布局这些控件时,我们需要指定每个控件的大小和位置。在这个过程中,我们经常会遇到某个控件应该有足够的空间来显示内容,但它却被另一个控件挤得很小或被其他控件覆盖住了。为了解决这个问题,我们可以使用minsize属性。

    2024-04-11
    22
  • redis底层算法_Redis 命令

    redis底层算法_Redis 命令Redis底层函数详解 1. serverCron 函数 它负责管理服务器的资源,并维持服务器的正常运行。在执行 serverCron 函数的过程中会调用相关的子函数,如 trackOperation

    2023-02-11
    99
  • Spring boot 整合redis「建议收藏」

    Spring boot 整合redis「建议收藏」![](https://oscimg.oschina.net/oscnet/up-534833b899aaf144dc13ef6f35996ec5cfe.JPEG)

    2023-02-10
    105
  • Python程序错误:无效的过程或调用参数

    Python程序错误:无效的过程或调用参数“无效的过程或调用参数”是Python程序中常见的错误类型之一,当函数或方法的参数类型或数量不符合其定义时,就会引发这种错误。例如,如果一个函数期望传递一个字符串参数,但是传入了一个数字类型的参数,就会触发“无效的过程或调用参数”的错误。

    2023-12-08
    62
  • 关于mysql索引的数据结构有哪些_什么是索引

    关于mysql索引的数据结构有哪些_什么是索引索引的数据结构 1、为什么使用索引 概念: 索引是存储索引用于快速找到数据记录的一种数据结构,就好比一本书的目录部分,通过目录中对应的文章的页码,便可以快速定位到需要的文章,Mysql 中也是一样的道

    2023-05-14
    105
  • Python操作系统:使用os.removedirs删除空目录

    Python操作系统:使用os.removedirs删除空目录在计算机文件系统中,空目录指的是一个没有任何子目录或文件的目录。通常情况下,操作系统会允许用户自由地创建和删除空目录,但在某些情况下,空目录的删除可能会显得比较困难。

    2024-04-05
    22

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注