Оригінал статті: Using YUM to install specific MySQL/Percona Server versions. January 5, 2015 by Przemysław Malkowski
Задача: встановити певну (не найостаннішу) версію сервера БД Percona Server та захиститися від автоматичного оновлення на свіжішу версію.
Можливі шляхи вирішення:
- завантажити потрібні файли RPM та встановити "вручну"
- створити власний RPM-репозиторій, якій міститиме лише потрібні версії пакетів
- розгортати сервери БД зі заздалегідь підготовлених образів
- визначити версію встановленого пакету засобами програми yum
Розглянемо систему CentOS6, налаштовану на роботу з репозиторієм Percona:
[root@localhost ~]# yum repolist repo id repo name status base CentOS-6 - Base 6,518 extras CentOS-6 - Extras 36 percona-release-noarch Percona-Release YUM repository - noarch 26 percona-release-x86_64 Percona-Release YUM repository - x86_64 432 updates CentOS-6 - Updates 530 (...) [root@localhost ~]# yum -q list available --showduplicates Percona-Server-server-56.x86_64 Available Packages Percona-Server-server-56.x86_64 5.6.13-rel61.0.461.rhel6 percona-release-x86_64 Percona-Server-server-56.x86_64 5.6.14-rel62.0.483.rhel6 percona-release-x86_64 Percona-Server-server-56.x86_64 5.6.15-rel63.0.519.rhel6 percona-release-x86_64 Percona-Server-server-56.x86_64 5.6.16-rel64.0.el6 percona-release-x86_64 Percona-Server-server-56.x86_64 5.6.16-rel64.1.el6 percona-release-x86_64 Percona-Server-server-56.x86_64 5.6.16-rel64.2.el6 percona-release-x86_64 Percona-Server-server-56.x86_64 5.6.17-rel65.0.el6 percona-release-x86_64 Percona-Server-server-56.x86_64 5.6.17-rel66.0.el6 percona-release-x86_64 Percona-Server-server-56.x86_64 5.6.19-rel67.0.el6 percona-release-x86_64 Percona-Server-server-56.x86_64 5.6.20-rel68.0.el6 percona-release-x86_64 Percona-Server-server-56.x86_64 5.6.21-rel69.0.el6 percona-release-x86_64 Percona-Server-server-56.x86_64 5.6.21-rel70.0.el6 percona-release-x86_64 Percona-Server-server-56.x86_64 5.6.21-rel70.1.el6 percona-release-x86_64Встановлюємо обрану версію (5.6.19), яка не є останньою:
[root@localhost ~]# yum -q install Percona-Server-server-56-5.6.19-rel67.0.el6 Percona-Ser ver-client-56-5.6.19-rel67.0.el6 Percona-Server-shared-56-5.6.19-rel67.0.el6 ========================================================================================== Package Arch Version Repository Size ========================================================================================== Installing: Percona-Server-client-56 x86_64 5.6.19-rel67.0.el6 percona-release-x86_64 6.8 M Percona-Server-server-56 x86_64 5.6.19-rel67.0.el6 percona-release-x86_64 19 M Percona-Server-shared-56 x86_64 5.6.19-rel67.0.el6 percona-release-x86_64 721 k Transaction Summary ========================================================================================== Install 3 Package(s) Is this ok [y/N]: y (...) [root@localhost ~]# rpm -qa|grep Percona Percona-Server-server-56-5.6.19-rel67.0.el6.x86_64 Percona-Server-client-56-5.6.19-rel67.0.el6.x86_64 Percona-Server-shared-56-5.6.19-rel67.0.el6.x86_64Якщо потрібно, пізніше ми можемо замінити встановлену версію на ту, яка була перед нею:
[root@localhost ~]# service mysql status SUCCESS! MySQL (Percona Server) running (1998) [root@localhost ~]# service mysql stop Shutting down MySQL (Percona Server).. SUCCESS! [root@localhost ~]# yum -q downgrade Percona-Server-server-56.x86_64 Percona-Server-client -56.x86_64 Percona-Server-shared-56.x86_64 ========================================================================================== Package Arch Version Repository Size ========================================================================================== Downgrading: Percona-Server-client-56 x86_64 5.6.17-rel66.0.el6 percona-release-x86_64 6.8 M Percona-Server-server-56 x86_64 5.6.17-rel66.0.el6 percona-release-x86_64 19 M Percona-Server-shared-56 x86_64 5.6.17-rel66.0.el6 percona-release-x86_64 720 k Transaction Summary ========================================================================================== Downgrade 3 Package(s) Is this ok [y/N]: y Giving mysqld 5 seconds to exit nicely (...) [root@localhost ~]# rpm -qa|grep Percona Percona-Server-shared-56-5.6.17-rel66.0.el6.x86_64 Percona-Server-server-56-5.6.17-rel66.0.el6.x86_64 Percona-Server-client-56-5.6.17-rel66.0.el6.x86_64Можемо перейти навіть на декілька версій назад:
[root@localhost ~]# yum -q downgrade Percona-Server-server-56-5.6.15-rel63.0.519.rhel6 Per cona-Server-client-56-5.6.15-rel63.0.519.rhel6 Percona-Server-shared-56-5.6.15-rel63.0.519 .rhel6 ========================================================================================== Package Arch Version Repository Size ========================================================================================== Downgrading: Percona-Server-client-56 x86_64 5.6.15-rel63.0.519.rhel6 percona-release-x86_64 6.5 M Percona-Server-server-56 x86_64 5.6.15-rel63.0.519.rhel6 percona-release-x86_64 18 M Percona-Server-shared-56 x86_64 5.6.15-rel63.0.519.rhel6 percona-release-x86_64 691 k Transaction Summary ========================================================================================== Downgrade 3 Package(s) Is this ok [y/N]: y Giving mysqld 5 seconds to exit nicely (...)До речі, зверніть увагу на зміну вигляду результату виконання команди:
yum -q list available --showduplicates Percona-Server-server-56.x86_64Всі версії, новіші за встановлену, позначені жирним шрифтом.
Операцію по заміні встановленої версії пакунку на старішу можна також виконати, використовуючи здатність yum до виконання декількох операцій за одну транзакцію:
[root@localhost ~]# yum shell Loaded plugins: fastestmirror, security Setting up Yum Shell > remove Percona-Server-shared-56 Percona-Server-server-56 Percona-Server-client-56 Setting up Remove Process > install Percona-Server-server-56-5.6.15-rel63.0.519.rhel6 Percona-Server-client-56-5.6.1 5-rel63.0.519.rhel6 Percona-Server-shared-56-5.6.15-rel63.0.519.rhel6 (...) Setting up Install Process > run --> Running transaction check ---> Package Percona-Server-client-56.x86_64 0:5.6.15-rel63.0.519.rhel6 will be installed ---> Package Percona-Server-client-56.x86_64 0:5.6.17-rel66.0.el6 will be erased ---> Package Percona-Server-server-56.x86_64 0:5.6.15-rel63.0.519.rhel6 will be installed ---> Package Percona-Server-server-56.x86_64 0:5.6.17-rel66.0.el6 will be erased ---> Package Percona-Server-shared-56.x86_64 0:5.6.15-rel63.0.519.rhel6 will be obsoleting ---> Package Percona-Server-shared-56.x86_64 0:5.6.17-rel66.0.el6 will be erased (...) ========================================================================================== Package Arch Version Repository Size ========================================================================================== Installing: Percona-Server-client-56 x86_64 5.6.15-rel63.0.519.rhel6 percona-release-x86_64 6.5 M Percona-Server-server-56 x86_64 5.6.15-rel63.0.519.rhel6 percona-release-x86_64 18 M Percona-Server-shared-51 x86_64 5.1.73-rel14.12.624.rhel6 percona-release-x86_64 2.1 M replacing mysql-libs.x86_64 5.1.73-3.el6_5 Percona-Server-shared-56 x86_64 5.6.15-rel63.0.519.rhel6 percona-release-x86_64 691 k replacing mysql-libs.x86_64 5.1.73-3.el6_5 Removing: Percona-Server-client-56 x86_64 5.6.17-rel66.0.el6 @percona-release-x86_64 33 M Percona-Server-server-56 x86_64 5.6.17-rel66.0.el6 @percona-release-x86_64 86 M Percona-Server-shared-56 x86_64 5.6.17-rel66.0.el6 @percona-release-x86_64 3.4 M Transaction Summary ========================================================================================== Install 4 Package(s) Remove 3 Package(s) Total download size: 27 M Is this ok [y/N]: y (...) Removed: Percona-Server-client-56.x86_64 0:5.6.17-rel66.0.el6 Percona-Server-server-56.x86_64 0:5.6.17-rel66.0.el6 Percona-Server-shared-56.x86_64 0:5.6.17-rel66.0.el6 Installed: Percona-Server-client-56.x86_64 0:5.6.15-rel63.0.519.rhel6 Percona-Server-server-56.x86_64 0:5.6.15-rel63.0.519.rhel6 Percona-Server-shared-51.x86_64 0:5.1.73-rel14.12.624.rhel6 Percona-Server-shared-56.x86_64 0:5.6.15-rel63.0.519.rhel6 Replaced: mysql-libs.x86_64 0:5.1.73-3.el6_5 Finished Transaction > quit Leaving Shell [root@localhost ~]# rpm -qa|grep Percona Percona-Server-shared-56-5.6.15-rel63.0.519.rhel6.x86_64 Percona-Server-client-56-5.6.15-rel63.0.519.rhel6.x86_64 Percona-Server-shared-51-5.1.73-rel14.12.624.rhel6.x86_64 Percona-Server-server-56-5.6.15-rel63.0.519.rhel6.x86_64Звертаємо увагу на те, що транзакція відбудеться навіть у разі, якщо в системі встановлено пакунки, які залежать від тих, які перевстановлюються.
Нарешті потрібно захиститися від можливості заміни версії пакунків на найновіші під час виконання команди
yum -q update:
[root@localhost ~]# yum -q update ========================================================================================== Package Arch Version Repository Size ========================================================================================== Updating: Percona-Server-client-56 x86_64 5.6.21-rel70.1.el6 percona-release-x86_64 6.4 M Percona-Server-server-56 x86_64 5.6.21-rel70.1.el6 percona-release-x86_64 19 M Percona-Server-shared-56 x86_64 5.6.21-rel70.1.el6 percona-release-x86_64 721 k Transaction Summary ========================================================================================== Upgrade 3 Package(s) Is this ok [y/N]: N Exiting on user CommandДля захисту використовуємо функціональність додатку yum-plugin-versionlock:
[root@localhost ~]# yum versionlock Percona-Server-server-56 Percona-Server-client-56 Perc ona-Server-shared-56 Loaded plugins: fastestmirror, security, versionlock Adding versionlock on: 0:Percona-Server-server-56-5.6.15-rel63.0.519.rhel6 Adding versionlock on: 0:Percona-Server-client-56-5.6.15-rel63.0.519.rhel6 Adding versionlock on: 0:Percona-Server-shared-56-5.6.15-rel63.0.519.rhel6 versionlock added: 3 [root@localhost ~]# yum update Loaded plugins: fastestmirror, security, versionlock Setting up Update Process (...) No Packages marked for UpdateВстановлені версії пакунків не буде оновлено, якщо не буде очищено перелік обов’язкових версій:
[root@localhost ~]# yum versionlock clear ... [root@localhost ~]# yum -q versionlock list 0:Percona-Server-server-56-5.6.15-rel63.0.519.rhel6.* 0:Percona-Server-client-56-5.6.15-rel63.0.519.rhel6.* 0:Percona-Server-shared-56-5.6.15-rel63.0.519.rhel6.* [root@localhost ~]# yum versionlock delete '0:Percona-Server-client-56-5.6.15-rel63.0.519.rhel6.*' Loaded plugins: fastestmirror, security, versionlock Deleting versionlock for: 0:Percona-Server-client-56-5.6.15-rel63.0.519.rhel6.* versionlock deleted: 1 [root@localhost ~]# yum -q versionlock list 0:Percona-Server-server-56-5.6.15-rel63.0.519.rhel6.* 0:Percona-Server-shared-56-5.6.15-rel63.0.519.rhel6.* [root@localhost ~]# yum -q update ========================================================================================== Package Arch Version Repository Size ========================================================================================== Updating: Percona-Server-client-56 x86_64 5.6.21-rel70.1.el6 percona-release-x86_64 6.4 M Transaction Summary ========================================================================================== Upgrade 1 Package(s) Is this ok [y/N]:Наявність можливості встановлення конкретної версії пакунків з yum стає в нагоді під час інтеграції з системами керування програмним забезпеченням на зразок Chef, Puppet або Ansible. Фіксування версії пакунків Percona для Chef задається таким блоком:
pkgs = ["Percona-Server-client-56","Percona-Server-shared-56","Percona-Server-server-56","Percona-Server-56-debuginfo"] pkgs.each do |pkg| yum_package pkg do version "5.6.20-rel68.0.el6" allow_downgrade true end end
Немає коментарів:
Дописати коментар