235
MySQL Administração Backup & Recovery Tuning Alta Disponibilidade Inclui Percona e MariaDB Ricardo Porlho Proni [email protected] Nerv Informáca Ltda. Esta obra está licenciada sob a licença Creave Commons Atribuição-SemDerivados 3.0 Brasil. Para ver uma cópia desta licença, visite hp://creavecommons.org/licenses/by-nd/3.0/br/.

MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

  • Upload
    others

  • View
    31

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

MySQL Administração Backup & Recovery Tuning Alta Disponibilidade

Inclui Percona e MariaDB

Ricardo Portilho [email protected] Informática Ltda.

Esta obra está licenciada sob a licençaCreative Commons Atribuição-SemDerivados 3.0 Brasil.Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-nd/3.0/br/.

Page 2: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

22

Produtos utilizados no Treinamento● Oracle Enterprise Linux 7.7● MySQL 5.7.28 e 8.0.13● Percona Server 5.7.28● MariaDB 10.4.10● Oracle VirtualBox 6.0.14

Page 3: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

33

Comandos no Treinamento

Comando com o usuário root:# mysql -u root -pNerv2019.

Comando no MySQL:mysql> SHOW DATABASES;

Adicionar texto a um arquivo:# vi /etc/my.cnf...log-bin=mysql-bin...

Algo deve ser alterado de acordo com sua máquina:# scp -Cr /root/ColdBackup/mysql/* [email protected]:/var/lib/mysql/

Quando algo dá errado propositalmente:O que aconteceu?

Todas as senhas são Nerv2019.

Page 4: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

4

Mercado de Trabalho MySQL

4

Page 5: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

55

Por que MySQL?

https://db-engines.com/en/ranking

Page 6: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

66

DBA MySQLDBA MySQL e ...● Desenvolvedor● Administrador de Dados● Administrador de Sistema Operacional● DevOPS● Analista de Sistema● DBA de outro banco

Page 7: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

77

Certificações

https://education.oracle.com/database/mysql/pFamily_406

Page 8: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

88

Livros● MySQL 5.0 Certification Study Guide● High Performance MySQL

Page 9: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

99

MySQL Blogs

Page 10: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

1010

MySQL Blogs

Page 11: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

1111

MySQL Blogs

Page 12: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

1212

MySQL Blogs

Page 13: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

1313

Fóruns

Page 14: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

1414

Documentação

https://dev.mysql.com/doc/refman/5.5/en/index.htmlhttps://dev.mysql.com/doc/refman/5.6/en/index.htmlhttps://dev.mysql.com/doc/refman/5.7/en/index.htmlhttps://dev.mysql.com/doc/refman/8.0/en/

Page 15: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

1515

MySQL Internals Manual

https://dev.mysql.com/doc/internals/en/

Page 16: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

16

Produtos MySQL

16

Page 17: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

17

História do MySQL

Page 18: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

18

História do MySQL

Page 19: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

1919

Open Source

Page 20: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

2020

Open Source

Page 21: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

2121

Open Source

Page 22: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

2222

Produtos Community

Page 23: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

2323

Produtos Enterprise

https://www.mysql.com/products/

Page 24: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

2424

Produtos Enterprise

https://www.mysql.com/products/

Page 25: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

2525

mysqlbackup

https://www.mysql.com/products/enterprise/backup.html

Page 26: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

2626

Thread Pool

https://www.mysql.com/products/enterprise/scalability.html

Page 27: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

2727

MySQL Enterprise Monitor

https://www.mysql.com/products/enterprise/monitor.html

Page 28: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

2828

MySQL Enterprise Monitor - MySQL Query Analyzer

https://www.mysql.com/products/enterprise/monitor.html

Page 29: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

2929

MySQL Enterprise Monitor - Database File IO

https://www.mysql.com/products/enterprise/monitor.html

Page 30: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

3030

MySQL Enterprise Monitor - MySQL Replication Topology View

https://www.mysql.com/products/enterprise/monitor.html

Page 31: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

3131

MySQL Enterprise Monitor - MySQL Cluster Topology View

https://www.mysql.com/products/enterprise/monitor.html

Page 32: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

3232

MySQL Enterprise Monitor - MySQL Replication Multi-Source

https://www.mysql.com/products/enterprise/monitor.html

Page 33: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

3333

MySQL Enterprise Monitor - MySQL Replication Status

https://www.mysql.com/products/enterprise/monitor.html

Page 34: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

3434

MySQL Enterprise Monitor - MySQL Enterprise Backup Dashboard

https://www.mysql.com/products/enterprise/monitor.html

Page 35: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

35

Instalação

35

Page 36: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

3636

Instalação – Repositório Padrão[root@CentOS-6 ~]# cat /etc/redhat-releaseCentOS release 6.10 (Final)[root@CentOS-6 ~]# yum -y install mysql-server...[root@CentOS-6 ~]# rpm -qa | grep mysqlmysql-libs-5.1.73-8.el6_8.x86_64mysql-server-5.1.73-8.el6_8.x86_64mysql-5.1.73-8.el6_8.x86_64[root@CentOS-6 ~]#

[root@CentOS-7 ~]# cat /etc/redhat-releaseCentOS Linux release 7.5.1804 (Core)[root@CentOS-7 ~]# yum -y install mysql-server...No package mysql-server available.[root@CentOS-7 ~]#

[root@CentOS-7 ~]# yum -y install mariadb-server[root@CentOS-7 ~]# rpm -qa | grep mariadb...mariadb-5.5.60-1.el7_5.x86_64mariadb-libs-5.5.60-1.el7_5.x86_64mariadb-server-5.5.60-1.el7_5.x86_64[root@CentOS-7 ~]#

Page 37: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

3737

Red Hat / CentOS / OEL e MySQL / MariaDB

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/7.0_release_notes/chap-red_hat_enterprise_linux-7.0_release_notes-web_servers_and_services

Page 38: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

3838

Instalação – Versão Específica

Page 39: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

3939

Instalação – Repositórios MySQL

https://dev.mysql.com/downloads/

Page 40: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

4040

Lab 1.1: Instalação MySQLEdite o arquivo /etc/yum.repos.d/public-yum-ol7.repo, e habilite o reposítório do MySQL 5.7.# wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm# yum -y install mysql80-community-release-el7-3.noarch.rpm

# vi /etc/yum.repos.d/mysql-community.repo...# Enable to use MySQL 5.7[mysql57-community]name=MySQL 5.7 Community Serverbaseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/enabled=1gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql...[mysql80-community]name=MySQL 8.0 Community Serverbaseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/7/$basearch/enabled=0gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql...

# yum -y install mysql-server# systemctl enable mysqld# ls -lh /var/lib/mysql# systemctl start mysqld# ls -lh /var/lib/mysql

Page 41: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

4141

Lab 1.2: Instalação MySQLVerifique o Log do MySQL, e altere a senha do usuário root.# grep password /var/log/mysqld.log# /usr/bin/mysqladmin -u root -p password 'Nerv2019.'

Acesse o MySQL, e verifique o acesso.# mysql -u root -pmysql> EXIT;

Libere a porta do MySQL no Firewall.# firewall-cmd --zone=public --add-port=3306/tcp --permanent# firewall-cmd --reload# firewall-cmd --zone=public --permanent --list-ports

Page 42: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

4242

Lab 1.3: Status MySQL

Verifique as formas de conexão com o MySQL.# mysql -u root -pmysql> STATUS;mysql> EXIT;

# mysqladmin -u root -pNerv2019. status

# tail /var/log/mysqld.log

# grep -B1 “ready for connections” /var/log/mysqld.log

Page 43: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

4343

Lab 1.4: Client MySQL

Verifique as formas de conexão com o MySQL.# mysql -u root -pmysql> SHOW DATABASES;mysql> EXIT;

# mysql -pmysql> SHOW DATABASES;mysql> EXIT;

# mysql -u root -pNerv2019.mysql> SHOW DATABASES;mysql> EXIT;

# mysql -uroot -pNerv2019.mysql> SHOW DATABASES;mysql> EXIT;

mysql> prompt \U-\d-\R:\m:\s>mysql> SHOW DATABASES;mysql> USE mysql;mysql> EXIT;

# vi .my.cnf[client]password=Nerv2019.prompt='\U-\d-\R:\m:\\s>'

# mysql

Page 44: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

4444

Lab 1.5: Client MySQL

Verifique as formas de execução de comandos no MySQL.# mysqlmysql> SHOW DATABASES;# mysql -e “SHOW DATABASES”# mysql -e 'SHOW DATABASES'# mysql -t -e 'SHOW DATABASES'# mysql -B -e 'SHOW DATABASES'# mysql -E -e 'SHOW DATABASES'# mysql -X -e 'SHOW DATABASES'

# mysql -e 'SHOW DATABASES' > databases.txt# cat databases.txt

# mysql -t -e 'SHOW DATABASES' > databases.txt# cat databases.txt

# echo 'SHOW DATABASES' > databases.sql# mysql -t < databases.sql# mysql -t < databases.sql > databases.txt# cat databases.txt

mysql> source databases.sql

Importe os bancos de dados de exemplo.# mysql < MYA.sql# mysql -v < MYA.sqlmysql> SHOW DATABASES;

Page 45: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

4545

Lab 1.6: Client MySQL

Verifique as formas de execução de comandos no MySQL.mysql> SHOW STATUS;mysql> pager less -n -i -S -F -Xmysql> SHOW STATUS;

mysql> \Wmysql> \w

# export EDITOR=vi# mysqlmysql> SHOW DATABASES;mysql> editmysql> ;

mysql> tee audit.logmysql> SHOW DATABASES;mysql> notee# cat audit.log

mysql> system ls -lhmysql> \! ls -lh

mysql> help

Page 46: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

4646

Engines

https://en.wikipedia.org/wiki/Comparison_of_MySQL_database_engines

Page 47: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

4747

Engines

Verifique as formas de execução de comandos no MySQL.mysql> CREATE DATABASE test;mysql> USE test;

mysql> CREATE TABLE t1 (c1 INT);mysql> SHOW CREATE TABLE t1;

mysql> CREATE TABLE t2 (c1 INT) Engine=InnoDB;mysql> SHOW CREATE TABLE t2;

mysql> CREATE TABLE t3 (c1 INT) Engine=MyISAM;mysql> SHOW CREATE TABLE t3;

mysql> CREATE TABLE t4 (c1 INT) Engine=Memory;mysql> SHOW CREATE TABLE t4;

mysql> CREATE TABLE t5 (c1 INT) Engine=Archive;mysql> SHOW CREATE TABLE t5;

mysql> ALTER TABLE t5 Engine=InnoDB;mysql> SHOW CREATE TABLE t5;

mysql> SHOW ENGINES;

Page 48: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

4848

