MariaDB
 sql >> база данни >  >> RDS >> MariaDB

Офлайн инсталация на MariaDB Cluster за CentOS

Повечето от инсталационните стъпки, налични в Интернет, покриват стандартната онлайн инсталация, като се предполага, че хостовете на базата данни имат активна интернет връзка с хранилищата на пакети и удовлетворяват всички зависимости. Въпреки това, стъпките и командите за инсталиране са малко по-различни за офлайн инсталация. Офлайн инсталацията е обичайна практика в строга и сигурна среда като финансов и военен сектор за спазване на изискванията за сигурност, намаляване на рисковете от излагане и запазване на поверителността.

В тази публикация в блога ще инсталираме клъстер MariaDB с три възела в офлайн среда на хостове на CentOS. Помислете за следните три възела за тази инсталация:

  • mariadb1 - 192.168.0.241
  • mariadb2 - 192.168.0.242
  • mariadb3 - 192.168.0.243

Изтегляне на пакети

Най-отнемащата време част е получаването на всички пакети, необходими за нашата инсталация. Първо, отидете на съответното хранилище на MariaDB, което искаме да инсталираме (в този пример нашата ОС е CentOS 7 64bit):

  • MariaDB 10.4:http://yum.mariadb.org/10.4/centos7-amd64/rpms/ 
  • MariaDB 10.3:http://yum.mariadb.org/10.3/centos7-amd64/rpms/
  • MariaDB 10.2:http://yum.mariadb.org/10.2/centos7-amd64/rpms/
  • MariaDB 10.1:http://yum.mariadb.org/10.1/centos7-amd64/rpms/ 
  • MariaDB 10.0:http://yum.mariadb.org/10.0/centos7-amd64/rpms/

Уверете се, че сте изтеглили точно същата второстепенна версия за всички пакети, свързани с MariaDB. В този пример изтеглихме MariaDB версия 10.4.13. Има куп пакети в това хранилище, но не ни трябват всички само за стартиране на MariaDB клъстер. Някои от пакетите са остарели и са предназначени за отстраняване на грешки. За MariaDB Galera 10.4 и CentOS 7 трябва да изтеглим следните пакети от хранилището на MariaDB 10.4:

  • jemalloc
  • galera-3/galera-4
  • libzstd
  • Архивиране на MariaDB
  • Сървър на MariaDB
  • клиент на MariaDB
  • Споделени от MariaDB
  • Обща MariaDB
  • MariaDB compat

Следните wget команди ще опростят процеса на изтегляне:

wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/galera-4-26.4.4-1.rhel7.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/jemalloc-3.6.0-1.el7.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/libzstd-1.3.4-1.el7.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-backup-10.4.13-1.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-client-10.4.13-1.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-common-10.4.13-1.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-compat-10.4.13-1.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-server-10.4.13-1.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-shared-10.4.13-1.el7.centos.x86_64.rpm

Някои от тези пакети имат зависимости от други пакети. За да удовлетворите всички тях, вероятно е най-добре да монтирате ISO изображението на операционната система и вместо това да посочите мениджъра на пакети yum да използва ISO изображението като офлайн базово хранилище. В противен случай бихме загубили много време, опитвайки се да изтеглим/прехвърлим пакетите от един хост/медия на друг.

Ако търсите по-стари пакети на MariaDB, потърсете ги в неговото архивно хранилище тук. След като бъдат изтеглени, прехвърлете пакетите във всички сървъри на база данни чрез USB устройство, DVD записващо устройство или мрежово хранилище, свързано към хостовете на базата данни.

Монтирайте ISO изображението локално

Някои от зависимостите са необходими, за да бъдат удовлетворени по време на инсталацията и един от начините да се постигне това лесно е чрез настройване на офлайн хранилище yum на сървърите на базата данни. Първо, трябва да изтеглим ISO изображението на CentOS 7 DVD от най-близкия огледален сайт на CentOS, в директорията "isos":

$ wget http://centos.shinjiru.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-2003.iso

Можете или да прехвърлите изображението и да го монтирате директно, или да го запишете на DVD и да използвате DVD устройството и да го свържете към сървъра. В този пример ще монтираме ISO изображението като DVD в сървъра:

