Artigo/Análise Mariadb+Percona com Ansible

boston

Power Member
O conteúdo deste post é para minha referência futura mas também para quem lhe der utilidade.

SO de destino: Ubuntu 20.04 LTS

percona-xtrabackup -> não consegui dar isso instalado, possivelmente ainda não suportado na altura deste post

- hosts: db -> alterar [db] para o pretendido
src: /home/boston/yml/my.cnf -> alterar dirs


mariadb.yml
############################INICIO##############################

---
- hosts: db
become: true

tasks:

- name: Install Utility software
apt:
name:
- software-properties-common
- python3-mysqldb
state: latest
update_cache: yes

- name: Add apt key
command: apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'

- name: Add MariaDB Repo
apt_repository:
filename: MariaDB-10.5
repo: deb [arch=amd64] https://mirrors.up.pt/pub/mariadb/repo/10.5/ubuntu focal main
state: present

- name: Get Key for Percona Repo
command: apt-key adv --keyserver keys.gnupg.net --recv-keys 9334A25F8507EFA5

- name: Add Percona Tools Repo
apt_repository:
filename: Percona
repo: deb https://repo.percona.com/percona/apt trusty main
state: present

- name: Install MariaDB Packages
apt:
name:
- mariadb-client
- mariadb-common
- mariadb-server
state: present
default_release: trusty
update_cache: yes

- name: Install Percona Software
apt:
name:
- percona-toolkit
# - percona-xtrabackup
- percona-nagios-plugins
state: latest


- name: Create MariaDB Directories
file: path=/data/{{item}} state=directory owner=mysql group=mysql recurse=yes
with_items:
- db
- log

- name: Write new configuration file
template:
src: /home/boston/yml/my.cnf
dest: /etc/mysql/my.cnf
owner: mysql
group: mysql
mode: '0600'
backup: yes

#- name: Count files in /data/db
# find: path=/data/db patterns='*'
# register: db_files

#- name: Run mysql_install_db only if /data/db is empty
# command: mysql_install_db --datadir=/data/db
# when: db_files.matched|int == 0

- name: Start MariaDB
service: name=mysql state=started

- name: Is root password set?
command: mysql -u root --execute "SELECT NOW()"
register: is_root_password_set
ignore_errors: yes

- name: Delete anonymous users
mysql_user: user="" state="absent"
when: is_root_password_set.rc == 0

- name: Generate mysql root password
shell: tr -d -c "a-zA-Z0-9" < /dev/urandom | head -c 10
register: mysql_root_password
when: is_root_password_set.rc == 0

- name: Set root password
mysql_user: user=root password="{{mysql_root_password.stdout}}" host=localhost
when: is_root_password_set.rc == 0

- name: Set root password for other hosts
mysql_user: user=root password="{{mysql_root_password.stdout}}" host="{{item}}" login_user="root" login_host="localhost" login_password="{{mysql_root_password.stdout}}"
when: is_root_password_set.rc == 0
with_items:
- "127.0.0.1"
- "::1"

- name: Inform user of mysql root password
debug:
msg: "MariaDB root password was set to {{mysql_root_password.stdout}}"
when: is_root_password_set.rc == 0



############################FIM##############################


my.cnf
############################INICIO##############################

[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock

# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
syslog

[mysqld]
# Basic Settings
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
performance_schema = ON

# CACHES AND LIMITS #

query-cache-type = 0
query-cache-size = 0
query_cache_limit = 1M

# Bin logs
binlog-format = ROW
log-bin = /var/lib/mysql/mysql-bin
log-slave-updates = 1
expire-logs-days = 5
sync-binlog = 1
max_binlog_size = 100M


############################FIM##############################
 
Última edição:
O conteúdo deste post é para minha referência futura mas também para quem lhe der utilidade.

SO de destino: Ubuntu 20.04 LTS

percona-xtrabackup -> não consegui dar isso instalado, possivelmente ainda não suportado na altura deste post

- hosts: db -> alterar [db] para o pretendido
src: /home/boston/yml/my.cnf -> alterar dirs


mariadb.yml
############################INICIO##############################

---
- hosts: db
become: true

tasks:

- name: Install Utility software
apt:
name:
- software-properties-common
- python3-mysqldb
state: latest
update_cache: yes

- name: Add apt key
command: apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'

- name: Add MariaDB Repo
apt_repository:
filename: MariaDB-10.5
repo: deb [arch=amd64] https://mirrors.up.pt/pub/mariadb/repo/10.5/ubuntu focal main
state: present

- name: Get Key for Percona Repo
command: apt-key adv --keyserver keys.gnupg.net --recv-keys 9334A25F8507EFA5

- name: Add Percona Tools Repo
apt_repository:
filename: Percona
repo: deb https://repo.percona.com/percona/apt trusty main
state: present

- name: Install MariaDB Packages
apt:
name:
- mariadb-client
- mariadb-common
- mariadb-server
state: present
default_release: trusty
update_cache: yes

- name: Install Percona Software
apt:
name:
- percona-toolkit
# - percona-xtrabackup
- percona-nagios-plugins
state: latest


- name: Create MariaDB Directories
file: path=/data/{{item}} state=directory owner=mysql group=mysql recurse=yes
with_items:
- db
- log

- name: Write new configuration file
template:
src: /home/boston/yml/my.cnf
dest: /etc/mysql/my.cnf
owner: mysql
group: mysql
mode: '0600'
backup: yes

#- name: Count files in /data/db
# find: path=/data/db patterns='*'
# register: db_files

#- name: Run mysql_install_db only if /data/db is empty
# command: mysql_install_db --datadir=/data/db
# when: db_files.matched|int == 0

- name: Start MariaDB
service: name=mysql state=started

- name: Is root password set?
command: mysql -u root --execute "SELECT NOW()"
register: is_root_password_set
ignore_errors: yes

- name: Delete anonymous users
mysql_user: user="" state="absent"
when: is_root_password_set.rc == 0

- name: Generate mysql root password
shell: tr -d -c "a-zA-Z0-9" < /dev/urandom | head -c 10
register: mysql_root_password
when: is_root_password_set.rc == 0

- name: Set root password
mysql_user: user=root password="{{mysql_root_password.stdout}}" host=localhost
when: is_root_password_set.rc == 0

- name: Set root password for other hosts
mysql_user: user=root password="{{mysql_root_password.stdout}}" host="{{item}}" login_user="root" login_host="localhost" login_password="{{mysql_root_password.stdout}}"
when: is_root_password_set.rc == 0
with_items:
- "127.0.0.1"
- "::1"

- name: Inform user of mysql root password
debug:
msg: "MariaDB root password was set to {{mysql_root_password.stdout}}"
when: is_root_password_set.rc == 0



############################FIM##############################


my.cnf
############################INICIO##############################

[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock

# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
syslog

[mysqld]
# Basic Settings
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
performance_schema = ON

# CACHES AND LIMITS #

query-cache-type = 0
query-cache-size = 0
query_cache_limit = 1M

# Bin logs
binlog-format = ROW
log-bin = /var/lib/mysql/mysql-bin
log-slave-updates = 1
expire-logs-days = 5
sync-binlog = 1
max_binlog_size = 100M


############################FIM##############################


Deixa mais informação sobra a finalidade do post ;)

https://www.percona.com/software/mysql-database/percona-xtrabackup
 
Back
Topo