Engines MySQL x Percona x MariaDB

Page 49: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

4949

Releases MySQL x Percona x MariaDB

https://www.percona.com/blog/2017/11/02/mysql-vs-mariadb-reality-check/

Page 50: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

5050

MySQL x Percona Server

https://db-engines.com/en/ranking

Page 51: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

5151

Percona Server

Page 52: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

5252

Percona Server

Page 53: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

5353

Percona Server

Page 54: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

5454

Percona Server

https://www.percona.com/software/mysql-database/percona-server/benchmarks

Page 55: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

5555

Percona Server

Page 56: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

5656

Percona Server

https://www.percona.com/software/mysql-database/percona-server/feature-comparison

Page 57: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

5757

Percona Server

https://www.percona.com/software/mysql-database/percona-server/feature-comparison

Page 58: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

5858

Percona Server

https://www.percona.com/software/mysql-database/percona-server/feature-comparison

Page 59: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

5959

Percona Server

https://www.percona.com/software/mysql-database/percona-server/feature-comparison

Page 60: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

6060

Lab 2.1: Percona Server

Instale o Oracle VM VirtualBox.# yum -y install SDL kernel-uek-devel# wget https://download.virtualbox.org/virtualbox/6.0.14/VirtualBox-6.0-6.0.14_133895_el7-1.x86_64.rpm# yum -y install VirtualBox-6.0-6.0.14_133895_el7-1.x86_64.rpm

Page 61: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

6161

Lab 2.2: Percona Server

No Oracle VM VirtualBox, clique em “File”, e em “Import Appliance”, e importe o arquivo /root/Linux.ova.

Page 62: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

6262

Lab 2.3: Percona Server

Page 63: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

6363

Lab 2.4: Percona Server

Page 64: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

6464

Lab 2.5: Percona Server

Page 65: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

6565

Lab 2.6: Percona Server

Verifique o IP da VM, e a acesse via ssh.# ip addr

Pelo nmtui, altere o hostname da VM para Percona.localdomain.

Instale o Percona Server.# yum -y install wget# wget https://www.percona.com/redir/downloads/percona-release/redhat/1.0-13/percona-release-1.0-13.noarch.rpm# yum -y install percona-release-1.0-13.noarch.rpm# yum search Percona-Server# yum -y install Percona-Server-server-57# systemctl enable mysqld# systemctl start mysqld# grep password /var/log/mysqld.log# mysqladmin -u root -p password 'Nerv2019.'# mysql -u root -pNerv2019.mysql> SHOW DATABASES;mysql> SHOW ENGINES;

Importe os bancos de dados de exemplo.# mysql -u root -pNerv2019. -e “SHOW DATABASES”# mysql -u root -pNerv2019. < MYA.sql# mysql -u root -pNerv2019. -e “SHOW DATABASES”

Page 66: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

6666

MariaDB

https://en.wikipedia.org/wiki/MariaDB

Page 67: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

6767

MariaDB

https://mariadb.com/kb/en/library/mariadb-vs-mysql-features/

Page 68: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

6868

MariaDB

https://mariadb.com/kb/en/library/mariadb-vs-mysql-features/

Page 69: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

6969

MariaDB

https://mariadb.com/kb/en/library/mariadb-vs-mysql-features/

Page 70: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

7070

MariaDB

https://mariadb.com/kb/en/library/optimizer-feature-comparison-matrix/

Page 71: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

7171

MariaDB

https://mariadb.com/kb/en/library/optimizer-feature-comparison-matrix/

Page 72: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

7272

MariaDB

https://mariadb.com/kb/en/library/mariadb-vs-mysql-compatibility/

Page 73: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

7373

MariaDB

https://mariadb.org/performance-evaluation-of-mariadb-10-1-and-mysql-5-7-4-labs-tplc/

Page 74: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

7474

MariaDB

Page 75: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

7575

MariaDB - Services

https://mariadb.com/services/

Page 76: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

7676

MariaDB - Subscription

https://mariadb.com/pricing/

Page 77: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

7777

MariaDB - Subscription

https://mariadb.com/pricing/

Page 78: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

7878

MariaDB x mariadb.org x mariadb.com

https://mariadb.org/about/https://mariadb.org/about/#sponsorshttps://mariadb.org/about/#board

Page 79: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

7979

MariaDB x mariadb.org x mariadb.com

https://mariadb.com/trademarks/

Page 80: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

8080

Business Source License (BSL)

https://mariadb.com/bsl-faq-mariadb/

Page 81: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

8181

Business Source License (BSL)

https://mariadb.com/projects-using-bsl-11/

Page 82: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

8282

MariaDB - Parceiros

https://mariadb.com/kb/en/library/sql-diagnostic-manager-sqlyog/

Page 83: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

8383

Lab 3.1: MariaDBNo Oracle VM VirtualBox, crie uma nova VM, com o nome “MariaDB”, importanto novamente o arquivo /root/Linux.ova.

Page 84: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

8484

Lab 3.2: MariaDB

https://downloads.mariadb.org/mariadb/repositories

Page 85: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

8585

Lab 3.3: MariaDB

Verifique o IP da VM, e a acesse via ssh.# ip addr

Pelo nmtui, altere o hostname da VM para MariaDB.localdomain.

Instale o MariaDB.# vi /etc/yum.repos.d/MariaDB.repo[mariadb]name = MariaDBbaseurl = http://yum.mariadb.org/10.4/rhel7-amd64gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDBgpgcheck=1

# yum -y install MariaDB-server# systemctl enable mariadb# ls -lh /var/lib/mysql/# systemctl status mariadb# systemctl start mariadb# ls -lh /var/lib/mysql/# mysqlmysql> SHOW ENGINES;

Importe os bancos de dados de exemplo.# mysql -e “SHOW DATABASES”# mysql < MYA.sql# mysql -e “SHOW DATABASES”

Page 86: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

86

Administração

86

Page 87: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

8787

Lab 4.1: Estruturas Físicas e Lógicas

Crie um novo banco de dados.# mysqlmysql> SHOW TABLES;mysql> SHOW DATABASES;

mysql> CREATE DATABASE nerv;mysql> SHOW DATABASES;mysql> USE nerv;mysql> STATUS;mysql> SHOW TABLES;

mysql> SELECT * FROM employees.titles;mysql> select * from employees.titles;

mysql> SELECT * FROM EMPLOYEES.titles;mysql> SELECT * FROM employees.TITLES;

mysql> SHOW CREATE TABLE employees.titles;

# mysql employeesmysql> SHOW TABLES;

Page 88: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

8888

Lab 4.2: Estruturas Físicas e LógicasVerifique as estruturas físicas dos MySQL.# ls -lh /var/lib/mysql/...drwxr-x---. 2 mysql mysql 4.0K Nov 30 10:22 employees-rw-r-----. 1 mysql mysql 13K Dec 1 19:21 ib_buffer_pool-rw-r-----. 1 mysql mysql 48M Dec 1 19:21 ib_logfile0-rw-r-----. 1 mysql mysql 48M Dec 1 19:21 ib_logfile1drwxr-x---. 2 mysql mysql 84 Nov 30 10:22 menageriedrwxr-x---. 2 mysql mysql 4.0K Nov 30 10:22 mysqldrwxr-x---. 2 mysql mysql 20 Dec 1 18:56 nervdrwxr-x---. 2 mysql mysql 8.0K Nov 30 08:47 performance_schemadrwxr-x---. 2 mysql mysql 4.0K Nov 30 10:22 sakiladrwxr-x---. 2 mysql mysql 8.0K Nov 30 08:47 sysdrwxr-x---. 2 mysql mysql 4.0K Nov 30 10:37 testdrwxr-x---. 2 mysql mysql 4.0K Nov 30 10:22 world...[root@MySQL-01 ~]#

# ls -lh /var/lib/mysql/nerv/-rw-rw----. 1 mysql mysql 65 Out 26 15:57 db.opt

# cat /var/lib/mysql/nerv/db.optdefault-character-set=latin1default-collation=latin1_swedish_ci

# ls -lh /var/lib/mysql/menagerie/# ls -lh /var/lib/mysql/mysql/

Page 89: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

8989

Lab 4.3: Dicionário de Dados

Verifique o conteúdo das tabelas do banco mysql.# mysqlmysql> USE mysql;mysql> SHOW TABLES;mysql> SELECT * FROM db;mysql> SELECT * FROM user;

Page 90: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

9090

Lab 4.4: Dicionário de Dados

Verifique o conteúdo das tabelas do banco information_schema.# mysqlmysql> USE information_schema;mysql> SHOW TABLES;mysql> SELECT * FROM TABLES;mysql> SELECT * FROM USER_PRIVILEGES;

http://dev.mysql.com/doc/refman/5.7/en/information-schema.html

Page 91: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

9191

Lab 4.5: Dicionário de Dados

Verifique o conteúdo das tabelas do banco performance_schema.# mysqlmysql> USE performance_schema;mysql> SHOW TABLES;mysql> SELECT * FROM threads;mysql> SELECT * FROM users;

http://dev.mysql.com/doc/refman/5.7/en/performance-schema.htmlhttp://dev.mysql.com/doc/refman/5.7/en/performance-schema-table-index.htmlhttp://dev.mysql.com/doc/refman/5.7/en/sys-schema.html

Page 92: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

9292

Lab 4.6: Variables, Status, Thread States

Verifique as Variables, Status, e Thread States.# mysqlmysql> SHOW VARIABLES;mysql> SHOW VARIABLES LIKE '%wait%';

mysql> SHOW STATUS;mysql> SHOW STATUS LIKE '%Thread%';

mysql> SHOW PROCESSLIST;mysql> SHOW FULL PROCESSLIST;

Variableshttp://dev.mysql.com/doc/refman/5.7/en/server-system-variables.htmlhttps://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html

Status Variableshttp://dev.mysql.com/doc/refman/5.7/en/server-status-variables.html

Thread Stateshttp://dev.mysql.com/doc/refman/5.7/en/general-thread-states.html

Page 93: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

9393

Variables

Page 94: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

9494

Variables

Page 95: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

9595

Lab 4.7: VariablesAltere uma Variable, com SET e com SET GLOBAL.# mysqlmysql> SHOW VARIABLES LIKE '%sort%';mysql> SET sort_buffer_size=524288; (OU SET @@local.sort_buffer_size=524288;)mysql> SHOW VARIABLES LIKE '%sort%'; (OU SELECT @@local.sort_buffer_size;)mysql> SELECT @@global.sort_buffer_size;mysql> EXIT;# mysqlmysql> SHOW VARIABLES LIKE '%sort%';mysql> SELECT @@local.sort_buffer_size;