$ mkdir -p /media/CentOS
$ mount -o loop /root/CentOS-7-x86_64-DVD-2003.iso /media/CentOS

След това активирайте хранилището на CentOS-Media (c7-media) и деактивирайте стандартните онлайн хранилища (база, актуализации, екстри):

$ yum-config-manager --disable base,updates,extras
$ yum-config-manager --enable c7-media

Вече сме готови за инсталацията.

Инсталиране и конфигуриране на сървъра MariaDB

Стъпките за инсталиране са доста лесни, ако имаме готови всички необходими пакети. Първо, препоръчително е да деактивирате SElinux (или да го настроите на разрешителен режим):

$ setenforce 0
$ sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

Отидете до директорията, където се намират всички пакети, в този случай /root/installer/. Уверете се, че всички пакети са там:

$ cd /root/installer
$ ls -1
galera-4-26.4.4-1.rhel7.el7.centos.x86_64.rpm
jemalloc-3.6.0-1.el7.x86_64.rpm
libzstd-1.3.4-1.el7.x86_64.rpm
MariaDB-backup-10.4.13-1.el7.centos.x86_64.rpm
MariaDB-client-10.4.13-1.el7.centos.x86_64.rpm
MariaDB-common-10.4.13-1.el7.centos.x86_64.rpm
MariaDB-compat-10.4.13-1.el7.centos.x86_64.rpm
MariaDB-server-10.4.13-1.el7.centos.x86_64.rpm
MariaDB-shared-10.4.13-1.el7.centos.x86_64.rpm

Нека първо инсталираме зависимостта mariabackup, наречена socat и след това стартираме командата yum localinstall, за да инсталираме RPM пакетите и да удовлетворим всички зависимости:

$ yum install socat
$ yum localinstall *.rpm

Стартирайте услугата MariaDB и проверете състоянието:

$ systemctl start mariadb
$ systemctl status mariadb

Уверете се, че не виждате грешка в процеса. След това стартирайте скрипта mysql_secure_installation, за да конфигурирате root паролата и заздравяването на MySQL:

$ mysql_secure_installation

Уверете се, че паролата за root на MariaDB е идентична на всички хостове на MariaDB. Създайте потребител на MariaDB за извършване на архивиране и SST. Това е важно, ако искаме да използваме препоръчания mariabackup като SST метод за MariaDB Cluster, а също и за целите на архивиране:

$ mysql -uroot -p
MariaDB> CREATE USER [email protected] IDENTIFIED BY 'P455w0rd';
MariaDB> GRANT SELECT, INSERT, CREATE, RELOAD, PROCESS, SUPER, LOCK TABLES, REPLICATION CLIENT, SHOW VIEW, EVENT, CREATE TABLESPACE ON *.* TO [email protected];

Трябва да променим конфигурационния файл по подразбиране, за да заредим функциите на MariaDB Cluster. Отворете /etc/my.cnf.d/server.cnf и се уверете, че съществуват следните редове за минимална конфигурация:

[mysqld]
log_error = /var/log/mysqld.log

[galera]
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so
wsrep_cluster_address=gcomm://192.168.0.241,192.168.0.242,192.168.0.243
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
innodb_flush_log_at_trx_commit=2
wsrep_sst_method=mariabackup
wsrep_sst_auth=backup_user:P455w0rd
wsrep_node_address=192.168.0.241 # change this

Не забравяйте да промените стойността wsrep_node_address с IP адреса на възела на базата данни за комуникация с MariaDB Cluster. Също така стойността wsrep_provider може да е различна в зависимост от сървъра на MariaDB и версията на MariaDB Cluster, които сте инсталирали. Намерете пътя на libgalera_smm.so и го посочете съответно тук.

Повторете същите стъпки за всички възли на базата данни и вече сме готови да стартираме нашия клъстер.

Зареждане на клъстера

Тъй като това е нов клъстер, можем да изберем всеки от възлите на MariaDB да стане референтен възел за процеса на зареждане на клъстера. Нека изберем mariadb1. Уверете се, че MariaDB е спряна първо, след това изпълнете командата galera_new_cluster за стартиране:

