Показати сторінкуСтарі ревізіїПосилання сюдиЕкспорт до PDFПовернутися наверх Ця сторінка доступна тільки для перегляду. Ви можете продивитися вихідний текст, але не можете змінювати його. Якщо ви вважаєте, що це не вірно, зверніться до адміністратора. ====== Percona XtraDB Cluster ====== Встановлення Percona XtraDB Cluster на Debian 11 ===== Підготовка Осі ===== apt update apt install -y wget gnupg2 curl lsb-release [[https://docs.percona.com/percona-xtradb-cluster/8.0/apt.html#install-from-repository]] [[https://www.howtoforge.com/how-to-install-percona-xtradb-cluster-on-debian-11/]] [[https://habr.com/ru/articles/422347/]] [[https://habr.com/ru/companies/slurm/articles/478930/]] [[https://github.com/Aidaho12/Galera_wsrep_notify]] ^ port ^ protocol ^ description ^ | 3306 | tcp | MySQL client connection and SST (State Snapshot Transfer) | | 4444 | tcp | SST via Percona XtraBackup | | 4567 | tcp / udp | write-set replication traffic (over TCP) and multicast replication (over TCP and UDP) | | 4568 | tcp | IST (Incremental State Transfer) | ==== Встановлення кластера ==== === Отримуємо репозиторій і встановлюємо його === wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb dpkg -i percona-release_latest.generic_all.deb === Встановлюємо кластер === Для версії percona cluster 8.0 <code bash> percona-release disable all percona-release setup pxc80 apt install percona-xtradb-cluster </code> В процесі встановлення буде запропоновано встановити пароль для користувача root, я на цьому етапі встановлюю пароль також root, після чого його зміню сам. === При необхідності встановлюємо утиліти percona-toolkit === <code bash> percona-release enable tools release apt update apt install percona-toolkit </code> === Після встановлення зупиняємо mysql === <code bash> # Після встановлення зупиняємо mysql service mysql stop </code> ==== Конфігуруємо кластер ==== Є два сервери, які потрібно зібрати в кластер ^ Node ^ Host ^ IP ^ |Node 1 | db6 | 172.16.0.56 | |Node 2 | db7 | 172.16.0.57 | ====Створюємо конфіг першої ноди==== <code bash> nano /etc/mysql/mysql.conf.d/wsrep.cnf </code> У файл додаємо наступний вміст: <code bash> [mysqld] datadir=/var/lib/mysql user=mysql # Path to Galera library wsrep_provider=/usr/lib/galera4/libgalera_smm.so # Cluster name wsrep_cluster_name=pxc-cluster # Cluster connection URL contains the IPs of nodes wsrep_cluster_address=gcomm://172.16.0.56,172.16.0.57,172.16.0.58 # Node IP address wsrep_node_address=172.16.0.56 #If wsrep_node_name is not specified, then system hostname will be used wsrep_node_name=pxc-node-1 # In order for Galera to work correctly binlog format should be ROW binlog_format=ROW # Using the MyISAM storage engine is not recommended. default_storage_engine=InnoDB # This InnoDB autoincrement locking mode is a requirement for Galera innodb_autoinc_lock_mode=2 # Applier thread to use wsrep_applier_threads=8 wsrep_log_conflicts # SST method wsrep_sst_method=xtrabackup-v2 #pxc_strict_mode allowed values: DISABLED,PERMISSIVE,ENFORCING,MASTER pxc_strict_mode=ENFORCING # IST method #wsrep_provider_options='gcache.size=20G;' </code> <code bash> #Конфігуруємо користувача для синка даних між БД mysql -u root -p </code> ====Додаємо користувача MySQL==== Зупиняємо MySQL service mysql stop Bootstrat їм ноду <code bash> # У цей момент поточна нода визначає змінну wsrep_cluster_conf_id в 1 systemctl start mysql@bootstrap.service # Підключаємося в mysql і додаємо користувача з паролем mysql -p </code> <code mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'verySt0ngPa$$wd'; GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost'; FLUSH PRIVILEGES; </code> ==== Генерація сертифікатів ==== <code bash> # Генерація сертифікатів mkdir /etc/mysql/certs; cd /etc/mysql/certs # Generate CA key and certificate # Generate the CA key file: openssl genrsa 2048 > ca-key.pem # Generate the CA certificate file: openssl req -new -x509 -nodes -days 9999 -key ca-key.pem -out ca.pem # Generate server key and certificate # Generate the server key file: openssl req -newkey rsa:2048 -days 9999 -nodes -keyout server-key.pem -out server-req.pem # Remove the passphrase: openssl rsa -in server-key.pem -out server-key.pem # Generate the server certificate file: openssl x509 -req -in server-req.pem -days 9999 -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem # Generate client key and certificate # Generate the client key file: openssl req -newkey rsa:2048 -days 9999 -nodes -keyout client-key.pem -out client-req.pem # Remove the passphrase: openssl rsa -in client-key.pem -out client-key.pem # Generate the client certificate file: openssl x509 -req -in client-req.pem -days 9999 -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem </code> <code bash> root@db4 ~ # /etc/init.d/mysql bootstrap-pxc Bootstrapping Percona XtraDB Cluster database server: mysqld .. </code> ====Особливості конфігурації в Debian ==== Тут є важливе зауваження, на яке слід звернути пильну увагу. Проблема в тому, що в скрипті systemd debian немає опцій для зупинки bootstrap <code bash> root@db4:~# service mysql Usage: /etc/init.d/mysql start|stop|restart|restart-bootstrap|reload|force-reload|status|bootstrap-pxc </code> Сам файл /etc/systemd/system/mysql.bootstrap.service: <code bash> [Unit] Description=Percona XtraDB Cluster daemon After=network.target After=syslog.target [Install] WantedBy=multi-user.target [Service] User=mysql Group=mysql Type=forking TimeoutSec=0 PermissionsStartOnly=true ExecStart=/etc/init.d/mysql bootstrap-pxc ExecStop=/usr/bin/mysqladmin shutdown ExecReload=/etc/init.d/mysql reload EnvironmentFile=-/etc/default/mysql LimitNOFILE = 5000 Restart=on-failure RestartSec=3 RestartPreventExitStatus=1 PrivateTmp=false </code> Тому для зупинки bootstrap слід через ps aux визначити id працюючого процесу та вбити його. Після цього потрібно запустити працювати mysql у звичайному режимі командою ''service mysql start'' ====Додаємо другу ноду==== Необхідно додати користувача на ноду, аналогічно першій ноді. У конфізі виправляємо два параметри - **IP** та **ім'я** ноди: wsrep_node_name=db5 wsrep_node_address=172.16.0.57 Стартуємо сервер MySQL root@db5 ~ # service mysql stop root@db5 ~ # service mysql start Перевіряємо роботу, заходимо в MySQL mysql -p <code sql> mysql> show status like 'wsrep%'; mysql> show status like 'wsrep_local_state_comment'; +---------------------------+--------+ | Variable_name | Value | +---------------------------+--------+ | wsrep_local_state_comment | Synced | +---------------------------+--------+ 1 row in set (0.00 sec) mysql> show status like 'wsrep_cluster_status'; +----------------------+---------+ | Variable_name | Value | +----------------------+---------+ | wsrep_cluster_status | Primary | +----------------------+---------+ 1 row in set (0.00 sec) mysql> show status like 'wsrep_connected'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | wsrep_connected | ON | +-----------------+-------+ 1 row in set (0.00 sec) mysql> show status like 'wsrep_local_state'; +-------------------+-------+ | Variable_name | Value | +-------------------+-------+ | wsrep_local_state | 4 | +-------------------+-------+ 1 row in set (0.00 sec) </code> Аналогічно можна додати ще одну або кілька нод percona за потреби. ===== PMM ===== ==== pmm Server ==== [[https://forums.percona.com/t/after-upgrade-pmm2-container-fails-to-start-with-fatal-glibc-error-cpu-does-not-support-x86-64-v2/24059]] [[https://docs.percona.com/percona-monitoring-and-management/setting-up/server/docker.html#run]] ==== pmm client ==== lsb_release -sc No LSB modules are available. bookworm bookworm тобто Debian 12, на момент написання статті не мав окремого репозиторію, тому використаємо репозиторій для Debian 11 nano /etc/apt/sources.list.d/percona-pmm2-client-release.list deb http://repo.percona.com/pmm2-client/apt bullseye main deb-src http://repo.percona.com/pmm2-client/apt bullseye main apt-get update apt install -y pmm2-client pmm-admin config --server-insecure-tls --server-url=https://admin:admin@172.16.0.48:8443 mysql -u root -proot CREATE USER 'pmm'@'127.0.0.1' IDENTIFIED BY 'pass' WITH MAX_USER_CONNECTIONS 10; GRANT SELECT, PROCESS, REPLICATION CLIENT, RELOAD, BACKUP_ADMIN ON *.* TO 'pmm'@'127.0.0.1'; FLUSH Previlegios; pmm-admin add mysql --username=pmm --password=pass --server-url=https://admin:admin@172.16.0.48:8443 --server-insecure-tls debian/pxcluster.txt Востаннє змінено: 29/09/2023 08:24повз Method Увійти