Percona

Working with Percona

Step 1 — Install Percona

sudo apt update
sudo apt install -y curl
curl -O https://repo.percona.com/apt/percona-release_latest.generic_all.deb 
sudo apt install -y gnupg2 lsb-release ./percona-release_latest.generic_all.deb
sudo apt update
sudo percona-release setup ps80
sudo percona-release enable ps-80 release
sudo apt update
sudo apt install -y percona-server-server
sudo systemctl status mysql
● mysql.service - Percona Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2024-09-19 08:18:53 +0530; 7h ago
    Process: 674 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
   Main PID: 862 (mysqld)
     Status: "Server is operational"
      Tasks: 54 (limit: 18891)
     Memory: 404.5M
        CPU: 3min 24.976s
     CGroup: /system.slice/mysql.service
             └─862 /usr/sbin/mysqld
apt list | grep percona
libperconaserverclient21-dev/unknown 8.0.37-29-1.focal amd64
libperconaserverclient21-zenfs-dev/unknown 8.0.26-16-1.focal amd64
libperconaserverclient21-zenfs/unknown 8.0.26-16-1.focal amd64
libperconaserverclient21/unknown 8.0.37-29-1.focal amd64
percona-backup-mongodb/unknown 2.6.0-1.focal amd64
percona-mysql-router-zenfs/unknown 8.0.26-16-1.focal amd64
percona-mysql-router/unknown 8.0.37-29-1.focal amd64
percona-mysql-shell/unknown 8.0.37-1-1.focal amd64
percona-release/stable,now 1.0-29.generic all [installed]
percona-server-client-zenfs/unknown 8.0.26-16-1.focal amd64
percona-server-client/unknown,now 8.0.37-29-1.focal amd64 [installed,automatic]
percona-server-common-zenfs/unknown 8.0.26-16-1.focal amd64
percona-server-common/unknown,now 8.0.37-29-1.focal amd64 [installed,automatic]
percona-server-dbg-zenfs/unknown 8.0.26-16-1.focal amd64
percona-server-dbg/unknown 8.0.37-29-1.focal amd64
percona-server-rocksdb-zenfs/unknown 8.0.26-16-1.focal amd64
percona-server-rocksdb/unknown 8.0.37-29-1.focal amd64
percona-server-server-zenfs/unknown 8.0.26-16-1.focal amd64
percona-server-server/unknown,now 8.0.37-29-1.focal amd64 [installed]
percona-server-source-zenfs/unknown 8.0.26-16-1.focal amd64
percona-server-source/unknown 8.0.37-29-1.focal amd64
percona-server-test-zenfs/unknown 8.0.26-16-1.focal amd64
percona-server-test/unknown 8.0.37-29-1.focal amd64
percona-server-tokudb-zenfs/unknown 8.0.26-16-1.focal amd64
percona-server-tokudb/unknown 8.0.27-18-1.focal amd64
percona-telemetry-agent/stable,now 1.0.2-2.focal amd64 [installed,automatic]
percona-toolkit/unknown 3.6.0-1.focal amd64
percona-xtrabackup-24/unknown 2.4.29-1.focal amd64
percona-xtrabackup-80/unknown 8.0.35-31-1.focal amd64
percona-xtrabackup-81/unknown 8.1.0-1-1.focal amd64
percona-xtrabackup-82/unknown 8.2.0-1-1.focal amd64
percona-xtrabackup-83/unknown 8.3.0-1-1.focal amd64
percona-xtrabackup-dbg-24/unknown 2.4.29-1.focal amd64
percona-xtrabackup-dbg-80/unknown 8.0.35-31-1.focal amd64
percona-xtrabackup-dbg-81/unknown 8.1.0-1-1.focal amd64
percona-xtrabackup-dbg-82/unknown 8.2.0-1-1.focal amd64
percona-xtrabackup-dbg-83/unknown 8.3.0-1-1.focal amd64
percona-xtrabackup-test-24/unknown 2.4.29-1.focal amd64
percona-xtrabackup-test-80/unknown 8.0.35-31-1.focal amd64
percona-xtrabackup-test-81/unknown 8.1.0-1-1.focal amd64
percona-xtrabackup-test-82/unknown 8.2.0-1-1.focal amd64
percona-xtrabackup-test-83/unknown 8.3.0-1-1.focal amd64
sudo apt install percona-xtrabackup-80

Step 2 — Replication Configuration on Primary Server

sudo apt-get install nano
sudo nano /etc/mysql/my.cnf

 

[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_format = ROW
innodb_flush_log_at_trx_commit = 1
sync_binlog = 1
sudo systemctl restart mysql
mysqldump -u root -p --all-databases --master-data > db_dump.sql
mysqldump -u root -p your_database your_table > /tmp/your_table.sql

Unlock tables

UNLOCK TABLES;
scp /tmp/your_table.sql user@slave_server:/tmp/

Step 3 — Replication Configuration on Replication Server

Step 4 — Master Replication over SSL

Check following attributes on both master and replication servers.

sudo nano /etc/mysql/my.cnf

On Master server

[mysqld]

server-id = 1
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 1

relay-log = /var/lib/mysql/relay-bin
relay-log-index = /var/lib/mysql/relay-bin.index
relay-log-info-file = /var/lib/mysql/relay-log.info

log-error = /var/lib/mysql/mysql.err
master-info-file = /var/lib/mysql/mysql-master.info
log-bin = /var/lib/mysql/bin

On Replication Server

[mysqld]

server-id = 2
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 1

relay-log = /var/lib/mysql/relay-bin
relay-log-index = /var/lib/mysql/relay-bin.index
relay-log-info-file = /var/lib/mysql/relay-log.info

log-error = /var/lib/mysql/mysql.err
master-info-file = /var/lib/mysql/mysql-master.info
log-bin = /var/lib/mysql/bin

Restart MySQL on both servers

systemctl restart mysql

On Master server create a directory to save certificates

sudo chmod -R 777 /var/lib/
mkdir /var/lib/mysql-certs
cd /var/lib/mysql-certs/

CA cert

openssl genrsa 2048 > MySQLCAKey.pem
Generating RSA private key, 2048 bit long modulus (2 primes)
..........+++++
........................................................................+++++
e is 65537 (0x010001)

 

openssl req -new -x509 -nodes -days 3600 -key MySQLCAKey.pem -out MySQLCA-Cert.pem
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:MySQL Replication CA
Email Address []:

 

Percona Toolkit

Experimenting each percona toolkit tools to efficiently replicate from the master to slave server

Percona Toolkit

1. Prerequestics

Test Database

 

Percona Toolkit

2. pt-archive

In this test case, data exchange from one table to another in the same db on the same server

 

Percona Toolkit

pt-summary