SlideShare a Scribd company logo
1 of 46
© 2019 Percona1
Alkin TEZUYSAL
How to upgrade like a boss to MySQL 8.0?
Upgrading successfully to latest version.
Senior Technical Manager
DataOps, Barcelona
June 2019
© 2019 Percona2
Who am I? @ask_dba
Born to Sail, Forced to Work
▪ Open Source Database Evangelist
▪ Global Database Operations Expert
▪ Cloud Infrastructure Architect AWS
▪ Inspiring Technical and Strategic Leader
▪ Creative Team Builder
▪ Speaker, Mentor, and Coach
© 2019 Percona3
About Percona
Solutions for your success with MySQL and MongoDB
Support, Managed Services, Consulting, Software
Our Software is 100% Open Source
Support Broad Ecosystem – MySQL, MariaDB, Amazon RDS, MongoDB, PostgreSQL
In Business over 10 years
More than 3000 customers, including top Internet companies and enterprises
© 2019 Percona4
Most Recent Percona Software updates May ‘19
Percona Server for MySQL 8.0.15-6
Percona Server for MongoDB 4.0.9-4
Percona XtraDB Cluster 5.7.25-31.35
Percona XtraBackup 8.0.6
Percona Monitoring and Management 1.17.1
Percona Toolkit 3.0.13
Percona Kubernetes Operators!
© 2019 Percona5
Agenda
Why even upgrade?
How we always did it in the past?
MySQL 8.0 is great!
How to upgrade?
Nice things about MySQL Shell
Latest news on MySQL 8.0
Conclusion Q&A
© 2019 Percona6
Why even upgrade?
Feature rich and secure version is always a right choice.
© 2019 Percona7
Cause MySQL 8 is Good 
• SQL DML
• Window Functions, Recursive/Non-Recursive CTEs, Derived Tables,…
• SQL DDL
• Instant ADD/RENAME Column,…
• INDEXES
• Invisible/Descending/Functional Indexes,…
• FUNCTIONS
• Regexp_%, UUID,…
• JSON
• JSON_%, Sorting, In-place
© 2019 Percona8
Cause MySQL 8 is Better 
• GIS
• Spatial Reference Systems, ST functions, Geography Support
• Character Sets and Collations
• UTF-8, Unicode 9.0, …
• Information Schema
• Views over Data Dictionary, New Views, …
• Performance Schema
• Indexes, Error handling, Data Locks, Latency histograms
• Show
• Hidden columns, Index information
© 2019 Percona9
Cause MySQL 8 is Great 
• Optimizer
• Histograms, Hints,
• InnoDB
• Redo Log, Encryption, …
• Data Dictionary and Upgrade
• Transactional DD, Meta Data in InnoDB, Auto Upgrade
• Replication / Group Replication
• Binlog Encryption, Atomic DDL Recovery / Savepoints, Switchovers, Auto-
rejoin
• Security, Shell, Router and many more features.
© 2019 Percona10
Pros of upgrading to new version
• Rich features (Business specific needs)
• Technical advantages (QPS, Throughput, Administration)
• Avoid multiple version upgrades
• Bug fixes
• Security and Compliance
• Community and Vendor support
© 2019 Percona11
Cons of upgrading to new version
• Risks of hitting unknown issues
• Different behavior and results
• Slower throughput due to
• sql_mode, Optimizer, Charset, etc
• Amount of time and material needed for upgrade project
• Downtime that is scheduled to happen
• Downgrade from MySQL 8.0 to MySQL 5.7 is not supported.
© 2019 Percona12
How we always upgraded?
The good old-fashioned way, maybe.
© 2019 Percona13
Traditionally pre-V8
• Major versions only (Ascending Order)
• 5.1  5.5
• 5.5  5.6
• 5.6  5.7
• Set innodb_fast_shutdown=0
• Stop existing MySQL server
• Change binaries to new version
• Adjust config (my.cnf) to new version
• Start MySQL server
• Run mysql_upgrade(Time Consuming)
• Restart MySQL Server (Additional Downtime)
© 2019 Percona14
MySQL 8.0 Upgrade Process
Testing Slow Query Log pt-upgrade
MySQL
Shell
Technique Side by Side In-place
Cutover
Failover to new
topology
Migrate over time
© 2019 Percona15
• Review release notes
• Changes in defaults
• Features of new version
• Removed syntax
• Deprecated functions (GIS)
• Data restrictions
• New keywords
• Changed behavior
Before you even start Testing
© 2019 Percona16
Setup a New Testing
Environment
▪ Setup slaves as replication
•Keep it for a month on no-access server
•Try read testing batch testing
•Verify schema / connectivity
compatibility
•Use ProxySQL (mirroring, traffic
routing)
•Inspect Slow Query Log
Build Independent Cluster
▪ Query testing
•Capture slow queries and digest (pt-
query-digest)
•pt-upgrade
▪ Application Testing
•Verify results
Testing Phase
© 2019 Percona17
What does it achieve?
▪ Identify:
•Query execution time
•Query row counts
•Query checksum
How does it achieve?
▪ Writer Handle – Master Write
▪ Reader Handle (Read Only)
▪ Master Reader Handle
▪ Reporting Reader Handle
Run pt-upgrade to compare queries
© 2019 Percona18
Steps to verify via pt-upgrade (High Level)
1. Setup two slaves with same hardware one of them MySQL 8
2. Capture queries (long_query_time=0) for 24 hours
3. Detach slaves and run pt-query-digest (pt-query-digest --
output=slowlog --sample=10 --no-report > slow.log)
4. Run pt-upgrade with (--max-examples=1)
5. Repeat (after with warm buffer pool)
6. Review and analyze results
© 2019 Percona19
Steps to verify via pt-upgrade RO (Detailed)
1. $ pt-query-digest --sample 25 --no-report --
output slowlog <slow_log_file> >
slow_log_25_samples.log
2. $pt-upgrade h=Test1 h=Test2 --max-examples=1
slow_log_25_samples.log 1> pt-
upgrade_results.out 2> pt-upgrade_results.err
© 2019 Percona20
Steps to verify via pt-upgrade RW (Detailed)
1. $ pt-query-digest --sample 25 --no-report --
output slowlog <slow_log_file> >
slow_log_25_samples.log
2. $ pt-upgrade h=Test1 h=Test2 --no-read-only --
max-examples=1 slow_log_25_samples.log 1> pt-
upgrade_results.out 2> pt-upgrade_results.err
© 2019 Percona21
Summary pt-upgrade testing
Capture queries for 1-2
hours during peak traffic
from the master with
long_query_time=0,
log_slow_rate_limit=1.
Prepare a file for pt-
upgrade testing with 50
samples of each query.
• Use pt-query-digest to
prepare samples.
Stop replication on both
servers at the same
position.
• The replication will
remain stopped for the
duration of pt-upgrade
testing.
Run pt-upgrade read_only
test with --save-results
option.
•The first test to warm
up the buffer pool.
The second test to
capture actual
results.
© 2019 Percona22
MySQL Shell in a nutshell
Nice things about MySQL Shell
© 2019 Percona23
How can MySQL Shell help? (upgrade_checker)
• Built-in function util.checkForServerUpgrade()
The MySQL server at localhost:33060, version 5.7.26-29 - Percona Server (GPL),
Release 29, Revision 11ad961, will now be checked for compatibility issues for
upgrade to MySQL 8.0.16…
1) Usage of old temporal type
No issues found
2) Usage of db objects with names conflicting with reserved keywords in 8.0
No issues found
3) Usage of utf8mb3 charset
No issues found
4) Table names in the mysql schema conflicting with new tables in 8.0
No issues found
5) Foreign key constraint names longer than 64 characters
No issues found
…
© 2019 Percona24
MySQL Shell can even do more (mydba)
mysqlsh --py root@localhost
import sys
sys.path.append('/home/fred/workspace/mysql-shell-mydba')
import mydba
MySQL localhost:33060+ ssl Py > mydba.getProcedures('airline')
Total: 0
MySQL localhost:33060+ ssl Py > mydba.getFragmentedTables()
+--------------------------------+------------+---------+------------+------------+------------+-------------------+
| Table | Engine | # Rows | Data Size | Idx Size | Total Size | Data Free |
+--------------------------------+------------+---------+------------+------------+------------+-------------------+
| information_schema.COLUMNS | InnoDB | None | 0.00G | 0.00G | 0.00G | 8.00MB (100%) |
| information_schema.EVENTS | InnoDB | None | 0.00G | 0.00G | 0.00G | 8.00MB (100%) |
| information_schema.OPTIMIZER_TRACE | InnoDB | None | 0.00G | 0.00G | 0.00G | 8.00MB (100%) |
+--------------------------------+------------+---------+------------+------------+------------+-------------------+
https://github.com/lefred/mysql-shell-mydba
© 2019 Percona25
MySQL Shell can even do more (innotop)
mysqlsh --py root@localhost
import sys
sys.path.append('/home/fred/workspace/mysql-shell-innotop')
import innotop
innotop.session_processlist.run()
MySQL Shell | Percona Server (GPL), Release 29, Revision 11ad961 5.7.26-29
Tuesday 18 June 10:46:23
Cmd Thd Conn Pid State User Db Time Lock Time Query
Sleep 8002 7972 18925 None root@localhost airline None 96.07 ms None
https://github.com/lefred/mysql-shell-innotop
© 2019 Percona26
Upgrade Checker will identify
• Reserved Data Dictionary table names (catalogs)
• Old Style Decimals, Varchar, Time/Datetime/Timestamp
• CHECK TABLE {table_name} FOR UPGRADE
• Mysqlcheck
• Check-upgrade in 5.7
• Use REPAIR TABLE & Dump/Restore
• Partitioned tables using non-native partitioning was deprecated
in 5.7 removed in 8.0
• Switch to native partitioning or not
© 2019 Percona27
Upgrade Checker will NOT identify
• Removed syntax
• Deprecated functions (GIS)
• Data restrictions
• New keywords
• Changed behavior
• Change in defaults
© 2019 Percona28
MySQL Upgrade 5.7 to 8.0 (In-place)
• 5.7 to 8.0
• Stop existing MySQL server
• Change binaries to new version
• Adjust config (my.cnf) to new version
• Start MySQL server
• Automatic upgrade
• New mysqld options
• --upgrade=AUTO (default)
• --upgrade=NONE (errors if anything needs upgrade)
• --upgrade=MINIMAL (to avoid DDL on some system tables)
• --upgrade=FORCE
• Eliminates issues with Metadata using transactional data dictionary
© 2019 Percona29
MySQL Upgrade 5.7 to 8.0 (Replication & Rolling
Upgrade)
• 5.7 to 8.0
• Stop existing MySQL Slave server
• Change binaries to new version
• Adjust config (my.cnf) to new version
• Start MySQL server
• Automatic upgrade
• New mysqld options
• --upgrade=AUTO (default)
• --upgrade=NONE (errors if anything needs upgrade)
• --upgrade=MINIMAL (to avoid DDL on some system tables)
• --upgrade=FORCE
• Eliminates issues with Metadata using transactional data dictionary
• Repeat above for minimum of 2 slaves and promote one as master
© 2019 Percona30
MySQL 8.0 Upgrade
MySQL localhost:33060+ ssl SQL > show global variables like "innodb_fast_shutdown";
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| innodb_fast_shutdown | 1 |
+----------------------+-------+
1 row in set (0.0037 sec)
MySQL localhost:33060+ ssl SQL > set global innodb_fast_shutdown=0;
Query OK, 0 rows affected (0.0007 sec)
MySQL localhost:33060+ ssl SQL > show global variables like "innodb_fast_shutdown";
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| innodb_fast_shutdown | 0 |
+----------------------+-------+
1 row in set (0.0054 sec)
© 2019 Percona31
MySQL 8.0 Packages
© 2019 Percona32
MySQL 8.0 yum installation - Repo
Install the Percona repository
You can install Percona yum repository by running the following command as a root user or with sudo:
$ sudo yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
You should see some output such as the following:
Retrieving http://www.percona.com/downloads/percona-release/redhat/0.1-6/percona-release-latest.noarch.rpm
Preparing... ########################################### [100%]
1:percona-release ########################################### [100%]
Enable the repository:
$ sudo percona-release setup ps80
Install the packages
You can now install Percona Server for MySQL by running:
$ sudo yum install percona-server-server
© 2019 Percona33
MySQL 8.0 yum installation - Yum
Installed:
percona-server-server.x86_64 0:8.0.15-6.1.el7
Dependency Installed:
percona-server-client.x86_64 0:8.0.15-6.1.el7 percona-server-shared.x86_64 0:8.0.15-6.1.el7
percona-server-shared-compat.x86_64 0:8.0.15-6.1.el7
Complete!
© 2019 Percona34
MySQL 8.0 yum installation - Connectivity
MySQL localhost:33060+ ssl SQL > s
MySQL Shell version 8.0.16
Session type: X
Connection Id: 16
Default schema:
Current schema:
Current user: root@localhost
SSL: Cipher in use: ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2
Using delimiter: ;
Server version: 8.0.15-6 Percona Server (GPL), Release 6, Revision 63abd08
Protocol version: X protocol
Client library: 8.0.16
Connection: localhost via TCP/IP
TCP port: 33060
Server characterset: utf8mb4
Schema characterset: utf8mb4
Client characterset: utf8mb4
Conn. characterset: utf8mb4
Uptime: 2 min 26.0000 sec
© 2019 Percona35
MySQL 8.0 yum installation - Errorlog
2019-06-18T14:11:42.790252Z0 [System] [MY-010116][Server] /usr/sbin/mysqld(mysqld 8.0.15-6) startingas process 29198
2019-06-18T14:11:47.731578Z0 [ERROR] [MY-013180] [Server] Function'mysqlx' already exists.
2019-06-18T14:11:47.731590Z0 [Warning] [MY-010736] [Server] Couldn't load plugin named 'mysqlx' with soname 'mysqlx.so'.
2019-06-18T14:11:47.738319Z0 [Warning] [MY-013129] [Server] A message intendedfor a client cannot be sent there as no client-sessionis attached. Therefore,we're sendingthe information to the error-log instead: MY-001287 - 'validate password plugin'is deprecated and will be removed in a future release. Please use validate_password component instead
2019-06-18T14:11:49.700555Z0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2019-06-18T14:11:49.709724Z0 [ERROR] [MY-013129] [Server] A message intendedfor a client cannot be sent there as no client-sessionis attached. Therefore,we're sendingthe information to the error-log instead: MY-001146 - Table 'mysql.component'doesn't exist
2019-06-18T14:11:49.709743Z0 [Warning] [MY-013129] [Server] A message intendedfor a client cannot be sent there as no client-sessionis attached. Therefore,we're sendingthe information to the error-log instead: MY-003543 - The mysql.component table is missing or has an incorrect definition.
2019-06-18T14:11:49.719544Z0 [Warning] [MY-010929] [Server] Storage engine 'MyISAM' does not support system tables. [mysql.user].
2019-06-18T14:11:49.719552Z0 [Warning] [MY-010929] [Server] Storage engine 'MyISAM' does not support system tables. [mysql.db].
2019-06-18T14:11:49.719561Z0 [Warning] [MY-010929] [Server] Storage engine 'MyISAM' does not support system tables. [mysql.tables_priv].
2019-06-18T14:11:49.719568Z0 [Warning] [MY-010929] [Server] Storage engine 'MyISAM' does not support system tables. [mysql.columns_priv].
2019-06-18T14:11:49.719576Z0 [Warning] [MY-010929] [Server] Storage engine 'MyISAM' does not support system tables. [mysql.procs_priv].
2019-06-18T14:11:49.719587Z0 [Warning] [MY-010929] [Server] Storage engine 'MyISAM' does not support system tables. [mysql.proxies_priv].
2019-06-18T14:11:49.720019Z0 [ERROR] [MY-013143] [Server] Column count of mysql.user is wrong. Expected 51, found 45. The table is probablycorrupted
2019-06-18T14:11:49.720107Z0 [Warning] [MY-010966] [Server] ACL table mysql.role_edges missing. Some operationsmay fail.
2019-06-18T14:11:49.720125Z0 [Warning] [MY-010966] [Server] ACL table mysql.default_roles missing. Some operationsmay fail.
2019-06-18T14:11:49.720135Z0 [Warning] [MY-010966] [Server] ACL table mysql.global_grants missing. Some operationsmay fail.
2019-06-18T14:11:49.720143Z0 [Warning] [MY-010966] [Server] ACL table mysql.password_history missing. Some operationsmay fail.
2019-06-18T14:11:49.721700Z0 [ERROR] [MY-010965] [Server] Missing system table mysql.global_grants;please run mysql_upgradeto create it.
2019-06-18T14:11:49.727806Z0 [Warning] [MY-010727] [Server] System table 'func'is expectedto be transactional.
2019-06-18T14:11:49.729669Z0 [Warning] [MY-010405] [Repl] Info table is not ready to be used. Table 'mysql.slave_master_info'cannot be opened.
2019-06-18T14:11:49.729696Z0 [ERROR] [MY-010422] [Repl] Error in checking mysql.slave_master_info repository info type of TABLE.
2019-06-18T14:11:49.729707Z0 [ERROR] [MY-010415] [Repl] Error creating master info: Error checkingrepositories.
2019-06-18T14:11:49.729716Z0 [ERROR] [MY-010426] [Repl] Slave: Failed to initialize the master info structurefor channel''; its record may still be present in 'mysql.slave_master_info'table, consider deleting it.
2019-06-18T14:11:49.729735Z0 [ERROR] [MY-010529] [Repl] Failed to create or recover replication info repositories.
2019-06-18T14:11:49.732745Z0 [System] [MY-010931][Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.15-6' socket: '/var/lib/mysql/mysql.sock' port: 3306 Percona Server (GPL),Release 6, Revision 63abd08.
2019-06-18T14:11:49.750837Z0 [System] [MY-011323][Server] X Plugin ready for connections. Socket: '/var/lib/mysql/mysqlx.sock'bind-address:'::' port: 33060
© 2019 Percona36
Run mysql_upgrade (8.0.15-6)
[root@localhost ~]# screen -r download_airline
Checking server version.
Running queries to upgrade MySQL server.
Upgrading system table data.
Checking system database.
mysql.default_roles OK
mysql.engine_cost OK
…
Found outdated sys schema version 1.5.1.
Upgrading the sys schema.
Checking databases.
airline.ontime OK
sys.sys_config OK
Upgrade process completed successfully.
Checking if update is needed.
© 2019 Percona37
Best practices
• Upgrade slaves first
• Beware of optimizer changes
• Watch default values
• Pay attention to reserve words
• Inspect character sets, file types
• Prepare tooling, backups and monitoring in advance
• Plan your rollback scenarios
© 2019 Percona38
Latest news on MySQL 8.0.X
Minor versions aren’t minor anymore
© 2019 Percona39
MySQL 8.0.16
• 8.0.0 to 8.0.5 Several Bugs Fixed
• 8.0.11 Deprecates uft8mb3
• 8.0.12 Improves performance_schema defaults
• 8.0.13 Major deprecations InnoDB, Partitioning
• 8.0.14 MySQL allows dual passwords
• 8.0.15 Bugs Fixed
• InnoDB: After a checkpoint operation persisted modifications to data dictionary metadata, there was potential
for new metadata changes to be lost under certain circumstances. (Bug #29120297)
• Group Replication was unable to function in the 8.0.14 release of MySQL Server if IPv6 support was disabled at
the operating system level, even if the replication group did not use any IPv6 addresses. The issue is fixed by this
release of MySQL Server, 8.0.15. (Bug #29249542, Bug #94004)
• If MySQL was running on the host system and within Docker, it was not possible to update or remove MySQL on
the host system. (Bug #28244773, Bug #91405)8.0.0 to 8.0.11 several bug fixes
• 8.0.16 Several changes made to account-management capabilities, deprecation of mysql_upgrade.
• 8.0.17/18 aren’t GA yet
© 2019 Percona40
Percona Server for MySQL 8.0.13
• Faster and more consistently run queries
• Enhanced security with binary log (binlog) encryption and data-
at-rest encryption
• MyRocks, TokuDB Storage Engines
• InnoDB Full-Text Search Improvements
• Extra Hast/Digest Functions
• Improved diagnostics with instrumentation and troubleshooting
features
© 2019 Percona41
USE CODE
UNIVERSITY
FOR A 20%
DISCOUNT
Call for papers open June 21 through July 15!
© 2019 Percona42
● Write for our community blog
percona.com/community-blog
● Join in with our community forums
percona.com/forums
● Contribute to our open source projects
Join in: Percona Community
© 2019 Percona43
We are hiring!
● We are a remote first company
● Current EMEA roles:
○ Software Engineer with C/C++
○ MySQL DBA
○ Build/Release Engineer
○ Technical Account Manager
● We offer $1000 for successful referrals - to anyone!
● See percona.com/careers for more info or talk to us
today!
© 2019 Percona44
References and Links
• Automatic Upgrade and New Error Logging in MySQL 8.0
• MySQL Shell - A DevOps-engineer day with MySQL’s
development and administration tool
• Upgrading to MySQL 8.0? Here is what you need to know…
• Changes in MySQL 8.0
• The complete list of new features in MySQL 8.0
• Reducing Risk When Upgrading MySQL
• Changes in MySQL 8.0
• MySQL 8.0.16: mysql_upgrade is going away
© 2019 Percona45
Credits
• @lefred for answering my numerous questions
• My team at Percona helping review this presentation
DATABASE PERFORMANCE
MATTERS
Database Performance MattersDatabase Performance MattersDatabase Performance MattersDatabase Performance Matters
Champions of Unbiased
Open Source Database Solutions

More Related Content

What's hot

MySQL Performance Schema in 20 Minutes
 MySQL Performance Schema in 20 Minutes MySQL Performance Schema in 20 Minutes
MySQL Performance Schema in 20 Minutes
Sveta Smirnova
 
MySQL Architecture and Engine
MySQL Architecture and EngineMySQL Architecture and Engine
MySQL Architecture and Engine
Abdul Manaf
 

What's hot (20)

MySQL GTID Concepts, Implementation and troubleshooting
MySQL GTID Concepts, Implementation and troubleshooting MySQL GTID Concepts, Implementation and troubleshooting
MySQL GTID Concepts, Implementation and troubleshooting
 
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQLMySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
 
MySQL Performance Schema in 20 Minutes
 MySQL Performance Schema in 20 Minutes MySQL Performance Schema in 20 Minutes
MySQL Performance Schema in 20 Minutes
 
MariaDB Server Performance Tuning & Optimization
MariaDB Server Performance Tuning & OptimizationMariaDB Server Performance Tuning & Optimization
MariaDB Server Performance Tuning & Optimization
 
Handling Schema Changes Using pt-online-schema change.
Handling Schema Changes Using pt-online-schema change.Handling Schema Changes Using pt-online-schema change.
Handling Schema Changes Using pt-online-schema change.
 
MySQL InnoDB Cluster and Group Replication in a nutshell hands-on tutorial
MySQL InnoDB Cluster and Group Replication in a nutshell  hands-on tutorialMySQL InnoDB Cluster and Group Replication in a nutshell  hands-on tutorial
MySQL InnoDB Cluster and Group Replication in a nutshell hands-on tutorial
 
Evolution of MySQL Parallel Replication
Evolution of MySQL Parallel Replication Evolution of MySQL Parallel Replication
Evolution of MySQL Parallel Replication
 
Top 10 Mistakes When Migrating From Oracle to PostgreSQL
Top 10 Mistakes When Migrating From Oracle to PostgreSQLTop 10 Mistakes When Migrating From Oracle to PostgreSQL
Top 10 Mistakes When Migrating From Oracle to PostgreSQL
 
Query Optimization with MySQL 8.0 and MariaDB 10.3: The Basics
Query Optimization with MySQL 8.0 and MariaDB 10.3: The BasicsQuery Optimization with MySQL 8.0 and MariaDB 10.3: The Basics
Query Optimization with MySQL 8.0 and MariaDB 10.3: The Basics
 
MySQL Architecture and Engine
MySQL Architecture and EngineMySQL Architecture and Engine
MySQL Architecture and Engine
 
MySQL High Availability Solutions
MySQL High Availability SolutionsMySQL High Availability Solutions
MySQL High Availability Solutions
 
MySQL Performance Schema in Action: the Complete Tutorial
MySQL Performance Schema in Action: the Complete TutorialMySQL Performance Schema in Action: the Complete Tutorial
MySQL Performance Schema in Action: the Complete Tutorial
 
PL22 - Backup and Restore Performance.pptx
PL22 - Backup and Restore Performance.pptxPL22 - Backup and Restore Performance.pptx
PL22 - Backup and Restore Performance.pptx
 
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)
 
MySQL Shell for Database Engineers
MySQL Shell for Database EngineersMySQL Shell for Database Engineers
MySQL Shell for Database Engineers
 
ClickHouse Features for Advanced Users, by Aleksei Milovidov
ClickHouse Features for Advanced Users, by Aleksei MilovidovClickHouse Features for Advanced Users, by Aleksei Milovidov
ClickHouse Features for Advanced Users, by Aleksei Milovidov
 
Redo log improvements MYSQL 8.0
Redo log improvements MYSQL 8.0Redo log improvements MYSQL 8.0
Redo log improvements MYSQL 8.0
 
MariaDB 10.11 key features overview for DBAs
MariaDB 10.11 key features overview for DBAsMariaDB 10.11 key features overview for DBAs
MariaDB 10.11 key features overview for DBAs
 
MySQL innoDB split and merge pages
MySQL innoDB split and merge pagesMySQL innoDB split and merge pages
MySQL innoDB split and merge pages
 
MySQL Index Cookbook
MySQL Index CookbookMySQL Index Cookbook
MySQL Index Cookbook
 

Similar to How to upgrade like a boss to my sql 8.0?

The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...
The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...
The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...
Geir Høydalsvik
 

Similar to How to upgrade like a boss to my sql 8.0? (20)

Mysql ecosystem in 2019
Mysql ecosystem in 2019Mysql ecosystem in 2019
Mysql ecosystem in 2019
 
Automatic upgrade and new error logging in my sql 8.0
Automatic upgrade and new error logging in my sql 8.0Automatic upgrade and new error logging in my sql 8.0
Automatic upgrade and new error logging in my sql 8.0
 
Upgrading to my sql 8.0
Upgrading to my sql 8.0Upgrading to my sql 8.0
Upgrading to my sql 8.0
 
MySQL 5.7 what's new
MySQL 5.7 what's newMySQL 5.7 what's new
MySQL 5.7 what's new
 
Mysql ecosystem in 2018
Mysql ecosystem in 2018Mysql ecosystem in 2018
Mysql ecosystem in 2018
 
제3회난공불락 오픈소스 인프라세미나 - MySQL
제3회난공불락 오픈소스 인프라세미나 - MySQL제3회난공불락 오픈소스 인프라세미나 - MySQL
제3회난공불락 오픈소스 인프라세미나 - MySQL
 
MySQL 5.7: What's New, Nov. 2015
MySQL 5.7: What's New, Nov. 2015MySQL 5.7: What's New, Nov. 2015
MySQL 5.7: What's New, Nov. 2015
 
What's New in MySQL 5.7
What's New in MySQL 5.7What's New in MySQL 5.7
What's New in MySQL 5.7
 
MySQL :What's New #GIDS16
MySQL :What's New #GIDS16MySQL :What's New #GIDS16
MySQL :What's New #GIDS16
 
Analyzing MySQL Logs with ClickHouse, by Peter Zaitsev
Analyzing MySQL Logs with ClickHouse, by Peter ZaitsevAnalyzing MySQL Logs with ClickHouse, by Peter Zaitsev
Analyzing MySQL Logs with ClickHouse, by Peter Zaitsev
 
Netherlands Tech Tour - 07 MySQL Whats upcoming in 5.7
Netherlands Tech Tour - 07 MySQL Whats upcoming in 5.7Netherlands Tech Tour - 07 MySQL Whats upcoming in 5.7
Netherlands Tech Tour - 07 MySQL Whats upcoming in 5.7
 
MySQL Ecosystem in 2020
MySQL Ecosystem in 2020MySQL Ecosystem in 2020
MySQL Ecosystem in 2020
 
My sql 56_roadmap_april2012
My sql 56_roadmap_april2012My sql 56_roadmap_april2012
My sql 56_roadmap_april2012
 
MySQL 5.6, news in 5.7 and our HA options
MySQL 5.6, news in 5.7 and our HA optionsMySQL 5.6, news in 5.7 and our HA options
MySQL 5.6, news in 5.7 and our HA options
 
MySQL in oracle_environments(Part 2): MySQL Enterprise Monitor & Oracle Enter...
MySQL in oracle_environments(Part 2): MySQL Enterprise Monitor & Oracle Enter...MySQL in oracle_environments(Part 2): MySQL Enterprise Monitor & Oracle Enter...
MySQL in oracle_environments(Part 2): MySQL Enterprise Monitor & Oracle Enter...
 
The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...
The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...
The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...
 
MySQL Performance Tuning. Part 1: MySQL Configuration (includes MySQL 5.7)
MySQL Performance Tuning. Part 1: MySQL Configuration (includes MySQL 5.7)MySQL Performance Tuning. Part 1: MySQL Configuration (includes MySQL 5.7)
MySQL Performance Tuning. Part 1: MySQL Configuration (includes MySQL 5.7)
 
Databases in the Hosted Cloud
Databases in the Hosted CloudDatabases in the Hosted Cloud
Databases in the Hosted Cloud
 
Tungsten Webinar: v6 & v7 Release Recap, and Beyond
Tungsten Webinar: v6 & v7 Release Recap, and BeyondTungsten Webinar: v6 & v7 Release Recap, and Beyond
Tungsten Webinar: v6 & v7 Release Recap, and Beyond
 
Automatic upgrade and new error logging in my sql 8.0 oct
Automatic upgrade and new error logging in my sql 8.0 octAutomatic upgrade and new error logging in my sql 8.0 oct
Automatic upgrade and new error logging in my sql 8.0 oct
 

More from Alkin Tezuysal

Integrating best of breed open source tools to vitess orchestrator pleu21
Integrating best of breed open source tools to vitess  orchestrator   pleu21Integrating best of breed open source tools to vitess  orchestrator   pleu21
Integrating best of breed open source tools to vitess orchestrator pleu21
Alkin Tezuysal
 

More from Alkin Tezuysal (20)

Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024
Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024
Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024
 
FOSSASIA - MySQL Cookbook 4e Journey APR 2023.pdf
FOSSASIA - MySQL Cookbook 4e Journey APR 2023.pdfFOSSASIA - MySQL Cookbook 4e Journey APR 2023.pdf
FOSSASIA - MySQL Cookbook 4e Journey APR 2023.pdf
 
MySQL Ecosystem in 2023 - FOSSASIA'23 - Alkin.pptx.pdf
MySQL Ecosystem in 2023 - FOSSASIA'23 - Alkin.pptx.pdfMySQL Ecosystem in 2023 - FOSSASIA'23 - Alkin.pptx.pdf
MySQL Ecosystem in 2023 - FOSSASIA'23 - Alkin.pptx.pdf
 
How OLTP to OLAP Archival Demystified
How OLTP to OLAP Archival DemystifiedHow OLTP to OLAP Archival Demystified
How OLTP to OLAP Archival Demystified
 
MySQL Cookbook: Recipes for Developers, Alkin Tezuysal and Sveta Smirnova - P...
MySQL Cookbook: Recipes for Developers, Alkin Tezuysal and Sveta Smirnova - P...MySQL Cookbook: Recipes for Developers, Alkin Tezuysal and Sveta Smirnova - P...
MySQL Cookbook: Recipes for Developers, Alkin Tezuysal and Sveta Smirnova - P...
 
My first 90 days with ClickHouse.pdf
My first 90 days with ClickHouse.pdfMy first 90 days with ClickHouse.pdf
My first 90 days with ClickHouse.pdf
 
KubeCon_NA_2021
KubeCon_NA_2021KubeCon_NA_2021
KubeCon_NA_2021
 
Integrating best of breed open source tools to vitess orchestrator pleu21
Integrating best of breed open source tools to vitess  orchestrator   pleu21Integrating best of breed open source tools to vitess  orchestrator   pleu21
Integrating best of breed open source tools to vitess orchestrator pleu21
 
Vitess: Scalable Database Architecture - Kubernetes Community Days Africa Ap...
Vitess: Scalable Database Architecture -  Kubernetes Community Days Africa Ap...Vitess: Scalable Database Architecture -  Kubernetes Community Days Africa Ap...
Vitess: Scalable Database Architecture - Kubernetes Community Days Africa Ap...
 
How to shard MariaDB like a pro - FOSDEM 2021
How to shard MariaDB like a pro  - FOSDEM 2021How to shard MariaDB like a pro  - FOSDEM 2021
How to shard MariaDB like a pro - FOSDEM 2021
 
Vitess - Data on Kubernetes
Vitess -  Data on Kubernetes  Vitess -  Data on Kubernetes
Vitess - Data on Kubernetes
 
Introduction to Vitess on Kubernetes for MySQL - Webinar
Introduction to Vitess on Kubernetes for MySQL -  WebinarIntroduction to Vitess on Kubernetes for MySQL -  Webinar
Introduction to Vitess on Kubernetes for MySQL - Webinar
 
When is Myrocks good? 2020 Webinar Series
When is Myrocks good? 2020 Webinar SeriesWhen is Myrocks good? 2020 Webinar Series
When is Myrocks good? 2020 Webinar Series
 
Mysql 8 vs Mariadb 10.4 Webinar 2020 Feb
Mysql 8 vs Mariadb 10.4 Webinar 2020 FebMysql 8 vs Mariadb 10.4 Webinar 2020 Feb
Mysql 8 vs Mariadb 10.4 Webinar 2020 Feb
 
Myrocks in the wild wild west! FOSDEM 2020
Myrocks in the wild wild west! FOSDEM 2020Myrocks in the wild wild west! FOSDEM 2020
Myrocks in the wild wild west! FOSDEM 2020
 
Mysql 8 vs Mariadb 10.4 Highload++ 2019
Mysql 8 vs Mariadb 10.4 Highload++ 2019Mysql 8 vs Mariadb 10.4 Highload++ 2019
Mysql 8 vs Mariadb 10.4 Highload++ 2019
 
When is MyRocks good?
When is MyRocks good? When is MyRocks good?
When is MyRocks good?
 
PXC (Xtradb) Failure and Recovery
PXC (Xtradb) Failure and RecoveryPXC (Xtradb) Failure and Recovery
PXC (Xtradb) Failure and Recovery
 
Securing your database servers from external attacks
Securing your database servers from external attacksSecuring your database servers from external attacks
Securing your database servers from external attacks
 

Recently uploaded

➥🔝9953056974 🔝▻ Anand Vihar Call-girl in Women Seeking Men 🔝Delhi🔝 NCR
➥🔝9953056974 🔝▻ Anand Vihar Call-girl in Women Seeking Men 🔝Delhi🔝 NCR➥🔝9953056974 🔝▻ Anand Vihar Call-girl in Women Seeking Men 🔝Delhi🔝 NCR
➥🔝9953056974 🔝▻ Anand Vihar Call-girl in Women Seeking Men 🔝Delhi🔝 NCR
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Call Girls in Saket (delhi) call me [8264348440 ] escort service 24X7
Call Girls in Saket (delhi) call me [8264348440 ] escort service 24X7Call Girls in Saket (delhi) call me [8264348440 ] escort service 24X7
Call Girls in Saket (delhi) call me [8264348440 ] escort service 24X7
soniya singh
 
Call Girls in Karachi || 03274100048 || 50+ Hot Sexy Girls Available 24/7
Call Girls in Karachi || 03274100048 || 50+ Hot Sexy Girls Available 24/7Call Girls in Karachi || 03274100048 || 50+ Hot Sexy Girls Available 24/7
Call Girls in Karachi || 03274100048 || 50+ Hot Sexy Girls Available 24/7
Sana Rajpoot
 
Call Girls in Pakistan || 🥵 03280288848 || Pakistan Escorts
Call Girls in Pakistan || 🥵 03280288848 || Pakistan EscortsCall Girls in Pakistan || 🥵 03280288848 || Pakistan Escorts
Call Girls in Pakistan || 🥵 03280288848 || Pakistan Escorts
Ifra Zohaib
 
Call Girls In Lahore || 03274100048 ||Lahore Call Girl Available 24/7
Call Girls In Lahore || 03274100048 ||Lahore Call Girl Available 24/7Call Girls In Lahore || 03274100048 ||Lahore Call Girl Available 24/7
Call Girls In Lahore || 03274100048 ||Lahore Call Girl Available 24/7
Sana Rajpoot
 

Recently uploaded (20)

Shimla 💋 Call Girl 9748763073 Call Girls in Shimla Escort service book now
Shimla 💋  Call Girl 9748763073 Call Girls in Shimla Escort service book nowShimla 💋  Call Girl 9748763073 Call Girls in Shimla Escort service book now
Shimla 💋 Call Girl 9748763073 Call Girls in Shimla Escort service book now
 
Thane 💋 Call Girls 7091864438 Call Girls in Thane Escort service book now
Thane 💋 Call Girls 7091864438 Call Girls in Thane Escort service book nowThane 💋 Call Girls 7091864438 Call Girls in Thane Escort service book now
Thane 💋 Call Girls 7091864438 Call Girls in Thane Escort service book now
 
➥🔝9953056974 🔝▻ Anand Vihar Call-girl in Women Seeking Men 🔝Delhi🔝 NCR
➥🔝9953056974 🔝▻ Anand Vihar Call-girl in Women Seeking Men 🔝Delhi🔝 NCR➥🔝9953056974 🔝▻ Anand Vihar Call-girl in Women Seeking Men 🔝Delhi🔝 NCR
➥🔝9953056974 🔝▻ Anand Vihar Call-girl in Women Seeking Men 🔝Delhi🔝 NCR
 
Bhopal ❤CALL GIRL 9874883814 ❤CALL GIRLS IN Bhopal ESCORT SERVICE❤CALL GIRL I...
Bhopal ❤CALL GIRL 9874883814 ❤CALL GIRLS IN Bhopal ESCORT SERVICE❤CALL GIRL I...Bhopal ❤CALL GIRL 9874883814 ❤CALL GIRLS IN Bhopal ESCORT SERVICE❤CALL GIRL I...
Bhopal ❤CALL GIRL 9874883814 ❤CALL GIRLS IN Bhopal ESCORT SERVICE❤CALL GIRL I...
 
NAGPUR CALL GIRL 7857803690 LOW PRICE ESCORT SERVICE
NAGPUR CALL GIRL 7857803690  LOW PRICE  ESCORT SERVICENAGPUR CALL GIRL 7857803690  LOW PRICE  ESCORT SERVICE
NAGPUR CALL GIRL 7857803690 LOW PRICE ESCORT SERVICE
 
Call Girls in Saket (delhi) call me [8264348440 ] escort service 24X7
Call Girls in Saket (delhi) call me [8264348440 ] escort service 24X7Call Girls in Saket (delhi) call me [8264348440 ] escort service 24X7
Call Girls in Saket (delhi) call me [8264348440 ] escort service 24X7
 
Call Girls in Karachi || 03274100048 || 50+ Hot Sexy Girls Available 24/7
Call Girls in Karachi || 03274100048 || 50+ Hot Sexy Girls Available 24/7Call Girls in Karachi || 03274100048 || 50+ Hot Sexy Girls Available 24/7
Call Girls in Karachi || 03274100048 || 50+ Hot Sexy Girls Available 24/7
 
Nagpur ❤CALL GIRL 9874883814 ❤CALL GIRLS IN nagpur ESCORT SERVICE❤CALL GIRL I...
Nagpur ❤CALL GIRL 9874883814 ❤CALL GIRLS IN nagpur ESCORT SERVICE❤CALL GIRL I...Nagpur ❤CALL GIRL 9874883814 ❤CALL GIRLS IN nagpur ESCORT SERVICE❤CALL GIRL I...
Nagpur ❤CALL GIRL 9874883814 ❤CALL GIRLS IN nagpur ESCORT SERVICE❤CALL GIRL I...
 
Call Girls in Pakistan || 🥵 03280288848 || Pakistan Escorts
Call Girls in Pakistan || 🥵 03280288848 || Pakistan EscortsCall Girls in Pakistan || 🥵 03280288848 || Pakistan Escorts
Call Girls in Pakistan || 🥵 03280288848 || Pakistan Escorts
 
Rajkot Call Girls Contact Number +919358341802 Call Girls In Rajkot
Rajkot Call Girls Contact Number +919358341802 Call Girls In RajkotRajkot Call Girls Contact Number +919358341802 Call Girls In Rajkot
Rajkot Call Girls Contact Number +919358341802 Call Girls In Rajkot
 
9999266834 Call Girls In Noida Sector 37 (Delhi) Call Girl Service
9999266834 Call Girls In Noida Sector 37 (Delhi) Call Girl Service9999266834 Call Girls In Noida Sector 37 (Delhi) Call Girl Service
9999266834 Call Girls In Noida Sector 37 (Delhi) Call Girl Service
 
Chennai ❣️ Call Girl 97487*63073 Call Girls in Chennai Escort service book now
Chennai ❣️ Call Girl 97487*63073 Call Girls in Chennai Escort service book nowChennai ❣️ Call Girl 97487*63073 Call Girls in Chennai Escort service book now
Chennai ❣️ Call Girl 97487*63073 Call Girls in Chennai Escort service book now
 
Hire 💕 8617370543 Uttara Kannada Call Girls Service Call Girls Agency
Hire 💕 8617370543 Uttara Kannada Call Girls Service Call Girls AgencyHire 💕 8617370543 Uttara Kannada Call Girls Service Call Girls Agency
Hire 💕 8617370543 Uttara Kannada Call Girls Service Call Girls Agency
 
Call Girls In Lahore || 03274100048 ||Lahore Call Girl Available 24/7
Call Girls In Lahore || 03274100048 ||Lahore Call Girl Available 24/7Call Girls In Lahore || 03274100048 ||Lahore Call Girl Available 24/7
Call Girls In Lahore || 03274100048 ||Lahore Call Girl Available 24/7
 
Guwahati ❣️ Call Girl 97487*63073 Call Girls in Guwahati Escort service book now
Guwahati ❣️ Call Girl 97487*63073 Call Girls in Guwahati Escort service book nowGuwahati ❣️ Call Girl 97487*63073 Call Girls in Guwahati Escort service book now
Guwahati ❣️ Call Girl 97487*63073 Call Girls in Guwahati Escort service book now
 
Indore ❣️Call Girl 97487*63073 Call Girls in Indore Escort service book now
Indore  ❣️Call Girl 97487*63073 Call Girls in Indore Escort service book nowIndore  ❣️Call Girl 97487*63073 Call Girls in Indore Escort service book now
Indore ❣️Call Girl 97487*63073 Call Girls in Indore Escort service book now
 
Hyderabad ❤CALL GIRL 9874883814 ❤CALL GIRLS IN Hyderabad ESCORT SERVICE❤CALL ...
Hyderabad ❤CALL GIRL 9874883814 ❤CALL GIRLS IN Hyderabad ESCORT SERVICE❤CALL ...Hyderabad ❤CALL GIRL 9874883814 ❤CALL GIRLS IN Hyderabad ESCORT SERVICE❤CALL ...
Hyderabad ❤CALL GIRL 9874883814 ❤CALL GIRLS IN Hyderabad ESCORT SERVICE❤CALL ...
 
UJJAIN CALL GIRL 7857803690 LOW PRICE ESCORT SERVICE
UJJAIN CALL GIRL 7857803690  LOW PRICE  ESCORT SERVICEUJJAIN CALL GIRL 7857803690  LOW PRICE  ESCORT SERVICE
UJJAIN CALL GIRL 7857803690 LOW PRICE ESCORT SERVICE
 
Bhopal ❤CALL GIRL 9874883814 ❤CALL GIRLS IN Bhopal ESCORT SERVICE❤CALL GIRL IN
Bhopal ❤CALL GIRL 9874883814 ❤CALL GIRLS IN Bhopal ESCORT SERVICE❤CALL GIRL INBhopal ❤CALL GIRL 9874883814 ❤CALL GIRLS IN Bhopal ESCORT SERVICE❤CALL GIRL IN
Bhopal ❤CALL GIRL 9874883814 ❤CALL GIRLS IN Bhopal ESCORT SERVICE❤CALL GIRL IN
 
Silchar Call Girl 97487*63073 Call Girls in Silchar Escort service book now
Silchar Call Girl 97487*63073 Call Girls in Silchar Escort service book nowSilchar Call Girl 97487*63073 Call Girls in Silchar Escort service book now
Silchar Call Girl 97487*63073 Call Girls in Silchar Escort service book now
 

How to upgrade like a boss to my sql 8.0?

  • 1. © 2019 Percona1 Alkin TEZUYSAL How to upgrade like a boss to MySQL 8.0? Upgrading successfully to latest version. Senior Technical Manager DataOps, Barcelona June 2019
  • 2. © 2019 Percona2 Who am I? @ask_dba Born to Sail, Forced to Work ▪ Open Source Database Evangelist ▪ Global Database Operations Expert ▪ Cloud Infrastructure Architect AWS ▪ Inspiring Technical and Strategic Leader ▪ Creative Team Builder ▪ Speaker, Mentor, and Coach
  • 3. © 2019 Percona3 About Percona Solutions for your success with MySQL and MongoDB Support, Managed Services, Consulting, Software Our Software is 100% Open Source Support Broad Ecosystem – MySQL, MariaDB, Amazon RDS, MongoDB, PostgreSQL In Business over 10 years More than 3000 customers, including top Internet companies and enterprises
  • 4. © 2019 Percona4 Most Recent Percona Software updates May ‘19 Percona Server for MySQL 8.0.15-6 Percona Server for MongoDB 4.0.9-4 Percona XtraDB Cluster 5.7.25-31.35 Percona XtraBackup 8.0.6 Percona Monitoring and Management 1.17.1 Percona Toolkit 3.0.13 Percona Kubernetes Operators!
  • 5. © 2019 Percona5 Agenda Why even upgrade? How we always did it in the past? MySQL 8.0 is great! How to upgrade? Nice things about MySQL Shell Latest news on MySQL 8.0 Conclusion Q&A
  • 6. © 2019 Percona6 Why even upgrade? Feature rich and secure version is always a right choice.
  • 7. © 2019 Percona7 Cause MySQL 8 is Good  • SQL DML • Window Functions, Recursive/Non-Recursive CTEs, Derived Tables,… • SQL DDL • Instant ADD/RENAME Column,… • INDEXES • Invisible/Descending/Functional Indexes,… • FUNCTIONS • Regexp_%, UUID,… • JSON • JSON_%, Sorting, In-place
  • 8. © 2019 Percona8 Cause MySQL 8 is Better  • GIS • Spatial Reference Systems, ST functions, Geography Support • Character Sets and Collations • UTF-8, Unicode 9.0, … • Information Schema • Views over Data Dictionary, New Views, … • Performance Schema • Indexes, Error handling, Data Locks, Latency histograms • Show • Hidden columns, Index information
  • 9. © 2019 Percona9 Cause MySQL 8 is Great  • Optimizer • Histograms, Hints, • InnoDB • Redo Log, Encryption, … • Data Dictionary and Upgrade • Transactional DD, Meta Data in InnoDB, Auto Upgrade • Replication / Group Replication • Binlog Encryption, Atomic DDL Recovery / Savepoints, Switchovers, Auto- rejoin • Security, Shell, Router and many more features.
  • 10. © 2019 Percona10 Pros of upgrading to new version • Rich features (Business specific needs) • Technical advantages (QPS, Throughput, Administration) • Avoid multiple version upgrades • Bug fixes • Security and Compliance • Community and Vendor support
  • 11. © 2019 Percona11 Cons of upgrading to new version • Risks of hitting unknown issues • Different behavior and results • Slower throughput due to • sql_mode, Optimizer, Charset, etc • Amount of time and material needed for upgrade project • Downtime that is scheduled to happen • Downgrade from MySQL 8.0 to MySQL 5.7 is not supported.
  • 12. © 2019 Percona12 How we always upgraded? The good old-fashioned way, maybe.
  • 13. © 2019 Percona13 Traditionally pre-V8 • Major versions only (Ascending Order) • 5.1  5.5 • 5.5  5.6 • 5.6  5.7 • Set innodb_fast_shutdown=0 • Stop existing MySQL server • Change binaries to new version • Adjust config (my.cnf) to new version • Start MySQL server • Run mysql_upgrade(Time Consuming) • Restart MySQL Server (Additional Downtime)
  • 14. © 2019 Percona14 MySQL 8.0 Upgrade Process Testing Slow Query Log pt-upgrade MySQL Shell Technique Side by Side In-place Cutover Failover to new topology Migrate over time
  • 15. © 2019 Percona15 • Review release notes • Changes in defaults • Features of new version • Removed syntax • Deprecated functions (GIS) • Data restrictions • New keywords • Changed behavior Before you even start Testing
  • 16. © 2019 Percona16 Setup a New Testing Environment ▪ Setup slaves as replication •Keep it for a month on no-access server •Try read testing batch testing •Verify schema / connectivity compatibility •Use ProxySQL (mirroring, traffic routing) •Inspect Slow Query Log Build Independent Cluster ▪ Query testing •Capture slow queries and digest (pt- query-digest) •pt-upgrade ▪ Application Testing •Verify results Testing Phase
  • 17. © 2019 Percona17 What does it achieve? ▪ Identify: •Query execution time •Query row counts •Query checksum How does it achieve? ▪ Writer Handle – Master Write ▪ Reader Handle (Read Only) ▪ Master Reader Handle ▪ Reporting Reader Handle Run pt-upgrade to compare queries
  • 18. © 2019 Percona18 Steps to verify via pt-upgrade (High Level) 1. Setup two slaves with same hardware one of them MySQL 8 2. Capture queries (long_query_time=0) for 24 hours 3. Detach slaves and run pt-query-digest (pt-query-digest -- output=slowlog --sample=10 --no-report > slow.log) 4. Run pt-upgrade with (--max-examples=1) 5. Repeat (after with warm buffer pool) 6. Review and analyze results
  • 19. © 2019 Percona19 Steps to verify via pt-upgrade RO (Detailed) 1. $ pt-query-digest --sample 25 --no-report -- output slowlog <slow_log_file> > slow_log_25_samples.log 2. $pt-upgrade h=Test1 h=Test2 --max-examples=1 slow_log_25_samples.log 1> pt- upgrade_results.out 2> pt-upgrade_results.err
  • 20. © 2019 Percona20 Steps to verify via pt-upgrade RW (Detailed) 1. $ pt-query-digest --sample 25 --no-report -- output slowlog <slow_log_file> > slow_log_25_samples.log 2. $ pt-upgrade h=Test1 h=Test2 --no-read-only -- max-examples=1 slow_log_25_samples.log 1> pt- upgrade_results.out 2> pt-upgrade_results.err
  • 21. © 2019 Percona21 Summary pt-upgrade testing Capture queries for 1-2 hours during peak traffic from the master with long_query_time=0, log_slow_rate_limit=1. Prepare a file for pt- upgrade testing with 50 samples of each query. • Use pt-query-digest to prepare samples. Stop replication on both servers at the same position. • The replication will remain stopped for the duration of pt-upgrade testing. Run pt-upgrade read_only test with --save-results option. •The first test to warm up the buffer pool. The second test to capture actual results.
  • 22. © 2019 Percona22 MySQL Shell in a nutshell Nice things about MySQL Shell
  • 23. © 2019 Percona23 How can MySQL Shell help? (upgrade_checker) • Built-in function util.checkForServerUpgrade() The MySQL server at localhost:33060, version 5.7.26-29 - Percona Server (GPL), Release 29, Revision 11ad961, will now be checked for compatibility issues for upgrade to MySQL 8.0.16… 1) Usage of old temporal type No issues found 2) Usage of db objects with names conflicting with reserved keywords in 8.0 No issues found 3) Usage of utf8mb3 charset No issues found 4) Table names in the mysql schema conflicting with new tables in 8.0 No issues found 5) Foreign key constraint names longer than 64 characters No issues found …
  • 24. © 2019 Percona24 MySQL Shell can even do more (mydba) mysqlsh --py root@localhost import sys sys.path.append('/home/fred/workspace/mysql-shell-mydba') import mydba MySQL localhost:33060+ ssl Py > mydba.getProcedures('airline') Total: 0 MySQL localhost:33060+ ssl Py > mydba.getFragmentedTables() +--------------------------------+------------+---------+------------+------------+------------+-------------------+ | Table | Engine | # Rows | Data Size | Idx Size | Total Size | Data Free | +--------------------------------+------------+---------+------------+------------+------------+-------------------+ | information_schema.COLUMNS | InnoDB | None | 0.00G | 0.00G | 0.00G | 8.00MB (100%) | | information_schema.EVENTS | InnoDB | None | 0.00G | 0.00G | 0.00G | 8.00MB (100%) | | information_schema.OPTIMIZER_TRACE | InnoDB | None | 0.00G | 0.00G | 0.00G | 8.00MB (100%) | +--------------------------------+------------+---------+------------+------------+------------+-------------------+ https://github.com/lefred/mysql-shell-mydba
  • 25. © 2019 Percona25 MySQL Shell can even do more (innotop) mysqlsh --py root@localhost import sys sys.path.append('/home/fred/workspace/mysql-shell-innotop') import innotop innotop.session_processlist.run() MySQL Shell | Percona Server (GPL), Release 29, Revision 11ad961 5.7.26-29 Tuesday 18 June 10:46:23 Cmd Thd Conn Pid State User Db Time Lock Time Query Sleep 8002 7972 18925 None root@localhost airline None 96.07 ms None https://github.com/lefred/mysql-shell-innotop
  • 26. © 2019 Percona26 Upgrade Checker will identify • Reserved Data Dictionary table names (catalogs) • Old Style Decimals, Varchar, Time/Datetime/Timestamp • CHECK TABLE {table_name} FOR UPGRADE • Mysqlcheck • Check-upgrade in 5.7 • Use REPAIR TABLE & Dump/Restore • Partitioned tables using non-native partitioning was deprecated in 5.7 removed in 8.0 • Switch to native partitioning or not
  • 27. © 2019 Percona27 Upgrade Checker will NOT identify • Removed syntax • Deprecated functions (GIS) • Data restrictions • New keywords • Changed behavior • Change in defaults
  • 28. © 2019 Percona28 MySQL Upgrade 5.7 to 8.0 (In-place) • 5.7 to 8.0 • Stop existing MySQL server • Change binaries to new version • Adjust config (my.cnf) to new version • Start MySQL server • Automatic upgrade • New mysqld options • --upgrade=AUTO (default) • --upgrade=NONE (errors if anything needs upgrade) • --upgrade=MINIMAL (to avoid DDL on some system tables) • --upgrade=FORCE • Eliminates issues with Metadata using transactional data dictionary
  • 29. © 2019 Percona29 MySQL Upgrade 5.7 to 8.0 (Replication & Rolling Upgrade) • 5.7 to 8.0 • Stop existing MySQL Slave server • Change binaries to new version • Adjust config (my.cnf) to new version • Start MySQL server • Automatic upgrade • New mysqld options • --upgrade=AUTO (default) • --upgrade=NONE (errors if anything needs upgrade) • --upgrade=MINIMAL (to avoid DDL on some system tables) • --upgrade=FORCE • Eliminates issues with Metadata using transactional data dictionary • Repeat above for minimum of 2 slaves and promote one as master
  • 30. © 2019 Percona30 MySQL 8.0 Upgrade MySQL localhost:33060+ ssl SQL > show global variables like "innodb_fast_shutdown"; +----------------------+-------+ | Variable_name | Value | +----------------------+-------+ | innodb_fast_shutdown | 1 | +----------------------+-------+ 1 row in set (0.0037 sec) MySQL localhost:33060+ ssl SQL > set global innodb_fast_shutdown=0; Query OK, 0 rows affected (0.0007 sec) MySQL localhost:33060+ ssl SQL > show global variables like "innodb_fast_shutdown"; +----------------------+-------+ | Variable_name | Value | +----------------------+-------+ | innodb_fast_shutdown | 0 | +----------------------+-------+ 1 row in set (0.0054 sec)
  • 31. © 2019 Percona31 MySQL 8.0 Packages
  • 32. © 2019 Percona32 MySQL 8.0 yum installation - Repo Install the Percona repository You can install Percona yum repository by running the following command as a root user or with sudo: $ sudo yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm You should see some output such as the following: Retrieving http://www.percona.com/downloads/percona-release/redhat/0.1-6/percona-release-latest.noarch.rpm Preparing... ########################################### [100%] 1:percona-release ########################################### [100%] Enable the repository: $ sudo percona-release setup ps80 Install the packages You can now install Percona Server for MySQL by running: $ sudo yum install percona-server-server
  • 33. © 2019 Percona33 MySQL 8.0 yum installation - Yum Installed: percona-server-server.x86_64 0:8.0.15-6.1.el7 Dependency Installed: percona-server-client.x86_64 0:8.0.15-6.1.el7 percona-server-shared.x86_64 0:8.0.15-6.1.el7 percona-server-shared-compat.x86_64 0:8.0.15-6.1.el7 Complete!
  • 34. © 2019 Percona34 MySQL 8.0 yum installation - Connectivity MySQL localhost:33060+ ssl SQL > s MySQL Shell version 8.0.16 Session type: X Connection Id: 16 Default schema: Current schema: Current user: root@localhost SSL: Cipher in use: ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Using delimiter: ; Server version: 8.0.15-6 Percona Server (GPL), Release 6, Revision 63abd08 Protocol version: X protocol Client library: 8.0.16 Connection: localhost via TCP/IP TCP port: 33060 Server characterset: utf8mb4 Schema characterset: utf8mb4 Client characterset: utf8mb4 Conn. characterset: utf8mb4 Uptime: 2 min 26.0000 sec
  • 35. © 2019 Percona35 MySQL 8.0 yum installation - Errorlog 2019-06-18T14:11:42.790252Z0 [System] [MY-010116][Server] /usr/sbin/mysqld(mysqld 8.0.15-6) startingas process 29198 2019-06-18T14:11:47.731578Z0 [ERROR] [MY-013180] [Server] Function'mysqlx' already exists. 2019-06-18T14:11:47.731590Z0 [Warning] [MY-010736] [Server] Couldn't load plugin named 'mysqlx' with soname 'mysqlx.so'. 2019-06-18T14:11:47.738319Z0 [Warning] [MY-013129] [Server] A message intendedfor a client cannot be sent there as no client-sessionis attached. Therefore,we're sendingthe information to the error-log instead: MY-001287 - 'validate password plugin'is deprecated and will be removed in a future release. Please use validate_password component instead 2019-06-18T14:11:49.700555Z0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. 2019-06-18T14:11:49.709724Z0 [ERROR] [MY-013129] [Server] A message intendedfor a client cannot be sent there as no client-sessionis attached. Therefore,we're sendingthe information to the error-log instead: MY-001146 - Table 'mysql.component'doesn't exist 2019-06-18T14:11:49.709743Z0 [Warning] [MY-013129] [Server] A message intendedfor a client cannot be sent there as no client-sessionis attached. Therefore,we're sendingthe information to the error-log instead: MY-003543 - The mysql.component table is missing or has an incorrect definition. 2019-06-18T14:11:49.719544Z0 [Warning] [MY-010929] [Server] Storage engine 'MyISAM' does not support system tables. [mysql.user]. 2019-06-18T14:11:49.719552Z0 [Warning] [MY-010929] [Server] Storage engine 'MyISAM' does not support system tables. [mysql.db]. 2019-06-18T14:11:49.719561Z0 [Warning] [MY-010929] [Server] Storage engine 'MyISAM' does not support system tables. [mysql.tables_priv]. 2019-06-18T14:11:49.719568Z0 [Warning] [MY-010929] [Server] Storage engine 'MyISAM' does not support system tables. [mysql.columns_priv]. 2019-06-18T14:11:49.719576Z0 [Warning] [MY-010929] [Server] Storage engine 'MyISAM' does not support system tables. [mysql.procs_priv]. 2019-06-18T14:11:49.719587Z0 [Warning] [MY-010929] [Server] Storage engine 'MyISAM' does not support system tables. [mysql.proxies_priv]. 2019-06-18T14:11:49.720019Z0 [ERROR] [MY-013143] [Server] Column count of mysql.user is wrong. Expected 51, found 45. The table is probablycorrupted 2019-06-18T14:11:49.720107Z0 [Warning] [MY-010966] [Server] ACL table mysql.role_edges missing. Some operationsmay fail. 2019-06-18T14:11:49.720125Z0 [Warning] [MY-010966] [Server] ACL table mysql.default_roles missing. Some operationsmay fail. 2019-06-18T14:11:49.720135Z0 [Warning] [MY-010966] [Server] ACL table mysql.global_grants missing. Some operationsmay fail. 2019-06-18T14:11:49.720143Z0 [Warning] [MY-010966] [Server] ACL table mysql.password_history missing. Some operationsmay fail. 2019-06-18T14:11:49.721700Z0 [ERROR] [MY-010965] [Server] Missing system table mysql.global_grants;please run mysql_upgradeto create it. 2019-06-18T14:11:49.727806Z0 [Warning] [MY-010727] [Server] System table 'func'is expectedto be transactional. 2019-06-18T14:11:49.729669Z0 [Warning] [MY-010405] [Repl] Info table is not ready to be used. Table 'mysql.slave_master_info'cannot be opened. 2019-06-18T14:11:49.729696Z0 [ERROR] [MY-010422] [Repl] Error in checking mysql.slave_master_info repository info type of TABLE. 2019-06-18T14:11:49.729707Z0 [ERROR] [MY-010415] [Repl] Error creating master info: Error checkingrepositories. 2019-06-18T14:11:49.729716Z0 [ERROR] [MY-010426] [Repl] Slave: Failed to initialize the master info structurefor channel''; its record may still be present in 'mysql.slave_master_info'table, consider deleting it. 2019-06-18T14:11:49.729735Z0 [ERROR] [MY-010529] [Repl] Failed to create or recover replication info repositories. 2019-06-18T14:11:49.732745Z0 [System] [MY-010931][Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.15-6' socket: '/var/lib/mysql/mysql.sock' port: 3306 Percona Server (GPL),Release 6, Revision 63abd08. 2019-06-18T14:11:49.750837Z0 [System] [MY-011323][Server] X Plugin ready for connections. Socket: '/var/lib/mysql/mysqlx.sock'bind-address:'::' port: 33060
  • 36. © 2019 Percona36 Run mysql_upgrade (8.0.15-6) [root@localhost ~]# screen -r download_airline Checking server version. Running queries to upgrade MySQL server. Upgrading system table data. Checking system database. mysql.default_roles OK mysql.engine_cost OK … Found outdated sys schema version 1.5.1. Upgrading the sys schema. Checking databases. airline.ontime OK sys.sys_config OK Upgrade process completed successfully. Checking if update is needed.
  • 37. © 2019 Percona37 Best practices • Upgrade slaves first • Beware of optimizer changes • Watch default values • Pay attention to reserve words • Inspect character sets, file types • Prepare tooling, backups and monitoring in advance • Plan your rollback scenarios
  • 38. © 2019 Percona38 Latest news on MySQL 8.0.X Minor versions aren’t minor anymore
  • 39. © 2019 Percona39 MySQL 8.0.16 • 8.0.0 to 8.0.5 Several Bugs Fixed • 8.0.11 Deprecates uft8mb3 • 8.0.12 Improves performance_schema defaults • 8.0.13 Major deprecations InnoDB, Partitioning • 8.0.14 MySQL allows dual passwords • 8.0.15 Bugs Fixed • InnoDB: After a checkpoint operation persisted modifications to data dictionary metadata, there was potential for new metadata changes to be lost under certain circumstances. (Bug #29120297) • Group Replication was unable to function in the 8.0.14 release of MySQL Server if IPv6 support was disabled at the operating system level, even if the replication group did not use any IPv6 addresses. The issue is fixed by this release of MySQL Server, 8.0.15. (Bug #29249542, Bug #94004) • If MySQL was running on the host system and within Docker, it was not possible to update or remove MySQL on the host system. (Bug #28244773, Bug #91405)8.0.0 to 8.0.11 several bug fixes • 8.0.16 Several changes made to account-management capabilities, deprecation of mysql_upgrade. • 8.0.17/18 aren’t GA yet
  • 40. © 2019 Percona40 Percona Server for MySQL 8.0.13 • Faster and more consistently run queries • Enhanced security with binary log (binlog) encryption and data- at-rest encryption • MyRocks, TokuDB Storage Engines • InnoDB Full-Text Search Improvements • Extra Hast/Digest Functions • Improved diagnostics with instrumentation and troubleshooting features
  • 41. © 2019 Percona41 USE CODE UNIVERSITY FOR A 20% DISCOUNT Call for papers open June 21 through July 15!
  • 42. © 2019 Percona42 ● Write for our community blog percona.com/community-blog ● Join in with our community forums percona.com/forums ● Contribute to our open source projects Join in: Percona Community
  • 43. © 2019 Percona43 We are hiring! ● We are a remote first company ● Current EMEA roles: ○ Software Engineer with C/C++ ○ MySQL DBA ○ Build/Release Engineer ○ Technical Account Manager ● We offer $1000 for successful referrals - to anyone! ● See percona.com/careers for more info or talk to us today!
  • 44. © 2019 Percona44 References and Links • Automatic Upgrade and New Error Logging in MySQL 8.0 • MySQL Shell - A DevOps-engineer day with MySQL’s development and administration tool • Upgrading to MySQL 8.0? Here is what you need to know… • Changes in MySQL 8.0 • The complete list of new features in MySQL 8.0 • Reducing Risk When Upgrading MySQL • Changes in MySQL 8.0 • MySQL 8.0.16: mysql_upgrade is going away
  • 45. © 2019 Percona45 Credits • @lefred for answering my numerous questions • My team at Percona helping review this presentation
  • 46. DATABASE PERFORMANCE MATTERS Database Performance MattersDatabase Performance MattersDatabase Performance MattersDatabase Performance Matters Champions of Unbiased Open Source Database Solutions