# mysqlmysql> SHOW VARIABLES LIKE '%sort%';mysql> SET GLOBAL sort_buffer_size=524288; (OU SET @@global.sort_buffer_size=524288;)mysql> SHOW VARIABLES LIKE '%sort%'; (OU SELECT @@local.sort_buffer_size;)mysql> SELECT @@global.sort_buffer_size;mysql> EXIT;# mysqlmysql> SHOW VARIABLES LIKE '%sort%';

mysql> SET GLOBAL sort_buffer_size = DEFAULT;mysql> SET sort_buffer_size = DEFAULT;

mysql> SET global tmpdir='/var/lib/mysql/';

Page 96: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

9696

Lab 4.8: Variables

Altere uma Variable pelo arquivo de parâmetros.# mysqlmysql> SHOW VARIABLES LIKE '%sort%';mysql> exit;

# vi /etc/my.cnf...[mysqld]sort_buffer_size = 2M...

# systemctl stop mysqld# systemctl start mysqld

# mysqlmysql> SHOW VARIABLES LIKE '%sort%';

mysql> SET GLOBAL sort_buffer_size=4M;O que aconteceu?

Page 97: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

9797

Lab 4.9: Usuários e PermissõesCrie um usuário para conexão remota.mysql> CREATE USER 'ricardo'@'localhost' IDENTIFIED BY 'Nerv2019.';mysql> GRANT ALL PRIVILEGES ON *.* TO 'ricardo'@'localhost';mysql> REVOKE ALL PRIVILEGES ON *.* FROM 'ricardo'@'localhost';mysql> DROP USER 'ricardo'@'localhost';

mysql> CREATE USER 'ricardo'@'192.168.0.%' IDENTIFIED BY 'Nerv2019.';mysql> CREATE USER 'ricardo'@'%.localdomain' IDENTIFIED BY 'Nerv2019.';mysql> CREATE USER 'ricardo'@'%' IDENTIFIED BY 'Nerv2019.';mysql> DROP USER 'ricardo'@'192.168.0.%';mysql> DROP USER 'ricardo'@'%.localdomain';mysql> DROP USER 'ricardo'@'%';

mysql> CREATE USER 'ricardo'@'192.168.0.102' IDENTIFIED BY 'Nerv2019.';mysql> GRANT SELECT ON world.city TO 'ricardo'@'192.168.0.102';mysql> GRANT SELECT ON nerv.* TO 'ricardo'@'192.168.0.102';mysql> SET PASSWORD FOR 'ricardo'@'192.168.0.102' = 'Nerv2019.';mysql> FLUSH PRIVILEGES;

mysql> SELECT * FROM information_schema.USER_PRIVILEGES;mysql> SELECT * FROM information_schema.SCHEMA_PRIVILEGES;mysql> SELECT * FROM information_schema.TABLE_PRIVILEGES;mysql> SELECT * FROM mysql.user;

Execute uma conexão remota.# mysql -u ricardo -pNerv2019. -h 192.168.0.103mysql> SHOW DATABASES;

Page 98: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

9898

Usuários e PermissõesPrivilégioshttps://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html

Page 99: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

9999

Lab 4.10: Importação e Exportação

Exporte as tabelas do banco employees para texto.mysql> USE employees;mysql> SELECT * FROM departments INTO OUTFILE '/tmp/departments.txt';O que aconteceu?

mysql> SHOW VARIABLES LIKE 'secure_file_priv';mysql> SELECT * FROM departments INTO OUTFILE '/var/lib/mysql-files/departments.txt';mysql> SELECT * FROM dept_emp INTO OUTFILE '/var/lib/mysql-files/dept_emp.txt';mysql> SELECT * FROM dept_manager INTO OUTFILE '/var/lib/mysql-files/dept_manager.txt';mysql> SELECT * FROM employees INTO OUTFILE '/var/lib/mysql-files/employees.txt';mysql> SELECT * FROM salaries INTO OUTFILE '/var/lib/mysql-files/salaries.txt';mysql> SELECT * FROM titles INTO OUTFILE '/var/lib/mysql-files/titles.txt';

Outras opções:FIELDS TERMINATED BY ','ENCLOSED BY '"'LINES TERMINATED BY '\n';

Page 100: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

100100

Lab 4.11: Importação e Exportação

Importe os arquivos texto para as tabelas do banco employees.mysql> CREATE DATABASE employees_dev;mysql> USE employees_dev;mysql> CREATE TABLE departments AS SELECT * FROM employees.departments WHERE 1=0;mysql> CREATE TABLE dept_emp AS SELECT * FROM employees.dept_emp WHERE 1=0;mysql> CREATE TABLE dept_manager AS SELECT * FROM employees.dept_manager WHERE 1=0;mysql> CREATE TABLE employees AS SELECT * FROM employees.employees WHERE 1=0;mysql> CREATE TABLE salaries AS SELECT * FROM employees.salaries WHERE 1=0;mysql> CREATE TABLE titles AS SELECT * FROM employees.titles WHERE 1=0;

mysql> SET foreign_key_checks = 0;mysql> LOAD DATA INFILE '/var/lib/mysql-files/departments.txt' INTO TABLE departments;mysql> LOAD DATA INFILE '/var/lib/mysql-files/dept_emp.txt' INTO TABLE dept_emp;mysql> LOAD DATA INFILE '/var/lib/mysql-files/dept_manager.txt' INTO TABLE dept_manager;mysql> LOAD DATA INFILE '/var/lib/mysql-files/employees.txt' INTO TABLE employees;mysql> LOAD DATA INFILE '/var/lib/mysql-files/salaries.txt' INTO TABLE salaries;mysql> LOAD DATA INFILE '/var/lib/mysql-files/titles.txt' INTO TABLE titles;mysql> SET foreign_key_checks = 1;

Page 101: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

101101

Lab 4.12: Velocidade de Importação e Exportação

Teste a velocidade de exportação e importação com uma tabela maior.mysql> USE nerv;mysql> CREATE TABLE salaries_BIG AS SELECT * FROM employees.salaries;mysql> INSERT INTO salaries_BIG SELECT * FROM salaries_BIG;mysql> INSERT INTO salaries_BIG SELECT * FROM salaries_BIG;mysql> INSERT INTO salaries_BIG SELECT * FROM salaries_BIG;mysql> SELECT COUNT(*) FROM salaries_BIG;mysql> SELECT * FROM salaries_BIG INTO OUTFILE '/var/lib/mysql-files/BIG.txt';mysql> TRUNCATE TABLE salaries_BIG;mysql> LOAD DATA INFILE '/var/lib/mysql-files/BIG.txt' INTO TABLE salaries_BIG;

Page 102: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

102102

Lab 4.13: MySQL Workbench

Instale o MySQL Workbench.# yum -y install mysql-workbench-community# mysql-workbench

Page 103: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

103103

Lab 4.14: MySQL Workbench

Page 104: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

104104

Lab 4.15: MySQL Workbench

Page 105: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

105105

Lab 4.16: MySQL Workbench

Page 106: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

106106

Lab 4.17: MySQL Workbench

Page 107: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

107107

Lab 4.18: MySQL Workbench

Page 108: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

108108

Lab 4.19: MySQL Workbench

Page 109: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

109109

Lab 4.20: MySQL Workbench

Page 110: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

110110

Lab 4.21: MySQL Workbench

Page 111: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

111111

Lab 4.22: MySQL Workbench

Page 112: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

112112

Lab 4.23: MySQL Workbench

Page 113: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

113113

Lab 4.24: MySQL Workbench

Page 114: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

114114

Lab 4.25: MySQL Workbench

Page 115: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

115115

Lab 4.26: MySQL Workbench

Page 116: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

116116

Lab 4.27: MySQL Workbench

Page 117: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

117117

Lab 4.28: MySQL Workbench

Page 118: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

118118

Lab 4.29: MySQL Workbench

Page 119: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

119119

Lab 4.30: MySQL Workbench

Page 120: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

120120

Lab 4.31: MySQL Workbench

Page 121: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

121121

Lab 4.32: MySQL Workbench

Page 122: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

122122

Lab 4.33: MySQL Workbench

Page 123: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

123123

Lab 4.34: MySQL Workbench

Page 124: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

124124

Lab 4.35: MySQL Workbench

Page 125: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

125125

Lab 4.36: MySQL Workbench

Page 126: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

126126

Lab 4.37: MySQL Variables: Conexões

Altere estas Variables pelo arquivo de parâmetros, e reinicie o MySQL.max_connections = 1000 # default = 151max_user_connections = 0thread_cache_size = 200 # default = 8 + (max_connections / 100)back_log = 100 # default = max_connections / 5slow_launch_time = 2 # Slow_launch_threads

max_connect_errors = 10 # FLUSH HOSTS

host_cache_size = -1 # default = 128 + ((max_connections – 500) / 20)skip_name_resolve = OFF

connect_timeout = 10net_read_timeout = 30net_write_timeout = 60net_retry_count = 10 # FLUSH HOSTS

net_buffer_length = 16384max_allowed_packet = 4194304

wait_timeout = 28800 # 28800 segundos = 8 horas.interactive_timeout = 28800lock_wait_timeout = 31536000 # 31536000 segundos = 1 ano.

Se o MySQL não iniciar:# grep ERR /var/log/mysqld.log

Page 127: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

127127

MySQL Logs

Page 128: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

128128

Lab 4.38: MySQL Variables: Logs

Altere estas Variables pelo arquivo de parâmetros, e reinicie o MySQL.log_output = FILElog_error_verbosity = 3log_error = /var/lib/mysql/mysql-error.log

general_log = OFFgeneral_log_file = /var/lib/mysql/mysql-general.log

slow_query_log = ONslow_query_log_file = /var/lib/mysql/mysql-slow.loglong_query_time = 3600min_examined_row_limit = 1000log_slow_admin_statements = ONlog_queries_not_using_indexes = ONlog_throttle_queries_not_using_indexes = 10

Page 129: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

129129

Lab 4.39: Event Scheduler

Habilite o Event Schedulermysql> SELECT @@GLOBAL.event_scheduler;mysql> SHOW PROCESSLIST;mysql> SET GLOBAL event_scheduler = ON;mysql> SELECT @@GLOBAL.event_scheduler;mysql> SHOW PROCESSLIST;mysql> SELECT @@GLOBAL.event_scheduler;

mysql> USE nerv;mysql> SHOW EVENTS;

mysql> CREATE TABLE IF NOT EXISTS messages ( id INT PRIMARY KEY AUTO_INCREMENT, message VARCHAR(255) NOT NULL, created_at DATETIME NOT NULL);

Page 130: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

130130

Lab 4.40: Event Scheduler

Habilite o Event Schedulermysql> SHOW EVENTS;

mysql> CREATE EVENT IF NOT EXISTS test_event_01ON SCHEDULE AT CURRENT_TIMESTAMPDOINSERT INTO messages(message,created_at) VALUES ('Test MySQL Event 1',NOW());mysql> SELECT * FROM messages;

