封装适用于CentOS7的MySQL离线包

打印 上一主题 下一主题

主题 1045|帖子 1045|积分 3135

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

7.6.1810的docker镜像,低版本最小安装,会尽可能把所需的包拉齐。
Dockerfile文件如下
  1. FROM centos:7.6.1810
  2. 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 && \
  3. rm -rf /yum/mysql8.0 && mkdir -p /yum/mysql8.0 && \
  4. yum --downloadonly --downloaddir=/yum/mysql8.0 install -y mysql-community-server percona-xtrabackup-80 zip unzip telnet lrzsz iotop ftp python-pip && \
  5. yum-config-manager --disable mysql80-community && yum-config-manager --enable mysql57-community && \
  6. rm -rf /yum/mysql5.7 && mkdir -p /yum/mysql5.7 && \
  7. yum --downloadonly --downloaddir=/yum/mysql5.7 install -y mysql-community-server percona-xtrabackup-24 zip unzip telnet lrzsz iotop ftp python-pip
复制代码
构建镜像:
  1. docker build -t mysql_xtrabackup_download .
复制代码
2 运行镜像自动下载MySQL5.7 / 8.0 + 对应版本的xtrabackup安装包
  1. docker run --rm \
  2.   -v /etc/localtime:/etc/localtime \
  3.   -v ${PWD}/yum:/yum \
  4.   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主包冲突,无法安装成功,所以要替换掉它。
  1. Transaction check error:
  2.   试图安装 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
  1. Name:     libmysqlclient
  2. Version:  18.1.0
  3. Release:  1
  4. Summary:  libmysqlclient-18.1.0
  5. Summary(zh_CN):  libmysqlclient-18.1.0
  6. License:  GPLv3+
  7. Packager: XX Software
  8. %description
  9. libmysqlclient,Resolve MySQL and Xtrabackup installation conflicts
  10. %description -l zh_CN
  11. libmysqlclient,解决MySQL和xtrabackup安装冲突
  12. %install
  13. mkdir -p %{buildroot}/usr/lib64
  14. install -m 755 -t %{buildroot}/usr/lib64 /usr/lib64/libmysqlclient.so.18.1.0
  15. install -m 755 -t %{buildroot}/usr/lib64 /usr/lib64/libmysqlclient_r.so.18.1.0
  16. %files
  17. /usr/lib64/libmysqlclient.so.18.1.0
  18. /usr/lib64/libmysqlclient_r.so.18.1.0
复制代码
创建文件Dockerfile
  1. FROM centos:7.6.1810
  2. RUN sed -e 's|^mirrorlist=|#mirrorlist=|g' \
  3.         -e 's|^#baseurl=http://mirror.centos.org|baseurl=https://mirrors.tuna.tsinghua.edu.cn|g' \
  4.         -i.bak \
  5.         /etc/yum.repos.d/CentOS-*.repo && \
  6.     yum install -y rpm-build rpmdevtools
  7. CMD cd /tmp/libmysqlclient/ && \
  8.     mkdir -p /usr/lib64 && \
  9.     cp libmysqlclient*.so.18.1.0 /usr/lib64 && \
  10.     rpmbuild -bb libmysqlclient.spec --define "_topdir ${PWD}/rpmbuild"
复制代码
四个文件放同一个目录,然后build + run
  1. docker build -t rpm_libmysqlclient .
  2. docker run --rm \
  3.   -v /etc/localtime:/etc/localtime \
  4.   -v ${PWD}:/tmp/libmysqlclient/ \
  5.   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,再安装就没问题了。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我可以不吃啊

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表