$ systemctl stop mariadb
$ galera_new_cluster
$ systemctl status mariadb

На другите два възела (mariadb2 и mariadb3) ще го стартираме с помощта на стандартна команда за стартиране на MariaDB:

$ systemctl stop mariadb
$ systemctl start mariadb

Проверете дали всички възли са част от клъстера, като погледнете състоянието, свързано с wsrep на всеки възел:

MariaDB> SHOW STATUS LIKE 'wsrep%';

Уверете се, че отчетеното състояние е както следва:

wsrep_local_state_comment     | Synced
wsrep_cluster_size            | 3
wsrep_cluster_status          | Primary

За MariaDB 10.4 и Galera Cluster 4 можем да получим информацията за членовете на клъстера директно от таблица mysql.wsrep_cluster_members на всеки възел на MariaDB:

$ mysql -uroot -p -e 'select * from mysql.wsrep_cluster_members'
Enter password:
+--------------------------------------+--------------------------------------+---------------+-----------------------+
| node_uuid                            | cluster_uuid                         | node_name     | node_incoming_address |
+--------------------------------------+--------------------------------------+---------------+-----------------------+
| 35177dae-a7f0-11ea-baa4-1e4604dc8f68 | de82efcb-a7a7-11ea-8273-b7a81016a75f | maria1.local  | AUTO                  |
| 3e6f9d0b-a7f0-11ea-a2e9-32f4a0481dd9 | de82efcb-a7a7-11ea-8273-b7a81016a75f | maria2.local  | AUTO                  |
| fd63108a-a7f1-11ea-b100-937c34421a67 | de82efcb-a7a7-11ea-8273-b7a81016a75f | maria3.local  | AUTO                  |
+--------------------------------------+--------------------------------------+---------------+-----------------------+

Ако нещо се обърка по време на стартирането на клъстера, проверете регистъра на грешките на MySQL в /var/log/mysqld.log на всички възли на MariaDB. След като клъстерът е стартиран и стартиран, не стартирайте galera_new_cluster скрипт отново, за да стартирате услуга MariaDB. Би трябвало да е достатъчно, като използвате стандартната команда "systemctl start/restart mariadb", освен ако вече няма възел на базата данни в PRIMARY състояние. Вижте тази публикация в блога Как да стартирате MySQL или MariaDB клъстер, за да разберете защо тази стъпка е критична.

Бонус стъпка

Вече имате клъстер от база данни, работещ без никакви функции за наблюдение и управление. Защо не импортирате клъстера на базата данни в ClusterControl? Инсталирайте ClusterControl на друг отделен сървър и настройте SSH без парола от сървъра ClusterControl към всички възли на базата данни. Предполага се, че IP сървърът на ClusterControl е 192.168.0.240, изпълнете следните команди на сървъра ClusterControl:

$ whoami
root

$ ssh-keygen -t rsa # generate key, press Enter for all prompts
$ ssh-copy-id [email protected] # root password on 192.168.0.241
$ ssh-copy-id [email protected] # root password on 192.168.0.242
$ ssh-copy-id [email protected] # root password on 192.168.0.243

След това отидете на ClusterControl -> Import -> MySQL Galera и въведете необходимите подробности за SSH:

Във втората стъпка под Дефиниране на MySQL сървъри изключете „Автоматично откриване на възли " и посочете всички IP адреси на възлите на базата данни и се уверете, че има зелена отметка до IP адреса, което показва, че ClusterControl може да достигне до възела чрез SSH без парола:

Щракнете върху Импортиране и изчакайте, докато задачата за импортиране завърши. Трябва да го видите под списъка с клъстери:

Вече сте в добри ръце. Имайте предвид, че ClusterControl по подразбиране ще използва 30-дневни пълни корпоративни функции и след като изтече, ще се върне по подразбиране към Community Edition, което е безплатно завинаги.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ръководство за MySQL Galera Cluster Streaming репликация:Част първа

  2. MariaDB VERSION() Обяснено

  3. Разширено отказване с помощта на кукички за пост/предварителен скрипт

  4. Как да защитите вашата MySQL или MariaDB база данни от SQL инжекция:Част втора

  5. Как ADDTIME() работи в MariaDB