mysql> CREATE EVENT test_event_02ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 MINUTEON COMPLETION PRESERVEDOINSERT INTO messages(message,created_at) VALUES ('Test MySQL Event 2',NOW());mysql> SELECT * FROM messages;

mysql> CREATE EVENT test_event_03ON SCHEDULE EVERY 1 MINUTESTARTS CURRENT_TIMESTAMPENDS CURRENT_TIMESTAMP + INTERVAL 1 HOURDOINSERT INTO messages(message,created_at) VALUES ('Test MySQL Event 3',NOW());mysql> SELECT * FROM messages;

mysql> SHOW EVENTS;mysql> DROP EVENT test_event_02;mysql> DROP EVENT test_event_03;mysql> SHOW EVENTS;

Page 131: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

131

Backup & Recovery

131

Page 132: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

132132

Engines● MyISAM● InnoDB● Memory (MyISAM-like)● Archive (MyISAM-like)● CSV● Merge (MyISAM-like)● Federated● NDB (MyISAM-like)● Blackhole● Example● Aria● Percona XtraDB (InnoDB-like)● Percona XtraDB Cluster (InnoDB-like)● Percona TokuDB

Page 133: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

133133

Lab 5.1: Backup & RecoveryNo Oracle VM VirtualBox, crie uma nova VM, com o nome “Restore”, importanto novamente o arquivo /root/Linux.ova.Verifique o IP da VM, e a acesse via ssh.# ip addr

Pelo nmtui, altere o hostname da VM para Recover.localdomain.

Instale o Repositório do MySQL, edite o arquivo /etc/yum.repos.d/mysql-community.repo, habilite o reposítório do MySQL 5.7, desabilite do 8.0, e instale o MySQL 5.7.# yum -y install wget# wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm# yum -y install mysql80-community-release-el7-3.noarch.rpm# yum -y install mysql-server# systemctl enable mysqld# systemctl start mysqld# grep password /var/log/mysqld.log# /usr/bin/mysqladmin -u root -p password 'Nerv2019.'# firewall-cmd --zone=public --add-port=3306/tcp --permanent# firewall-cmd --reload# firewall-cmd --zone=public --permanent --list-ports

Page 134: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

134134

Lab 5.2: Cold Backup

Execute um Cold Backup.# systemctl stop mysqld# mkdir /root/ColdBackup# cp -rfvp /var/lib/mysql/ /root/ColdBackup/# systemctl start mysqld

Na máquina de Restore, pare o MySQL.# systemctl stop mysqld# rm -rf /var/lib/mysql/*

Na máquina original, copie o Backup para a VM de Restore.# scp -Cr /root/ColdBackup/mysql/* [email protected]:/var/lib/mysql/

Na VM de Restore, inicie o MySQL.# chown -R mysql:mysql /var/lib/mysql# systemctl start mysqld# mysql -u root -pNerv2019.mysql> SHOW DATABASES;mysql> SELECT COUNT(*) FROM employees.salaries;

Page 135: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

135135

Lab 5.3: Not-so-cold Backup MyISAM

Duplique as tabelas do banco employees no banco nerv.mysql> USE nerv;mysql> CREATE TABLE departments AS SELECT * FROM employees.departments;mysql> CREATE TABLE dept_emp AS SELECT * FROM employees.dept_emp;mysql> CREATE TABLE dept_manager AS SELECT * FROM employees.dept_manager;mysql> CREATE TABLE employees AS SELECT * FROM employees.employees;mysql> CREATE TABLE salaries AS SELECT * FROM employees.salaries;mysql> CREATE TABLE titles AS SELECT * FROM employees.titles;

Altere as tabelas para o Engine MyISAM.mysql> ALTER TABLE departments ENGINE=MyISAM;mysql> ALTER TABLE dept_emp ENGINE=MyISAM;mysql> ALTER TABLE dept_manager ENGINE=MyISAM;mysql> ALTER TABLE employees ENGINE=MyISAM;mysql> ALTER TABLE salaries ENGINE=MyISAM;mysql> ALTER TABLE titles ENGINE=MyISAM;

Page 136: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

136136

Lab 5.4: Not-so-cold Backup MyISAM

Coloque as tabelas MyISAM em LOCK.mysql> SHOW OPEN TABLES FROM nerv;mysql> FLUSH TABLE departments, dept_emp, dept_manager, employees, salaries,titles WITH READ LOCK;mysql> SHOW OPEN TABLES FROM nerv;

Em outra sessão, confira o Lock.mysql> USE nerv;mysql> SELECT * FROM departments;mysql> DELETE FROM departments;^C

Em outra sessão, execute a cópia pelo sistema operacional.# mkdir /root/WarmBackup# cp -rfpv /var/lib/mysql/nerv /root/WarmBackup

Na sessão original, desbloquei as tabelas.mysql> SHOW OPEN TABLES FROM nerv;mysql> UNLOCK TABLES;mysql> SHOW OPEN TABLES FROM nerv;

Na máquina original, copie o Backup para a máquina de Restore.# scp -Cr /root/WarmBackup/nerv/* [email protected]:/var/lib/mysql/nerv/

Na máquina de Restore, corrija as permissões e confira o banco restaurado.# chown -R mysql:mysql /var/lib/mysql/nervmysql> SELECT COUNT(*) FROM nerv.salaries;

Page 137: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

137137

Lab 5.5: mysqldump

Execute um backup via mysqldump.# mkdir /root/Dump# mysqldump nerv > /root/Dump/nerv.sqlO que aconteceu?# mysqldump --all_databases > /root/Dump/nerv01.sql

Edite o arquivo gerado.O que ele contém?Quais suas desvantagens?

–-single-transaction--lock-all-tables

--events--routines

--compress--quick--no-autocommit

Execute novamente o Dump.# mysqldump --single-transaction --events --routines --compress --quick --no-autocommit nerv > /root/Dump/nerv.sql# mysqldump --single-transaction --events --routines --compress --quick --no-autocommit --all-databases > /root/Dump/nerv01.sql

Page 138: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

138138

Lab 5.6: mysqldump

Copie os Dumps para a VM de Restore.# scp /root/Dump/nerv.sql [email protected]:/root/# scp /root/Dump/nerv01.sql [email protected]:/root/

Na VM de Restore, restaure os Dumps e confira o Restore.# mysql -u root -pNerv2019. nerv < /root/nerv.sqlmysql> SELECT COUNT(*) FROM nerv.salaries;# mysql -u root -pNerv2019. < /root/nerv01.sqlmysql> SELECT COUNT(*) FROM nerv.salaries;

O que acontece se o banco de dados não existir na VM de Restore, no 1o Dump? E no 2o?O que acontece se uma tabela existir na VM de Restore, mas não existir no 1o Dump? E no 2o?--add-drop-database

Page 139: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

139139

Lab 5.7: mydumper / myloader

Copie os Dumps para a VM de Restore.# wget https://github.com/maxbube/mydumper/releases/download/v0.9.5/mydumper-0.9.5-2.el7.x86_64.rpm# yum -y install mydumper-0.9.5-2.el7.x86_64.rpm# top -H# mydumper --routines --triggers --events --compress –threads=8# mydumper --routines --triggers --events --compress --threads=8 --database=nerv# ls -lh export*

Copie os Dumps para a VM de Restore.# scp -Cr export-* [email protected]:/root/

Na VM de Restore, restaure os Dumps (o completo e o de um só banco) e confira o Restore.# wget https://github.com/maxbube/mydumper/releases/download/v0.9.5/mydumper-0.9.5-2.el7.x86_64.rpm# yum -y install mydumper-0.9.5-2.el7.x86_64.rpm# myloader --user=root -–password=Nerv2019. --directory=/root/export-20191203-203701/ --overwrite-tables --threads=8# myloader --user=root -–password=Nerv2019. --directory=/root/eexport-20191203-203826/ --overwrite-tables –-threads=8

Page 140: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

140140

Lab 5.8: Bin Logs

Adicione no /etc/my.cnf as linhas abaixo, e reinicie 3 vezes o mysql.server_id = 1sync_binlog = 1log-bin = mysql-binexpire_logs_days = 32Que novos arquivos passaram a existir no diretório de dados?

Execute um Dump com a opção --master-data.# mysqldump --single-transaction --events --routines --compress --quick --no-autocommit –-master-data=2 --all-databases > /root/Dump/nerv01-BinLog.sqlQue nova informação existe no arquivo de Dump?

Execute alterações no banco de dados.mysql> SHOW BINARY LOGS;mysql> USE nerv;mysql> CREATE TABLE salaries_test AS SELECT * FROM salaries;mysql> TRUNCATE TABLE salaries;mysql> INSERT INTO salaries_test SELECT * FROM salaries_test;mysql> SHOW BINARY LOGS;mysql> FLUSH LOGS;mysql> SHOW BINARY LOGS;

Copie o Dump e os Bin Logs para a VM de Restore.# scp /root/Dump/nerv01-BinLog.sql [email protected]:/root/# scp /var/lib/mysql/mysql-bin.0* [email protected]:/root/

Page 141: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

141141

Lab 5.9: Bin LogsNa VM de Restore, restaure o Dump, e os Bin Logs.# mysql -u root -pNerv2019. < /root/nerv01-BinLog.sql# head -100 /root/nerv01-BinLog.sql | grep MASTER_LOG_POS# mysqlbinlog --start-position=154 mysql-bin.000003 > Recover.sql# mysqlbinlog mysql-bin.000004 >> Recover.sql# mysqlbinlog mysql-bin.000005 >> Recover.sql# grep salaries Recover.sql# mysql -u root -pNerv2019. < Recover.sql

mysql> SELECT COUNT(*) FROM nerv.salaries;mysql> SELECT COUNT(*) FROM nerv.salaries_test;

Page 142: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

142142

XtraBackup

Page 143: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

143143

XtraBackup / MyQL Enterprise Backup / Mariabackup

Percona Percona XtraBackup 1.4Released on November 22, 2010https://www.percona.com/doc/percona-xtrabackup/2.4/release-notes/1.4.html

Changes in MySQL Enterprise Backup 3.12.0 (2015-03-16)https://dev.mysql.com/doc/relnotes/mysql-enterprise-backup/3.12/en/

Mariabackup was first released in MariaDB 10.1.23 and MariaDB 10.2.7.It was first released as GA in MariaDB 10.1.26 and MariaDB 10.2.10.https://mariadb.com/kb/en/library/mariabackup-overview/

MariaDB 10.1.23 Release NotesRelease date: 3 May 2017https://mariadb.com/kb/en/library/mariadb-10123-release-notes/

Page 144: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

144144

XtraBackup

