封装适用于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,解压,得到两个文件

创建文件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,再安装就没问题了。
封装适用于CentOS7的MySQL离线包的更多相关文章
- centos7安装mysql(yum)
centos7安装mysql(yum) ----安装环境----依赖安装----检查mysql是否已安装----安装----验证是否添加成功----选择要启用的mysql版本----通过Yum安装my ...
- CentOS7安装mysql提示“No package mysql-server available.”
针对centos7安装mysql,提示"No package mysql-server available."错误,解决方法如下: Centos 7 comes with Mari ...
- [CentOs7]安装mysql(2)
摘要 之前安装过一次mysql,最后配置,发现在本地无法连接,重启服务的时候一直卡在那里不动,感觉是安装的过程出问题,最后没办法还是卸载了,然后重新安装一下. [CentOs7]安装mysql Mys ...
- centos7安装mysql
centos7安装mysql 1 查找系统是否安装了myql rpm -q mysql mysql-server1.1如果安装了.就删除 sudo yum -y remove mysql mysql- ...
- CentOS7安装MySQL的方法之通用二进制格式
CentOS7安装MySQL的方法之通用二进制格式
- CentOS7安装MySQL的方法之RPM包方式
CentOS7安装MySQL的方法之RPM包方式
- 详解Centos7 修改mysql指定用户的密码
本文介绍了Centos7 修改mysql指定用户的密码,具体如下: 1.登陆mysql或者mariadb(两种任选其一) [root@localhost ~]# mysql -u root [root ...
- Centos7 下mysql大小写敏感问题
在Centos7 下mysql大小写敏感问题,会导致程序运行时找不到对应的表. 解决办法: 第一步:编辑/etc/my.cnf文件,在[mysqld]节下 添加 lower_case_table_na ...
- centos7 mariadb mysql max_connections=214 无法修改的问题
centos7 mariadb mysql max_connections=214 无法修改的问题 /etc/my.cnf.d/mariadb-server.cnf [mysqld] max_conn ...
- Linux - centos7 下 MySQL(mariadb) 和 主从复制
目录 Linux - centos7 下 MySQL(mariadb) 和 主从复制 MySQL(mariadb) 安装MySQL(mariadb) 配置数据库的中文支持 在远程用 mysql客户端去 ...
随机推荐
- KingbaseES图形化安装未弹出界面应该如何处理
关键字: KingbaseES.X Windows.Gnome.DISPLAY 一.Linux下图形安装环境要求 1) 系统首先安装了X Windows的图形化支持软件包. 2) 系统安装了KDE ...
- 如何结合整洁架构和MVP模式提升前端开发体验(三) - 项目工程化配置、规范篇
工程化配置 还是开发体验的问题,跟开发体验有关的项目配置无非就是使用 eslint.prettier.stylelint 统一代码风格. formatting and lint eslint.pret ...
- Java开发学习(三十二)----Maven多环境配置切换与跳过测试的三种方式
一.多环境开发 我们平常都是在自己的开发环境进行开发, 当开发完成后,需要把开发的功能部署到测试环境供测试人员进行测试使用, 等测试人员测试通过后,我们会将项目部署到生成环境上线使用. 这个时候就有一 ...
- 微服务系列之授权认证(三) JWT
1.JWT简介 官方定义:JWT是JSON Web Token的缩写,JSON Web Token是一个开放标准(RFC 7519),它定义了一种紧凑的.自包含的方式,可以将各方之间的信息作为JSON ...
- kibana访问多个 Elasticsearch 节点间的负载均衡
如果 Elasticsearch 集群有多个节点,分发 Kibana 节点之间请求的最简单的方法就是在 Kibana 机器上运行一个 Elasticsearch 协调(Coordinating onl ...
- containerd使用
Docker CLI 工具提供了需要增强用户体验的功能,containerd 同样也提供一个对应的 CLI 工具:ctr,不过 ctr 的功能没有 docker 完善,但是关于镜像和容器的基本功能都是 ...
- 详细说明-CentOS7部署FastDFS+nginx模块(包含集群方式)
软件下载 # 已经事先把所需软件下载好并上传到/usr/local/src目录了 https://github.com/happyfish100/libfastcommon/archive/V1.0. ...
- 10. Fluentd部署:高可用配置
对于高访问量的web站点或者服务,可以采用Fluentd的高可用配置模式. 消息分发语义 Fluentd设计初衷主要是用作事件日志分发系统的.这类系统支持几种不同的分发模式: 至多一次.消息被立即发送 ...
- 《Generative Adversarial Networks for Hyperspectral Image Classification 》论文笔记
论文题目:<Generative Adversarial Networks for Hyperspectral Image Classification> 论文作者:Lin Zhu, Yu ...
- Leetcode刷题笔记(双指针)
1.何为双指针 双指针主要用来遍历数组,两个指针指向不同的元素,从而协同完成任务.我们也可以类比这个概念,推广到多个数组的多个指针. 若两个指针指向同一数组,遍历方向相同且不会相交,可以称之为滑动窗口 ...