MySQL - Administração - Backup & Recovery - Tuning - Alta Disponibilidade Inclui Percona e MariaDB Ricardo Portllo Proni ricardo@nervinformatcaacomabr Esta obra está licenciada sob a licença Creatve Commons Atribuição-)emDerivados oa0 Br asila Para ver uma cópia desta licença, visite ltp://creatvecommonsaorg/licenses/by-nd/oa0/br/a
146
Embed
MySQL - Nervnervinformatica.com.br/Downloads/Materiais/MYA-2018.pdf · Comandos no Treinamento ... # echo 'show databases' > script.sql # mysql -t < script.sql ... Banco de
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
MySQL- Administração- Backup & Recovery- Tuning- Alta Disponibilidade
Esta obra está licenciada sob a licençaCreatve Commons Atribuição-)emDerivados oa0 BrasilaPara ver uma cópia desta licença, visite ltp://creatvecommonsaorg/licenses/by-nd/oa0/br/a
22
Produtos utiizados no Treinamento● Oracle Enterprise Linux 6● Oracle VirtualBox 5a2● My)QL 5a7● Percona )erver 5a7● MariaDB 10a2
33
Comandos no Treinamento
Comando com o usuário root:# mysql -u root -pNerv2017
Comando no MySQL:mysql> show databases;
Adicionar texto a um arquivo:# vi /etc/my.cnf...log-bin=mysql-bin...
Todas as senhas são Nerv2017.
4
Mercado de Trabaiho MySQL
4
55
Por que MySQL?
66
DBA MySQLDBA MySQL e ...● Desenvolvedor● Administrador de Dados● Administrador de )istema Operacional● Analista de )istema● DBA de outro banco
77
CertfcaçõesOracie Certfed Professionai, MySQL 5.6 Database AdministratorExame: My)QL 5a6 Database Administrator (1Z0-88o)● My)QL Arclitecture● My)QL )erver Installaton, Confguraton and Maintenance● My)QL )ecurity● Diagnostc Data and Metadata )ources in My)QL● Optmizing My)QL Performance● Backups and Recovery in My)QL● Higl Availability Teclniques for My)QL
Oracie Certfed Professionai, MySQL 5.6 DeveioperExame: My)QL 5a6 Developer (1Z0-882)● My)QL Arclitecture● General My)QL )yntax● Creaton and Design of My)QL )clema Objects● Creaton, Design and Use of My)QL )tored Programs● Querying for Data● Modifying Data● Joins, subqueries and UNION● My)QL Applicaton Development● Basic Optmizatons
Lab 1.1: Instaiação MySQLInstaie o MySQL.# yum -y install wget# yum -y install https://dev.mysql.com/get/mysql57-community-release-el6-11.noarch.rpm# yum -y install mysql-server# chkconfig mysqld on# ls -lh /var/lib/mysql# service mysqld start# ls -lh /var/lib/mysql
Verifque o Log do MySQL, e aitere a senha do usuário root.# cat /var/log/mysqld.log# grep password /var/log/mysqld.log# /usr/bin/mysqladmin -u root -p password 'Nerv2017...'
Acesse o MySQL, e verifque o acesso.# mysql -u root -pmysql> exit;
Libere a porta do MySQL no Firewaii.# iptables -I INPUT -p tcp -m tcp --dport 3306 -j ACCEPT# service iptables save
2121
Lab 1.2: Status MySQL
Verifque as formas de conexão com o MySQL.# mysql -u root -pmysql> status;
# mysqladmin -u root -pNerv2017... status
# tail /var/log/mysqld.log
2222
Lab 1.3: Ciient MySQL
Verifque as formas de conexão com o MySQL.# mysql -u root -pmysql> SHOW STATUS;mysql> EXIT;
# mysql -u root -pNerv2017...mysql> SHOW STATUS;mysql> EXIT;
mysql> prompt \U-\d-\R:\m:\s>
# vi .my.cnf[client]password=Nerv2017...prompt='\U-\d-\R:\m:\\s>'...
# mysql
2323
Lab 1.4: Ciient MySQL
Verifque as formas de execução de comandos no MySQL.# mysqlmysql> show databases;
# mysql -e 'show databases’# mysql -B -e 'show databases’# mysql -t -e 'show databases’# mysql -E -e 'show databases’# mysql -X -e 'show databases’
# mysql -e 'show databases’ > status.txt# cat status.txt
# mysql -t -e 'show databases’ > status.txt# cat status.txt
# echo 'show databases' > script.sql# mysql -t < script.sql# mysql -t < script.sql > status.txt# cat status.txt
mysql> source script.sql
2424
Lab 1.5: Ciient MySQL
Verifque 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> edit
mysql> tee audit.logmysql> show databases;mysql> notee# cat audit.log
mysql> system ls -lh
2525
Lab 1.6: Banco de Exempio 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;
2626
Lab 1.7: Banco de Exempio 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;
2727
Lab 1.8: Banco de Exempio 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;
2828
Lab 1.9: Banco de Exempio 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;
2929
Lab 1.10: Banco de Exempio
# 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;
Instaie o Oracie VM VirtuaiBox.# yum -y install SDL kernel-uek-devel kernel-uek-headers# yum -y install http://download.virtualbox.org/virtualbox/5.2.0/VirtualBox-5.2-5.2.0_118431_el6-1.x86_64.rpm
4242
Lab 2.2: Percona Server
No Oracie VM VirtuaiBox, ciique em “Fiie”, e em “Import Appiiance”.
4343
Lab 2.3: Percona Server
Aitere o Nome para “Percona”, e seiecione “Reiniciaiize o endereço MAC de todas as piacas de rede”.
4444
Lab 2.4: Percona ServerInicie a VM.
Verifque o endereço IP da VM.# service network restart# ifconfig eth0
4545
Lab 2.5: Percona Server
Instaie o Percona Server.# yum -y install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm# yum -y install Percona-Server-server-57# chkconfig mysql on# service mysql startgrep password /var/log/mysqld.log# mysqladmin -u root -p password 'Nerv2017...'# mysql -u root -pNerv2017...mysql> show databases;mysql> show engines;
Execute um Backup Lógico do MySQL.# mysqldump --all-databases > backup.sql
Copie e importe o Backup Lógico no Percona.# mysql -u root -pNerv2017... < backup.sql# mysql -u root -pNerv2017...mysql> show databases;mysql> select count(*) from employees.salaries;
4646
MariaDB
4747
MariaDB
4848
MariaDB - Produtos Enterprise
4949
Lab 3.1: MariaDB
No Oracie VM VirtuaiBox, ciique em “Fiie”, e em “Import Appiiance”.
5050
Lab 3.2: MariaDB
Aitere o Nome para “MariaDB”, e seiecione “Reiniciaiize o endereço MAC de todas as piacas de rede”.
5151
Lab 3.3: MariaDBInicie a VM.
Verifque o endereço IP da VM.# service network restart# ifconfig eth0
5252
Lab 3.4: MariaDB
Instaie o MariaDB.# ifconfig# vi /etc/yum.repos.d/MariaDB.repo...# MariaDB 10.2 CentOS repository list - created 2017-11-03 13:48 UTC# http://downloads.mariadb.org/mariadb/repositories/[mariadb]name = MariaDBbaseurl = http://yum.mariadb.org/10.2/centos6-x86gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDBgpgcheck=1...
# yum -y install MariaDB-server# chkconfig mysql on# service mysql start# mysqladmin -u root password 'Nerv2017'mysql> show engines;
Copie e importe o Backup Lógico no MariaDB.# mysql -u root -pNerv2017 < backup.sql# mysql -u root -pNerv2017mysql> show databases;mysql> select count(*) from employees.salaries;
53
Administração
53
5454
Lab 4.1: Estruturas Físicas e Lógicas
Crie um novo banco de dados.# mysqlmysql> show databases;mysql> create database nerv;mysql> show databases;mysql> use nerv;mysql> show tables;
5555
Lab 4.2: Estruturas Físicas e LógicasVerifque as estruturas fsicas dos MySQL.# ls -lh /var/lib/mysql/...drwxr-x---. 2 mysql mysql 4.0K Oct 22 10:38 employees-rw-r-----. 1 mysql mysql 16K Oct 22 11:17 ib_buffer_pool-rw-r-----. 1 mysql mysql 76M Oct 22 11:18 ibdata1-rw-r-----. 1 mysql mysql 48M Oct 22 11:18 ib_logfile0-rw-r-----. 1 mysql mysql 48M Oct 22 11:18 ib_logfile1-rw-r-----. 1 mysql mysql 12M Oct 22 11:27 ibtmp1drwxr-x---. 2 mysql mysql 4.0K Oct 22 10:33 menageriedrwxr-x---. 2 mysql mysql 4.0K Oct 21 17:16 mysqldrwxr-x---. 2 mysql mysql 4.0K Oct 22 12:35 nervdrwxr-x---. 2 mysql mysql 4.0K Oct 21 17:16 performance_schemadrwxr-x---. 2 mysql mysql 4.0K Oct 22 10:31 sakiladrwxr-x---. 2 mysql mysql 12K Oct 21 17:16 sysdrwxr-x---. 2 mysql mysql 4.0K Oct 22 10:26 world...
# ls -lh /var/lib/mysql/nerv/-rw-rw----. 1 mysql mysql 65 Out 26 15:57 db.opt
Verifque o conteúdo das tabeias do banco mysqi.# mysqlmysql> use mysql;mysql> show tables;mysql> select * from db;mysql> select * from user;
5757
Lab 4.4: Dicionário de Dados
Verifque o conteúdo das tabeias do banco informaton_schema.# mysqlmysql> use information_schema;mysql> show tables;mysql> select * from TABLES;mysql> select * from USER_PRIVILEGES;
Verifque o conteúdo das tabeias do banco performance_schema.# mysqlmysql> use performance_schema;mysql> show tables;mysql> select * from threads;mysql> select * from users;
Verifque as Variabies, 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;
Lab 4.7: VariabiesAitere uma Variabie, com SET e com SET GLOBAL.# mysqlmysql> SHOW VARIABLES LIKE '%sort%';mysql> SET sort_buffer_size=524288;mysql> SHOW VARIABLES LIKE '%sort%';mysql> SET @@local.sort_buffer_size=524288;mysql> select @@local.sort_buffer_size;mysql> exit;# mysqlmysql> SHOW VARIABLES LIKE '%sort%';
# mysqlmysql> SHOW VARIABLES LIKE '%sort%';mysql> SET GLOBAL sort_buffer_size=524288;mysql> SHOW VARIABLES LIKE '%sort%';mysql> SET @@global.sort_buffer_size=524288;mysql> select @@local.sort_buffer_size;mysql> select @@global.sort_buffer_size;mysql> exit;# mysqlmysql> SHOW VARIABLES LIKE '%sort%';
mysql> set global tmpdir='/var/lib/mysql/';
6161
Lab 4.8: Variabies
6262
Lab 4.9: Variabies
Aitere uma Variabie peio arquivo de parâmetros.# mysqlmysql> SHOW VARIABLES LIKE '%sort%';mysql> exit;
# vi /etc/my.cnf...[mysqld]sort_buffer_size = 2M...
# service mysqld stop# service mysqld start
# mysqlmysql> SHOW VARIABLES LIKE '%sort%';
6363
Lab 4.10: Usuários e PermissõesCrie um usuário para conexão remota.mysql> CREATE USER 'portilho'@'localhost' IDENTIFIED BY 'Nerv2017...';mysql> CREATE USER 'portilho'@'192.168.0.102' IDENTIFIED BY 'Nerv2017...';mysql> CREATE USER 'portilho'@'%.localdomain' IDENTIFIED BY 'Nerv2017...';mysql> CREATE USER 'portilho'@'%' IDENTIFIED BY 'Nerv2017...';mysql> DROP USER 'portilho'@'%';mysql> GRANT SELECT ON world.city TO 'portilho'@'192.168.0.102';mysql> GRANT SELECT ON nerv.* TO 'portilho'@'192.168.0.102';mysql> GRANT ALL PRIVILEGES ON *.* TO 'portilho'@'localhost';mysql> REVOKE ALL PRIVILEGES ON *.* FROM 'portilho'@'localhost';mysql> SET PASSWORD FOR 'portilho'@'192.168.0.102' = PASSWORD('Nerv2016');mysql> show warnings;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 portilho -pNerv2017 -h 192.168.0.108
Exporte as tabeias do banco empioyees para texto.mysql> use employees;mysql> SELECT * FROM departments INTO OUTFILE '/tmp/departments.txt';O que aconteceu?
mysql> SELECT * FROM dept_emp INTO OUTFILE '/tmp/dept_emp.txt';mysql> SELECT * FROM dept_manager INTO OUTFILE '/tmp/dept_manager.txt';mysql> SELECT * FROM employees INTO OUTFILE '/tmp/employees.txt';mysql> SELECT * FROM salaries INTO OUTFILE '/tmp/salaries.txt';mysql> SELECT * FROM titles INTO OUTFILE '/tmp/titles.txt';
6565
Lab 4.12: Importação e Exportação
Importe os arquivos texto para as tabeias do banco empioyees.mysql> SET foreign_key_checks = 0;mysql> truncate table departments;mysql> truncate table dept_emp;mysql> truncate table dept_manager;mysql> truncate table employees;mysql> truncate table salaries;mysql> truncate table titles;mysql> LOAD DATA INFILE '/tmp/departments.txt' INTO TABLE departments;mysql> LOAD DATA INFILE '/tmp/dept_emp.txt' INTO TABLE dept_emp;mysql> LOAD DATA INFILE '/tmp/dept_manager.txt' INTO TABLE dept_manager;mysql> LOAD DATA INFILE '/tmp/employees.txt' INTO TABLE employees;mysql> LOAD DATA INFILE '/tmp/salaries.txt' INTO TABLE salaries;mysql> LOAD DATA INFILE '/tmp/titles.txt' INTO TABLE titles;mysql> SET foreign_key_checks = 1;
Outras opções:FIELDS TERMINATED BY ','ENCLOSED BY '"'LINES TERMINATED BY '\n';
6666
Lab 4.13: MySQL Workbench
Instaie o MySQL Workbench.# yum -y install mysql-workbench-community
No Oracie VM VirtuaiBox, ciique em “Fiie”, e em “Import Appiiance”.
8787
Lab 5.2: Backup & Recovery
Aitere o Nome para “Recovery”, e seiecione “Reiniciaiize o endereço MAC de todas as piacas de rede”.
8888
Lab 5.3: Backup & RecoveryInicie a VM.
Verifque o endereço IP da VM.# service network restart# ifconfig eth0
Instaie na VM Recovery o mesmo MySQL da máquina reai.
8989
Lab 5.4: Coid Backup
Execute um Coid Backup.# service mysqld stop# mkdir /root/ColdBackup# cp -rfvp /var/lib/mysql/ /root/ColdBackup/# service mysqld start
Na máquina de Restore, pare o MySQL.# service mysqld stop
Na máquina originai, copie o Backup.# scp -Cr /root/ColdBackup/mysql/* 192.168.56.102:/var/lib/mysql/
Na máquina de Restore, inicie o MySQL.# chown -R mysql:mysql /var/lib/mysql# setenforce 0# service mysqld start
9090
Lab 5.5: Warm Backup MyISAM
Dupiique as tabeias do banco empioyees 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;
Aitere as tabeias para o Engine MyISAM, e as coioque em LOCK.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;
9191
Lab 5.6: Warm Backup MyISAM
Coioque as tabeias MyISAM em LOCK.mysql> FLUSH TABLE departments, dept_emp, dept_manager, employees, salaries,titles WITH READ LOCK;mysql> show open tables from nerv;
Em outra sessão, execute a cópia peio sistema operacionai.# mkdir /root/WarmBackup# cp -rfp /var/lib/mysql/nerv /root/WarmBackup
Na sessão originai, desbioquei as tabeias.mysql> UNLOCK TABLEs;
Na máquina originai, copie o Backup para a máquina de Restore.# scp -Cr /root/WarmBackup/nerv/* 192.168.56.102:/var/lib/mysql/nerv/
Na máquina de Restore, corrija as permissões.# chown -R mysql:mysql /var/lib/mysql/nerv
9292
Lab 5.7: mysqidump
Execute um backup via mysqidump.# mkdir /root/Dump# mysqldump nerv > /root/Dump/nerv.sql# mysqldump --all_databases > /root/Dump/nerv01.sql
Edite o arquivo gerado.O que eie contém?Como utiizar este backup?Quais suas desvantagens?
O que faz a opção –-singie-transacton?O que faz a opção –-master-data?
9393
Lab 5.8: Bin Logs
Adicione no /etc/my.cnf as iinhas abaixo, e reinicie o mysqi.sync_binlog=1log-bin=mysql-binexpire_logs_days=28
O que aconteceu no diretório de dados?
Execute uma carga de dados, e verifque o conteúdo dos Bin Logs.# mysqlbinlog /var/lib/mysql/mysql-bin.000001 > Recover.sql# mysqlbinlog --start-datetime="2005-12-25 11:25:56" binlog.000003# mysqlbinlog --start-position=128530757 binlog.000003 > Recover03.sql
9494
Lab 5.9: Instaiação Servidor Restore
Recupere o Backup Lógico no Servidor Restore, e apiique os Bin Logs.Produção:# mysqldump nerv > /root/Dump/nerv.sqlmysql> PURGE BINARY LOGS BEFORE '2017-10-31 08:40:00';mysql> use nerv;mysql> select count(*) from salaries;mysql> insert into salaries select * from salaries;mysql> select count(*) from salaries;
Servidor de Restore:# mysql nerv < /root/Dump/nerv.sql
Aitere a iocaiização do diretório de dados do MySQL.# vi /etc/selinux/config...SELINUX=disabled...
# reboot
# service mysqld stop# mkdir /mysql# chown -R mysql:mysql /mysql
# vi /etc/my.cnf...datadir=/mysql...
# cp -R -p -v /var/lib/mysql/* /mysql/# service mysqld start
103103
Lab 6.2: System Tabiespace InnoDB
Aitere a iocaiização do diretório de dados do MySQL.# service mysqld stop# mkdir /InnoDB01# mv /mysql/ibdata1 /InnoDB01/# chown -R mysql:mysql /InnoDB01/
# vi /etc/my.cnf...innodb_file_per_table=OFFinnodb_data_home_dir=innodb_data_file_path=/InnoDB01/ibdata1:10M:autoextend:max:10G...
Execute um teste de carga no MySQL.# yum -y install mysql-community-test# mysqlslap --user=root –-password=Nerv2017... --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.
Durante a execução do teste, acompanhe no MySQL, via mysqiadmin.# mysqladmin status
Durante a execução do teste, acompanhe no MySQL, via PROCESSLIST.mysql> SHOW PROCESSLIST;mysql> SHOW FULL PROCESSLIST;
Execute novamente o teste, com os Engines MyISAM e Memory.
115115
Lab 6.5: Parâmetros de TuningAitere todos os parâmetros abaixo no arquivo de parâmetros, e reinicie o MySQL.### Huge Pageslarge_pages = OFF
Lab 6.7: Parâmetros de TuningAitere todos os parâmetros abaixo no arquivo de parâmetros, e reinicie o MySQL.### MyISAMkey_cache_block_size = 4096key_buffer_size = 128Mkey_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)
Exempio:prod.key_buffer_size = 128Mdev.key_buffer_size = 16Mmysql> CACHE INDEX t1, t2, t3 IN prod;
118118
Lab 6.8: Parâmetros de TuningAitere todos os parâmetros abaixo no arquivo de parâmetros, e reinicie o MySQL.### InnoDB Filesinnodb_checksums = ON # innodb_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
### Lockinnodb_lock_wait_timeout = 50innodb_rollback_on_timeout = OFF
119119
Lab 6.9: Parâmetros de TuningAitere todos os parâmetros abaixo no arquivo de parâmetros, e reinicie o MySQL.### InnoDB Bufferinnodb_page_size = 16384innodb_buffer_pool_size = 128Minnodb_buffer_pool_instances = 1innodb_change_buffering = ALLinnodb_change_buffer_max_size = 25
Lab 6.11: Parâmetros de TuningAitere todos os parâmetros abaixo no arquivo de parâmetros, e reinicie o MySQL.### 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)
Aitere todos os parâmetros abaixo no arquivo de parâmetros, e reinicie o MySQL.### Optimizeroptimizer_prune_level = 1optimizer_search_depth = 62eq_range_index_dive_limit = 10max_seeks_for_key = 1000
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;
125125
Lab 6.15: Transações e Isoiamento1a 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;
126126
Lab 6.16: Transações e Isoiamento1a 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;
127127
Lab 6.17: Comandos AdministratvosExecute estas operações no banco empioyees e nerv:mysql> ANALYZE TABLE salaries;
Lab 7.1: MySQL RepiicatonCrie outro Cione da VM “Linux”, com o nome de “MySQL Siave 01”.
Adicione a iinha abaixo no arquivo de confguração, e reinicie o MySQL.server-id=1
Execute a confguração da Repiicação no Master.mysql> CREATE USER 'rep'@'192.168.56.102' IDENTIFIED BY 'Nerv2017...';mysql> GRANT REPLICATION SLAVE ON *.* TO 'rep'@'192.168.56.102';mysql> FLUSH TABLES WITH READ LOCK;mysql> SHOW MASTER STATUS;Backup no Mastermysql> UNLOCK TABLES;Restore no Slave
Execute a confguração da Repiicação no Siave.mysql> CHANGE MASTER TO
Lab 8.1: Instaiação MySQL ProxyCrie outro Cione da VM “Linux”, com o nome de “MySQL Proxy”.
Instaie e inicie o MySQL Proxy# yum -y install wget# wget https://dev.mysql.com/get/Downloads/MySQL-Proxy/mysql-proxy-0.8.5-linux-el6-x86-32bit.tar.gz# tar xfzv mysql-proxy-0.8.5-linux-el6-x86-32bit.tar.gz
# vi /etc/mysql_proxy.cnf...[mysql-proxy]port=4040proxy-lua-script=/root/mysql-proxy-0.8.5-linux-el6-x86-32bit/share/doc/mysql-proxy/rw-splitting.luaproxy-backend-addresses = 192.168.0.101:3306proxy-read-only-backend-addresses = 192.168.0.102:3306...
# chmod 0660 /etc/mysql_proxy.cnf# cd /root/mysql-proxy-0.8.5-linux-el6-x86-32bit/bin# ./mysql-proxy --defaults-file=/etc/mysql_proxy.cnf
# mysql -u usuario -pNerv2017 -h IPdoProxy -P 4040
Supported Upgrade Paths● Para Release )eries Version superioraPor exemplo, de 5a6a20 para 5a6a27a
● Para um (apenas um) Release )eries superioraPor exemplo, de 5a6a27 para 5a7a9 (antes faça upgrade da Release )eries Version)a
Exemplos:5.6: Release Series5.6.20: Release Series Version
142142
Upgrade
Changes Afectng Upgrades to MySQL ltp://devamysqlacom/doc/refman/5a7/en/upgrading-from-previous-seriesaltmlltps://devamysqlacom/doc/refman/8a0/en/upgrading-from-previous-seriesaltml
Server and Status Variabies and Optons Added, Deprecated, or Removedltp://devamysqlacom/doc/refman/5a7/en/added-removed-variables-optonsaltmlltps://devamysqlacom/doc/refman/8a0/en/added-removed-variables-optonsaltml
Upgrading a Repiicaton Setupltp://devamysqlacom/doc/refman/5a7/en/replicaton-upgradealtmlltps://devamysqlacom/doc/refman/8a0/en/replicaton-upgradealtml
Índice de aiterações:ltps://devamysqlacom/doc/relnotes/mysql/5a6/en/ix01altmlltps://devamysqlacom/doc/relnotes/mysql/5a7/en/ix01altmlltps://devamysqlacom/doc/relnotes/mysql/8a0/en/ix01altml
Execute o Upgrade para MySQL 8.0.# vi /etc/yum.repos.d/mysql-community.repo...[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...
# mysql --version# mysqldump --all-databases > backup.sql# ls -lh backup.sql # service mysqld stop# yum -y update# service mysqld start# mysql_upgrade# mysql --version