https://www.percona.com/doc/percona-xtrabackup/8.0/intro.html

Page 145: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

145145

XtraBackup

https://www.percona.com/doc/percona-xtrabackup/8.0/intro.html

Page 146: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

146146

XtraBackup

https://www.percona.com/doc/percona-xtrabackup/8.0/intro.html

Page 147: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

147147

Lab 5.10: xtrabackup

Instale o xtrabackup.# wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm# yum -y install epel-release-latest-7.noarch.rpm# wget https://www.percona.com/redir/downloads/percona-release/redhat/1.0-13/percona-release-1.0-13.noarch.rpm# yum -y install percona-release-1.0-13.noarch.rpm# yum -y install percona-xtrabackup-24.x86_64

Execute um backup.# mkdir -p /root/XtraBackup/# export HORADOBACKUP=`date +%Y%m%d-%H%M%S`# xtrabackup --backup --parallel=4 --target-dir=/root/XtraBackup-$HORADOBACKUP/# xtrabackup --prepare --target-dir=/root/XtraBackup-$HORADOBACKUP/# ls -lh /root/XtraBackup-$HORADOBACKUP/# cat /root/XtraBackup-$HORADOBACKUP/xtrabackup_binlog_info

Restaure o backup.# systemctl stop mysqld# rm -rf /var/lib/mysql/*# xtrabackup --copy-back --target-dir=/root/XtraBackup-$HORADOBACKUP/# chown -R mysql:mysql /var/lib/mysql# systemctl start mysqld

Page 148: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

148148

Lab 5.11: xtrabackup

Na VM de Restore, pare o MySQL.# systemctl stop mysqld# rm -rf /var/lib/mysql/*

Copie o Backup para a VM de Restore.# scp -Cr /root/XtraBackup-$HORADOBACKUP/* [email protected]:/var/lib/mysql/

Na VM de Restore, inicie o MySQL e confira o Restore.# chown -R mysql:mysql /var/lib/mysql# systemctl start mysqldmysql> SELECT COUNT(*) FROM nerv.salaries;mysql> SELECT COUNT(*) FROM nerv.salaries_test;

Page 149: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

149149

Lab 5.12: xtrabackup

Crie os diretórios para os backups incrementais.# mkdir /root/XtraBackup/base# mkdir /root/XtraBackup/incremental1# mkdir /root/XtraBackup/incremental2# mkdir /root/XtraBackup/incremental3

Execute um backup base, e os incrementais.# xtrabackup --backup --target-dir=/root/XtraBackup/base/mysql> CREATE TABLE nerv.AposBackupBase (c1 INT);

# xtrabackup --backup --target-dir=/root/XtraBackup/incremental1/ --incremental-basedir=/root/XtraBackup/base/mysql> CREATE TABLE nerv.AposBackupIncremental1 (c1 INT);

# xtrabackup --backup --target-dir=/root/XtraBackup/incremental2/ --incremental-basedir=/root/XtraBackup/incremental1/mysql> CREATE TABLE nerv.AposBackupIncremental2 (c1 INT);

# xtrabackup --backup --target-dir=/root/XtraBackup/incremental3/ --incremental-basedir=/root/XtraBackup/incremental2/mysql> CREATE TABLE nerv.AposBackupIncremental3 (c1 INT);

Verifique o tamanho dos backups.# du -sh /root/XtraBackup/base/# du -sh /root/XtraBackup/incremental*# ls -lh /root/XtraBackup/base/nerv/# ls -lh /root/XtraBackup/incremental1/nerv/

Page 150: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

150150

Lab 5.13: xtrabackup

Atualize o backup base com os backups incrementais.# xtrabackup --prepare --apply-log-only --target-dir=/root/XtraBackup/base/# xtrabackup --prepare --apply-log-only --target-dir=/root/XtraBackup/base/ --incremental-dir=/root/XtraBackup/incremental1/# xtrabackup --prepare --apply-log-only --target-dir=/root/XtraBackup/base/ --incremental-dir=/root/XtraBackup/incremental2/# xtrabackup --prepare --apply-log-only --target-dir=/root/XtraBackup/base/ --incremental-dir=/root/XtraBackup/incremental3/

Restaure e confira o Restore.# systemctl stop mysqld# rm -rf /var/lib/mysql/*# xtrabackup --copy-back --target-dir=/root/XtraBackup/base/# chown -R mysql:mysql /var/lib/mysql/# systemctl start mysqldmysql> USE nerv;mysql> SHOW TABLES;

Page 151: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

151151

Lab 5.14: xtrabackup / innobackupex

Crie um diretório e execute um backup comprimido.# mkdir -p /root/XtraBackup/compress/# innobackupex --no-timestamp --datadir=/var/lib/mysql/ --user=root --password=Nerv2019. --parallel=4 --compress --compress-threads=4 /root/XtraBackup/compress/# ls -lh /root/XtraBackup/compress/nerv/

Prepare o backup para restauração.# yum -y install qpress# innobackupex --decompress --parallel=4 /root/XtraBackup/compress/# ls -lh /root/XtraBackup/compress/nerv/# rm -rf /root/XtraBackup/compress/*.qp /root/XtraBackup/compress/*/*.qp# innobackupex --apply-log --parallel=4 --use-memory=1G /root/XtraBackup/compress/

Restaure e confira o Restore.# systemctl stop mysqld# rm -rf /var/lib/mysql/*# xtrabackup --copy-back --target-dir=/root/XtraBackup/compress/# chown -R mysql:mysql /var/lib/mysql/# systemctl start mysqldmysql> USE nerv;mysql> SHOW TABLES;

Page 152: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

152152

Lab 5.15: xtrabackup / innobackupexCrie os diretórios, e execute backups comprimidos e incrementais.# mkdir -p /root/XtraBackup/compress/base# mkdir -p /root/XtraBackup/compress/incremental1# mkdir -p /root/XtraBackup/compress/incremental2# mkdir -p /root/XtraBackup/compress/incremental3

# innobackupex --no-timestamp --datadir=/var/lib/mysql/ --parallel=4 --compress --compress-threads=4 /root/XtraBackup/compress/basemysql> CREATE TABLE nerv.AposBackupCompressedBase (c1 INT);

# innobackupex --no-timestamp --parallel=4 --compress --compress-threads=4 --incremental /root/XtraBackup/compress/incremental1/ --incremental-basedir=/root/XtraBackup/compress/base/mysql> CREATE TABLE nerv.AposBackupCompressedIncremental1 (c1 INT);

# innobackupex --no-timestamp --parallel=4 --compress --compress-threads=4 --incremental /root/XtraBackup/compress/incremental2/ --incremental-basedir=/root/XtraBackup/compress/incremental1/mysql> CREATE TABLE nerv.AposBackupCompressedIncremental2 (c1 INT);

# innobackupex --no-timestamp --parallel=4 --compress --compress-threads=4 --incremental /root/XtraBackup/compress/incremental3/ --incremental-basedir=/root/XtraBackup/compress/incremental2/mysql> CREATE TABLE nerv.AposBackupCompressedIncremental3 (c1 INT);

Page 153: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

153153

Lab 5.16: xtrabackup / innobackupexAtualize o backup base com os backups incrementais.# innobackupex --decompress --parallel=4 /root/XtraBackup/compress/base/# innobackupex --apply-log --redo-only --use-memory=1G /root/XtraBackup/compress/base/

# innobackupex --decompress --parallel=4 /root/XtraBackup/compress/incremental1/# innobackupex --apply-log --redo-only --use-memory=1G /root/XtraBackup/compress/base/ --incremental-dir=/root/XtraBackup/compress/incremental1/

# innobackupex --decompress --parallel=4 /root/XtraBackup/compress/incremental2/# innobackupex --apply-log --redo-only --use-memory=1G /root/XtraBackup/compress/base/ --incremental-dir=/root/XtraBackup/compress/incremental2/

# innobackupex --decompress --parallel=4 /root/XtraBackup/compress/incremental3/# innobackupex --apply-log --redo-only --use-memory=1G /root/XtraBackup/compress/base/ --incremental-dir=/root/XtraBackup/compress/incremental3/

# rm -rf /root/XtraBackup/compress/base/*.qp

Restaure e confira o Restore.# systemctl stop mysqld# rm -rf /var/lib/mysql/*# xtrabackup --copy-back --target-dir=/root/XtraBackup/compress/base/# chown -R mysql:mysql /var/lib/mysql# systemctl start mysqldmysql> USE nerv;mysql> SHOW TABLES;

Page 154: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

154

Tuning

154

Page 155: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

155155

Lab 6.1: datadir

Altere a localização do diretório de dados do MySQL.# systemctl stop mysqld# mkdir /mysql# cp -R -p -v /var/lib/mysql/* /mysql/

# chown -R mysql:mysql /mysql# yum -y install policycoreutils-python# semanage fcontext -a -t mysqld_db_t "/mysql(/.*)?"# restorecon -Rv /mysql# cat /etc/selinux/targeted/contexts/files/file_contexts.local# chcon -R -u system_u -r object_r -t mysqld_db_t /mysql

# vi /etc/my.cnf...datadir=/mysql...

# systemctl start mysqld

Page 156: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

156156

Lab 6.2: InnoDB System Tablespace

Altere a localização da System Tablespace do InnoDB do MySQL.# systemctl stop mysqld# mkdir /InnoDB01# mv /mysql/ibdata1 /InnoDB01/

# chown -R mysql:mysql /InnoDB01# semanage fcontext -a -t mysqld_db_t "/InnoDB01(/.*)?"# restorecon -Rv /InnoDB01# cat /etc/selinux/targeted/contexts/files/file_contexts.local# chcon -R -u system_u -r object_r -t mysqld_db_t /InnoDB01

# vi /etc/my.cnf...innodb_file_per_table=OFFinnodb_data_home_dir=innodb_data_file_path=/InnoDB01/ibdata1:10M:autoextend:max:10G...

# systemctl start mysqld

Page 157: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

157157

Lab 6.3: Bin Logs

Altere a localização dos Bin Logs do MySQL.# systemctl stop mysqld# mkdir /BinLogs# mv /mysql/mysql-bin* /BinLogs/

# chown -R mysql:mysql /BinLogs# semanage fcontext -a -t mysqld_db_t "/BinLogs(/.*)?"# restorecon -Rv /BinLogs# cat /etc/selinux/targeted/contexts/files/file_contexts.local# chcon -R -u system_u -r object_r -t mysqld_db_t /BinLogs

# vi /etc/my.cnf...log-bin=/BinLogs/mysql-bin...

# systemctl start mysqld# systemctl restart mysqld# systemctl restart mysqld# ls -lh /BinLogs/

Page 158: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

158158

Lab 6.4: InnoDB Logs

Altere a localização dos Logs do InnoDB.# systemctl stop mysqld# mkdir /InnoDBLogs# mv /mysql/ib_logfile* /InnoDBLogs/

# chown -R mysql:mysql /InnoDBLogs# semanage fcontext -a -t mysqld_db_t "/InnoDBLogs(/.*)?"# restorecon -Rv /InnoDBLogs# cat /etc/selinux/targeted/contexts/files/file_contexts.local# chcon -R -u system_u -r object_r -t mysqld_db_t /InnoDBLogs

# vi /etc/my.cnf...innodb_log_group_home_dir=/InnoDBLogs/...

# systemctl start mysqld# ls -lh /InnoDBLogs/

Page 159: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

159159

Lab 6.5: Tablespaces InnoDB

Crie uma TABLESPACE, e mova tabelas para ela.# mkdir /BigTablespace

# chown -R mysql:mysql /BigTablespace# semanage fcontext -a -t mysqld_db_t "/BigTablespace(/.*)?"# restorecon -Rv /BigTablespace# cat /etc/selinux/targeted/contexts/files/file_contexts.local# chcon -R -u system_u -r object_r -t mysqld_db_t /BigTablespace

mysql> CREATE TABLESPACE BigTS ADD DATAFILE '/BigTablespace/BigTS.ibd' Engine=InnoDB;# ls -lh /mysql/nerv/salaries*# ls -lh /BigTablespace/BigTS.ibd

mysql> ALTER TABLE nerv.salaries_BIG TABLESPACE BigTS;mysql> ALTER TABLE nerv.salaries_test TABLESPACE BigTS;# ls -lh /mysql/nerv/salaries*# ls -lh /BigTablespace/BigTS.ibd

Page 160: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

160160

Engines: InnoDB

Page 161: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

161161

Engines: MyISAM

Page 162: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

162162

Engines: Memory

Page 163: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

163163

Engines: Archive

Page 164: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

164164

Lab 6.6: myisampack Crie uma tabela graande, e teste sua velocidade de leitura antes e depois da compactação.mysql> CREATE TABLE nerv.salaries_BIG_RO AS SELECT * FROM nerv.salaries_BIG;mysql> ALTER TABLE nerv.salaries_BIG_RO Engine=MyISAM;mysql> INSERT INTO nerv.salaries_BIG_RO SELECT * FROM nerv.salaries_BIG_RO;mysql> INSERT INTO nerv.salaries_BIG_RO SELECT * FROM nerv.salaries_BIG_RO;mysql> INSERT INTO nerv.salaries_BIG_RO SELECT * FROM nerv.salaries_BIG_RO;mysql> CREATE INDEX IX_salaries_BIG_RO_emp_no ON nerv.salaries_BIG_RO(emp_no);

mysql> SELECT COUNT(salary) FROM nerv.salaries_BIG_RO;mysql> SELECT SUM(salary) FROM nerv.salaries_BIG_RO;mysql> SELECT SUM(salary) FROM nerv.salaries_BIG_RO;mysql> SELECT SUM(salary) FROM nerv.salaries_BIG_RO;

# myisamchk -dvv /mysql/nerv/salaries_BIG_RO# ls -lh /mysql/nerv/salaries_BIG_RO*# myisampack -v /mysql/nerv/salaries_BIG_RO# ls -lh /mysql/nerv/salaries_BIG_RO*# myisamchk -rq /mysql/nerv/salaries_BIG_RO# ls -lh /mysql/nerv/salaries_BIG_RO*# myisamchk -dvv /mysql/nerv/salaries_BIG_ROmysql> SELECT COUNT(salary) FROM nerv.salaries_BIG_RO;mysql> SELECT SUM(salary) FROM nerv.salaries_BIG_RO;O que aconteceu?mysql> FLUSH TABLES;

# myisamchk --unpack /mysql/nerv/salaries_BIG_RO# ls -lh /mysql/nerv/salaries_BIG_RO*

Page 165: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

165165

Lab 6.7: Benchmark - mysqlslap

Execute um teste de carga no MySQL.# yum -y install mysql-community-test# mysqlslap --user=root –-password=Nerv2019. --auto-generate-sql --concurrency=10 --iterations=10 --number-char-cols=10 --number-int-cols=5 --engine=innodb

Durante a execução do teste, acompanhe no Linux, via top.# top -H

Durante a execução do teste, acompanhe no MySQL, via PROCESSLIST.mysql> SHOW PROCESSLIST;

Execute novamente o teste, mas com os Engines MyISAM e Memory.Qual o Engine mais rápido?Qual o Engine mais escalável?

Page 166: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

166166

Lab 6.8: Benchmark - sysbench

Instale o sysbench.# yum -y install sysbench

Durante a execução do teste, acompanhe no MySQL, via mysqladmin.mysql> create database sbtest;mysql> create user 'sbtest'@'localhost' identified by 'Nerv2019.';mysql> grant all privileges on sbtest.* to 'sbtest'@'localhost';

# sysbench --db-driver=mysql /usr/share/sysbench/oltp_read_only.lua --threads=4 --mysql-host=localhost --mysql-user=sbtest --mysql-password=Nerv2019. --mysql-port=3306 --tables=10 --table-size=1000000 prepare

# sysbench --db-driver=mysql /usr/share/sysbench/oltp_read_only.lua --threads=16 --events=0 --time=300 --mysql-host=localhost --mysql-user=sbtest --mysql-password=Nerv2019. --mysql-port=3306 --tables=10 --table-size=1000000 --report-interval=1 run

Durante a execução do teste, acompanhe no MySQL, via PROCESSLIST.

Page 167: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

167167

Lab 6.9: Benchmark - sysbench

Durante a execução do teste, acompanhe no MySQL, via mysqladmin.mysql> drop database sbtest;mysql> create database sbtest;mysql> grant all privileges on sbtest.* to 'sbtest'@'localhost';

# sysbench --db-driver=mysql /usr/share/sysbench/tpcc.lua --tables=10 --scale=1 --threads=4 --mysql-host=localhost --mysql-user=sbtest --mysql-password=Nerv2019. --mysql-port=3306 prepare

# sysbench --db-driver=mysql /usr/share/sysbench/tpcc.lua --tables=10 --scale=1 --threads=16 --mysql-host=localhost --mysql-user=sbtest --mysql-password=Nerv2019. --mysql-port=3306 run

Durante a execução do teste, acompanhe no MySQL, via PROCESSLIST.

Page 168: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

168168

Lab 6.10: mytop

Instale o mytop.# yum -y install mytop# mytop -d mysql

Execute novamente os testes de carga, e acompanhe pelo mytop.

Page 169: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

169169

Lab 6.11: innotop

Instale o innotop.# yum -y install innotop# innotop

Execute novamente os testes de carga com InnoDB, e acompanhe pelo innotop.

Page 170: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

170170

Lab 6.12: SHOW ENGINE INNODB

Execute novamente os teste de carga com InnoDB, e acompanhe pelo comando abaixo.# mysql -E -e "SHOW ENGINE INNODB STATUS"

Page 171: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

171171

Engines: CSV

Page 172: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

172172

Engines: Merge

Page 173: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

173173

Engines: Federated

Page 174: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

174174

Engines: Federated - Connection

Page 175: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

175175

Engines: Federated - Server

Page 176: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

176176

Engines: Blackhole

Page 177: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

177177

Engines: Example

Page 178: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

178178

Lab 6.13: Parâmetros de TuningAltere os parâmetros abaixo de forma a otimizar os Labs 4.12, 5.6, 6.6, 6.7 e 6.9.### Huge Pageslarge_pages = OFF

### Asyncronous Writeflush = OFFflush_time = 0

### Temporary Tablesmax_heap_table_size = 16777216default_tmp_storage_engine = MyISAMtmp_table_size = 8M # (Created_tmp_tables – Created_tmp_disk_tables) > 0tmpdir = /tmp/

### Query Cachequery_cache_type = ON # (BI / OLAP / DSS)query_cache_size = 16M # (Qcache_hits)query_cache_limit = 1M # (Qcache_inserts)query_cache_min_res_unit = 4096 # (Qcache_inserts)

https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.htmlhttps://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html

Page 179: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

179179

Lab 6.14: Parâmetros de TuningAltere os parâmetros abaixo de forma a otimizar os Labs 4.12, 5.6, 6.6, 6.7 e 6.9.### Metadataopen_files_limit = 10000table_open_cache = 400 # (Opened_tables)table_open_cache_instances = 1 # Thread State Opening tablestable_definition_cache = 600 # (400 + (table_open_cache / 2))metadata_locks_cache_size = 1024 # (Waiting for table metadata lock)metadata_locks_hash_instances = 8 # (Waiting for table metadata lock)max_prepared_stmt_count = 16382 # (Com_prepare_sql Prepared_stmt_count)query_prealloc_size = 8192query_alloc_block_size = 8192stored_program_cache = 256transaction_alloc_block_size = 8192transaction_prealloc_size = 4096

### Individual Buffersread_buffer_size = 2M # Thread State Sending dataread_rnd_buffer_size = 2Msort_buffer_size = 2M # (Sort_merge_passes)max_length_for_sort_data = 8388608 join_buffer_size = 2M # (index scans, range index scans, joins FTS)max_join_size = 4Grange_alloc_block_size = 4096

Page 180: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

180180

Lab 6.15: Parâmetros de TuningAltere os parâmetros abaixo de forma a otimizar os Labs 4.12, 5.6, 6.6, 6.7 e 6.9.### MyISAMkey_cache_block_size = 4096key_buffer_size = 128M # 25% RAMkey_cache_age_threshold = 300key_cache_division_limit = 100 # (Hot)bulk_insert_buffer_size = 8388608concurrent_insert = ALWAYSdelay_key_write = ALLlow_priority_updates = OFF # (INSERT, UPDATE, DELETE, LOCK TABLE WRITE)myisam_sort_buffer_size = 8388608 # (REPAIR TABLE, CREATE INDEX, ALTER TABLE)myisam_max_sort_file_size = 2147483648 # (REPAIR TABLE,ALTER TABLE, LOAD DATA INFILE)

Exemplo:prod.key_buffer_size = 128Mdev.key_buffer_size = 16Mmysql> CACHE INDEX t1, t2, t3 IN prod;

Page 181: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

181181

Lab 6.16: Parâmetros de TuningAltere os parâmetros abaixo de forma a otimizar os Labs 4.12, 5.6, 6.6, 6.7 e 6.9.### InnoDB Filesinnodb_checksums = ON # < 5.7innodb_checksum_algorithm = crc32innodb_doublewrite = OFFinnodb_autoextend_increment = 64innodb_file_per_table = 1innodb_file_format = Barracudainnodb_compression_level = 6innodb_compression_failure_threshold_pct = 0innodb_compression_pad_pct_max = 50

### InnoDB Threadsinnodb_numa_interleave = OFFinnodb_read_io_threads = 4 # (Pending reads) show engine innodb status;innodb_write_io_threads = 4 # (Pending writes)innodb_thread_concurrency = 0 # (cs)innodb_concurrency_tickets = 5000innodb_thread_sleep_delay = 10000innodb_adaptive_max_sleep_delay = 150000

### Lockinnodb_lock_wait_timeout = 50innodb_rollback_on_timeout = OFF

Page 182: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

182182

Lab 6.17: Parâmetros de TuningAltere os parâmetros abaixo de forma a otimizar os Labs 4.12, 5.6, 6.6, 6.7 e 6.9.### InnoDB Bufferinnodb_page_size = 16384innodb_buffer_pool_size = 2Ginnodb_buffer_pool_instances = 1 # 1 para cada 10GB de innodb_buffer_pool_sizeinnodb_change_buffering = ALLinnodb_change_buffer_max_size = 25

innodb_buffer_pool_dump_at_shutdown = ONinnodb_buffer_pool_load_at_startup = ONinnodb_buffer_pool_dump_now = OFFinnodb_buffer_pool_load_now = OFFinnodb_buffer_pool_load_abort = OFFinnodb_buffer_pool_filename = InnoDB.dumpinnodb_buffer_pool_dump_pct = 100

innodb_random_read_ahead = ON # (OFF em SSD)innodb_read_ahead_threshold = 32

### InnoDB Undoinnodb_purge_threads = 1 ### show engine innodb status; (History list length)innodb_purge_batch_size = 300innodb_max_purge_lag = 0 # (History list length)innodb_max_purge_lag_delay = 0 # (History list length)

Page 183: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

183183

Lab 6.18: Parâmetros de TuningAltere os parâmetros abaixo de forma a otimizar os Labs 4.12, 5.6, 6.6, 6.7 e 6.9.### InnoDB Flushinnodb_use_native_aio = ON # Linuxinnodb_flush_method = O_DIRECTinnodb_flush_neighbors = 1 # (0 em SSD)innodb_adaptive_flushing = ONinnodb_flushing_avg_loops = 30innodb_adaptive_flushing_lwm = 10innodb_lru_scan_depth = 1024innodb_max_dirty_pages_pct_lwm = 10innodb_max_dirty_pages_pct = 75innodb_old_blocks_pct = 37innodb_old_blocks_time = 1000innodb_io_capacity = 200innodb_io_capacity_max = 2000

### InnoDB Loginnodb_log_file_size = 32Minnodb_log_files_in_group = 7innodb_log_buffer_size = 64Minnodb_log_compressed_pages = ONinnodb_flush_log_at_trx_commit = 1innodb_flush_log_at_timeout = 1 # (1 a 2700)innodb_fast_shutdown = 1

Page 184: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

184184

Lab 6.19: Parâmetros de TuningAltere os parâmetros abaixo de forma a otimizar os Labs 4.12, 5.6, 6.6, 6.7 e 6.9.### InnoDB Statisticsinnodb_stats_auto_recalc = ONinnodb_stats_transient_sample_pages = 8 # (STATS_SAMPLE_PAGES)innodb_stats_persistent = ONinnodb_stats_persistent_sample_pages = 20 # (STATS_SAMPLE_PAGES)

### InnoDB Optimizerinnodb_adaptive_hash_index = ONinnodb_sort_buffer_size = 67108864 # (CREATE INDEX)innodb_disable_sort_file_cache = OFF

Page 185: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

185185

Parâmetros de Tuning - Optimizer

Page 186: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

186186

Lab 6.20: Parâmetros de Tuning

Altere os parâmetros abaixo de forma a otimizar os Labs 4.12, 5.6, 6.6, 6.7 e 6.9.### Optimizeroptimizer_prune_level = 1optimizer_search_depth = 62eq_range_index_dive_limit = 10max_seeks_for_key = 1000

optimizer_switch=index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on,index_condition_pushdown=on,mrr=on,mrr_cost_based=on,block_nested_loop=on,batched_key_access=off,materialization=on,semijoin=on,loosescan=on,firstmatch=on,subquery_materialization_cost_based=on,use_index_extensions=on

Page 187: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

187187

Lab 6.21: Transações e Isolamento

Altere todos os parâmetros abaixo no arquivo de parâmetros, e reinicie o MySQL.mysql> use nerv;mysql> CREATE TABLE teste1 (c1 int, c2 char(50), c3 varchar(255)) Engine=InnoDB;mysql> CREATE TABLE teste2 (c1 int, c2 char(50), c3 varchar(255)) Engine=MyISAM;

mysql> insert into teste1 values (1, 'AAA', 'AAAAAAAAAA');mysql> insert into teste1 values (2, 'AAA', 'AAAAAAAAAA');mysql> insert into teste1 values (3, 'AAA', 'AAAAAAAAAA');mysql> insert into teste1 values (4, 'AAA', 'AAAAAAAAAA');mysql> insert into teste1 values (5, 'AAA', 'AAAAAAAAAA');mysql> insert into teste1 values (6, 'AAA', 'AAAAAAAAAA');mysql> insert into teste1 values (7, 'AAA', 'AAAAAAAAAA');mysql> insert into teste1 values (8, 'AAA', 'AAAAAAAAAA');mysql> insert into teste1 values (9, 'AAA', 'AAAAAAAAAA');mysql> insert into teste1 values (10, 'AAA', 'AAAAAAAAAA');mysql> insert into teste2 select * from teste1;

Page 188: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

188188

Lab 6.22: Transações e Isolamento1a Sessão:mysql> update teste1 set c2 = 'BBB';mysql> select * from teste1;

mysql> start transaction;mysql> update teste1 set c2 = 'CCC';mysql> select * from teste1;

mysql> commit;mysql> select * from teste1;

mysql> start transaction;mysql> update teste1 set c2 = 'DDD';

mysql> commit;mysql> select * from teste1;

2a Sessão:

mysql> select * from teste1;

mysql> select * from teste1;

mysql> select * from teste1;

mysql> update teste1 set c2 = 'EEE';

mysql> select * from teste1;

3a Sessão:mysql> SHOW PROCESSLIST;mysql> SELECT waiting_trx_id, waiting_pid, waiting_query, blocking_trx_id, blocking_pid, blocking_query FROM sys.innodb_lock_waits;mysql> SELECT THREAD_ID FROM performance_schema.threads WHERE PROCESSLIST_ID = 3;

Page 189: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

189189

Lab 6.23: Transações e Isolamento1a Sessão:mysql> update teste2 set c2 = 'BBB';mysql> select * from teste2;

mysql> start transaction;mysql> update teste2 set c2 = 'CCC';mysql> select * from teste2;

mysql> commit;mysql> select * from teste2;

mysql> start transaction;mysql> update teste2 set c2 = 'DDD';

mysql> commit;mysql> select * from teste2;

2a Sessão:

mysql> select * from teste2;

mysql> select * from teste2;

mysql> select * from teste2;

mysql> update teste2 set c2 = 'EEE';

mysql> select * from teste2;

Page 190: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

190190

Lab 6.24: Comandos AdministrativosExecute estas operações no banco employees e nerv:mysql> ANALYZE TABLE employees.salaries;mysql> INSERT INTO nerv.salaries SELECT * FROM employees.salaries;mysql> ANALYZE TABLE nerv.salaries;

mysql> OPTIMIZE TABLE employees.salaries;

# ls -lh /mysql/nerv/salaries.*mysql> OPTIMIZE TABLE nerv.salaries;# ls -lh /mysql/nerv/salaries.*mysql> DELETE FROM nerv.salaries;# ls -lh /mysql/nerv/salaries.*mysql> OPTIMIZE TABLE nerv.salaries;mysql> OPTIMIZE TABLE nerv.salaries;# ls -lh /mysql/nerv/salaries.*

mysql> REPAIR TABLE employees.salaries;mysql> REPAIR TABLE nerv.salaries;

# mysqlcheck -u root -pNerv2019. nerv# mysqlcheck -a -u root -pNerv2019. nerv# mysqlcheck -o -u root -pNerv2019. nerv# mysqlcheck -repair -u root -pNerv2019. nerv

# mysqlcheck -u root -pNerv2019. employees# mysqlcheck -a -u root -pNerv2019. employees# mysqlcheck -o -u root -pNerv2019. employees# mysqlcheck -repair -u root -pNerv2019. employees

Page 191: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

191191

Lab 6.25: mysqldumpslowExecute o mysqldumpslow.# mysqldumpslow /var/lib/mysql/mysql-slow.log# mysqldumpslow /var/lib/mysql/mysql-slow.log > /root/Slow.txt# mysqldumpslow -s r /var/lib/mysql/mysql-slow.log > /root/Slow.txt

Page 192: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

192192

Lab 6.26: EXPLAIN

mysql> use sakila;mysql> EXPLAIN SELECT actor.first_name, actor.last_name, film.titleFROM actor, film, film_actor WHERE actor.first_name = 'ADAM' AND actor.actor_id = film_actor.actor_id AND film_actor.film_id AND film.film_id = film_actor.film_id;

Page 193: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

193193

Lab 6.27: SHOW PROFILE

Page 194: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

194194

Partitioning

Page 195: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

195195

Partitioning - RANGE

Page 196: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

196196

Partitioning - RANGE

Page 197: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

197197

Partitioning - LIST

Page 198: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

198198

Partitioning - RANGE COLUMNS

Page 199: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

199199

Partitioning - LIST COLUMNS

Page 200: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

200200

Partitioning - HASH

Page 201: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

201201

Partitioning - KEY

Page 202: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

202202

memcached

https://dev.mysql.com/doc/refman/5.7/en/innodb-memcached-intro.html

Page 203: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

203203

memcached

Page 204: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

204

Alta Disponibilidade

204

Page 205: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

205205

Alta Disponibilidade

DRBD / Pacemaker / Corosync

Page 206: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

206206

Alta Disponibilidade

Windows Server Failover Clustering

Page 207: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

207207

Alta Disponibilidade

MySQL Replication

Page 208: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

208208

Lab 7.1: MySQL ReplicationNo Oracle VM VirtualBox, crie uma nova VM, com o nome “Slave 01”, importanto novamente o arquivo /root/Linux.ova.Inicie a VM, verifique seu IP, e acesse por ssh.Pelo nmtui, altere o hostname da VM.

Adicione a linha abaixo no arquivo de configuração, e reinicie o MySQL.server-id=2

Execute a configuração da Replicação no Master.mysql> CREATE USER 'rep'@'192.168.0.99' IDENTIFIED BY 'Nerv2019.';mysql> GRANT REPLICATION SLAVE ON *.* TO 'rep'@'192.168.0.99';mysql> FLUSH TABLES WITH READ LOCK;mysql> SHOW MASTER STATUS;Backup no Mastermysql> UNLOCK TABLES;Restore no Slave

Execute a configuração da Replicação no Slave.mysql> CHANGE MASTER TO

MASTER_HOST='192.168.0.101',MASTER_USER='rep',MASTER_PASSWORD='Nerv2019.',MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=435;

mysql> START SLAVE;mysql> SHOW SLAVE STATUS;# mysql -E -e "SHOW SLAVE STATUS" | grep -e Running -e Seconds

Page 209: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

209209

GTID

Page 210: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

210210

MySQL Parallel ReplicationAltere os parâmetros abaixo:slave_parallel_type = LOGICAL_CLOCKslave_parallel_workers = 20

Page 211: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

211211

MySQL Proxy

Page 212: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

212212

Alta Disponibilidade

ProxySQL

https://www.proxysql.com/compare

Page 213: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

213213

Proxy SQL# wget http://repo.proxysql.com/ProxySQL/proxysql-2.0.x/centos/7/proxysql-2.0.8-1-centos7.x86_64.rpm# yum -y install proxysql-2.0.8-1-centos7.x86_64.rpm

# wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm# yum -y install mysql80-community-release-el7-3.noarch.rpm# vi /etc/yum.repos.d/mysql-community.repo

# yum -y install mysql-community-client proxysql

# systemctl enable proxysql# systemctl start proxysql

# mysql -u admin -padmin -h 127.0.0.1 -P6032 --prompt='Admin> '

Admin> UPDATE global_variables SET variable_value='monitor' WHERE variable_name='mysql-monitor_username';Admin> UPDATE global_variables SET variable_value='Nerv2019.' WHERE variable_name='mysql-monitor_password';Admin> LOAD MYSQL VARIABLES TO RUNTIME;Admin> SAVE MYSQL VARIABLES TO DISK;

Admin> INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (1, '192.168.0.97', 3306);Admin> INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (2, '192.168.0.98', 3306);Admin> INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (2, '192.168.0.99', 3306);Admin> SELECT hostgroup_id, hostname, status FROM mysql_servers ORDER BY hostgroup_id;Admin> LOAD MYSQL SERVERS TO RUNTIME;Admin> SAVE MYSQL SERVERS TO DISK;

Admin> INSERT INTO mysql_users(username, password, default_hostgroup) VALUES ('sbtest', 'Nerv2019.', 1);Admin> LOAD MYSQL USERS TO RUNTIME;Admin> SAVE MYSQL USERS TO DISK;

Page 214: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

214214

Proxy SQLAdmin> INSERT INTO mysql_query_rules (rule_id,active,match_digest,destination_hostgroup,apply)VALUES(1,1,'^SELECT.*FOR UPDATE$',1,1),(2,1,'^SELECT',2,1);Admin> LOAD MYSQL QUERY RULES TO RUNTIME;Admin> SAVE MYSQL QUERY RULES TO DISK;

Admin> INSERT INTO mysql_users (username, password) VALUES ('ricardo','Nerv2019.');Admin> LOAD MYSQL USERS TO RUNTIME;Admin> SAVE MYSQL USERS TO DISK;

mysql> CREATE USER 'ricardo'@'192.168.0.19' IDENTIFIED BY 'Nerv2019.';mysql> GRANT ALL ON *.* TO 'ricardo'@'192.168.0.19';mysql> CREATE USER 'monitor'@'192.168.0.19' IDENTIFIED BY 'Nerv2019.';mysql> GRANT ALL ON *.* TO 'monitor'@'192.168.0.19';mysql> FLUSH PRIVILEGES;

# mysql -u ricardo -pNerv2019. -h 127.0.0.1 -P 6033

Page 215: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

215215

Alta Disponibilidade

MySQL Cluster / NDB Cluster

Page 216: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

216216

Alta Disponibilidade

InnoDB Cluster / Group Replication / Router / Shell / Fabric

Page 217: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

217217

MySQL Group Replication

Page 218: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

218218

MySQL Labs

Page 219: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

219219

Alta Disponibilidade

Galera Cluster

Page 220: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

220220

Alta Disponibilidade

Galera Cluster

Page 221: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

221221

Alta Disponibilidade

Percona XtraDB Cluster

Page 222: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

222

Upgrade para 8.0

222

Page 223: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

223223

Upgrade

Supported Upgrade MethodsIn-place Upgrade (mysql_upgrade)Logical Upgrade (mysqldump)

Supported Upgrade Paths● Para Release Series Version superior.Por exemplo, de 5.6.20 para 5.6.27.

● Para um (apenas um) Release Series superior.Por exemplo, de 5.6.27 para 5.7.9 (antes faça upgrade da Release Series Version).

Exemplos:5.6: Release Series5.6.20: Release Series Version

Page 224: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

224224

Upgrade

Changes in MySQL 5.7 / Changes in MySQL 8.0https://dev.mysql.com/doc/refman/5.7/en/upgrading-from-previous-series.htmlhttps://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html

Server and Status Variables and Options Added, Deprecated, or Removedhttps://dev.mysql.com/doc/refman/5.7/en/added-deprecated-removed.htmlhttps://dev.mysql.com/doc/refman/8.0/en/added-deprecated-removed.html

Upgrading a Replication Setuphttps://dev.mysql.com/doc/refman/5.7/en/replication-upgrade.htmlhttps://dev.mysql.com/doc/refman/8.0/en/replication-upgrade.html

Índice de alterações:https://dev.mysql.com/doc/relnotes/mysql/5.6/en/ix01.htmlhttps://dev.mysql.com/doc/relnotes/mysql/5.7/en/ix01.htmlhttps://dev.mysql.com/doc/relnotes/mysql/8.0/en/ix01.html

Page 225: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

225225

Upgrade

Page 226: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

226226

Upgrade

Page 227: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

227227

8.0 New Features

http://mysqlserverteam.com/the-mysql-8-0-0-milestone-release-is-available/https://dev.mysql.com/doc/relnotes/mysql/8.0/en/

Page 228: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

228228

Lab 9.1: Upgrade para 8.0

Edite o arquivo /etc/yum.repos.d/mysql-community.repo, e habilite o reposítório do MySQL 8.0....[mysql57-community]name=MySQL 5.7 Community Serverbaseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/enabled=0gpgcheck=1...[mysql80-community]name=MySQL 8.0 Community Serverbaseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/6/$basearch/enabled=1gpgcheck=1...

Execute o Upgrade para MySQL 8.0.# mysql --version# mysqldump --all-databases > backup.sql# ls -lh backup.sql# systemctl stop mysqld# yum -y update mysql-community-*# systemctl start mysqld# mysqlcheck --all-databases --check-upgrade# mysql_upgrade# grep upgrade /var/lib/mysql/mysql-error.log# mysql --version

Page 229: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

229

Perguntas?http://nervinformatica.com.br/forum/

Ricardo Portilho Proni [email protected] Nerv Informática Ltda. Esta obra está licenciada sob a licença Creative Commons Atribuição-SemDerivados 3.0 Brasil. Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-nd/3.0/br/.

Page 230: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

230230

Lab Extra 1.1: Banco de Exemplo WORLD# cd# wget http://downloads.mysql.com/docs/world.sql.zip# ls -lh world.sql.zip# yum -y install unzip# unzip world.sql.zip# ls -lh world.sql# mysql < world.sql

mysql> SHOW DATABASES;mysql> use world;mysql> show tables;mysql> select count(*) from city;mysql> select count(*) from country;mysql> select count(*) from countrylanguage;

Page 231: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

231231

Lab Extra 1.2: Banco de Exemplo SAKILA# cd# wget http://downloads.mysql.com/docs/sakila-db.zip# ls -lh sakila-db.zip# unzip sakila-db.zip# ls -lh sakila-db/

# cd sakila-db/# mysql < sakila-schema.sql# mysql < sakila-data.sql

mysql> SHOW DATABASES;mysql> use sakila;mysql> show tables;mysql> select count(*) from actor;mysql> select count(*) from film;mysql> select count(*) from film_actor;

Page 232: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

232232

Lab Extra 1.3: Banco de Exemplo MENAGERIE

# cd# wget http://downloads.mysql.com/docs/menagerie-db.zip# ls -lh menagerie-db.zip# unzip menagerie-db.zip# ls -lh menagerie-db/

# cd menagerie-db/# cat pet.txt# cat event.txt# mysql -tmysql> CREATE DATABASE menagerie;mysql> use menagerie;mysql> SOURCE cr_pet_tbl.sqlmysql> LOAD DATA LOCAL INFILE 'pet.txt' INTO TABLE pet;mysql> SOURCE ins_puff_rec.sqlmysql> SOURCE cr_event_tbl.sqlmysql> LOAD DATA LOCAL INFILE 'event.txt' INTO TABLE event;

mysql> show tables;mysql> select count(*) from pet;mysql> select count(*) from event;

Page 233: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

233233

Lab Extra 1.4: Banco de Exemplo EMPLOYEES# cd# wget https://launchpad.net/test-db/employees-db-1/1.0.6/+download/employees_db-full-1.0.6.tar.bz2# ls -lh employees_db-full-1.0.6.tar.bz2# bunzip2 employees_db-full-1.0.6.tar.bz2# tar xfv employees_db-full-1.0.6.tar# ls -lh employees_db/

# cd employees_db/

# vi employees.sql...-- set storage_engine = InnoDB;...-- select CONCAT('storage engine: ', @@storage_engine) as INFO;...

# mysql -t < employees.sqlmysql> SHOW DATABASES;mysql> use employees;mysql> show tables;mysql> select count(*) from departments;mysql> select count(*) from employees;mysql> select count(*) from salaries;

Page 234: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

234234

Lab Extra 1.5: Banco de Exemplo# mysqlmysql> use employees;mysql> show tables;

# mysql employeesmysql> show tables;

# mysqlmysql> select count(*) from employees.salaries;mysql> select count(*) from menagerie.pet;

mysql> select count(*) from employees.salaries;mysql> select count(*) from EMPLOYEES.SALARIES;mysql> select count(*) from EMPLOYEES.salaries;mysql> select count(*) from employees.SALARIES;mysql> select count(*) from Employees.salaries;mysql> select count(*) from employees.Salaries;

Page 235: MySQL - nervinformatica.com.brnervinformatica.com.br/Downloads/Materiais/MYA-2019.pdf · 2 2 Produtos utilizados no Treinamento Oracle Enterprise Linux 7.7 MySQL 5.7.28 e 8.0.13 Percona

235

Fim

Ricardo Portilho Proni [email protected] Nerv Informática Ltda. Esta obra está licenciada sob a licença Creative Commons Atribuição-SemDerivados 3.0 Brasil. Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-nd/3.0/br/.