Enviar pesquisa
Carregar
Case Study: MySQL migration from latin1 to UTF-8
•
3 gostaram
•
6,248 visualizações
Olivier DASINI
Seguir
Migration from MySQL database of professional social network Viadeo from latin1 to utf8
Leia menos
Leia mais
Tecnologia
Educação
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 36
Baixar agora
Baixar para ler offline
Recomendados
Upgrade to MySQL 5.6 without downtime
Upgrade to MySQL 5.6 without downtime
Olivier DASINI
Upgrade from MySQL 5.7 to MySQL 8.0
Upgrade from MySQL 5.7 to MySQL 8.0
Olivier DASINI
Redo log improvements MYSQL 8.0
Redo log improvements MYSQL 8.0
Mydbops
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
Olivier DASINI
Optimizing MariaDB for maximum performance
Optimizing MariaDB for maximum performance
MariaDB plc
DOAG Oracle Unified Audit in Multitenant Environments
DOAG Oracle Unified Audit in Multitenant Environments
Stefan Oehrli
MySQL Administrator 2021 - 네오클로바
MySQL Administrator 2021 - 네오클로바
NeoClova
PostgreSQL HA
PostgreSQL HA
haroonm
Recomendados
Upgrade to MySQL 5.6 without downtime
Upgrade to MySQL 5.6 without downtime
Olivier DASINI
Upgrade from MySQL 5.7 to MySQL 8.0
Upgrade from MySQL 5.7 to MySQL 8.0
Olivier DASINI
Redo log improvements MYSQL 8.0
Redo log improvements MYSQL 8.0
Mydbops
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
Olivier DASINI
Optimizing MariaDB for maximum performance
Optimizing MariaDB for maximum performance
MariaDB plc
DOAG Oracle Unified Audit in Multitenant Environments
DOAG Oracle Unified Audit in Multitenant Environments
Stefan Oehrli
MySQL Administrator 2021 - 네오클로바
MySQL Administrator 2021 - 네오클로바
NeoClova
PostgreSQL HA
PostgreSQL HA
haroonm
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)
Jean-François Gagné
Percona Live 2022 - MySQL Architectures
Percona Live 2022 - MySQL Architectures
Frederic Descamps
ProxySQL for MySQL
ProxySQL for MySQL
Mydbops
MariaDB MaxScale
MariaDB MaxScale
MariaDB plc
MySQL Shell for DBAs
MySQL Shell for DBAs
Frederic Descamps
Faster, better, stronger: The new InnoDB
Faster, better, stronger: The new InnoDB
MariaDB plc
Percona XtraDB Cluster vs Galera Cluster vs MySQL Group Replication
Percona XtraDB Cluster vs Galera Cluster vs MySQL Group Replication
Kenny Gryp
MySQL Group Replication
MySQL Group Replication
Ulf Wendel
MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11
MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11
Kenny Gryp
MySQL High Availability Solutions
MySQL High Availability Solutions
Mydbops
Vitess: Scalable Database Architecture - Kubernetes Community Days Africa Ap...
Vitess: Scalable Database Architecture - Kubernetes Community Days Africa Ap...
Alkin Tezuysal
Understanding How is that Adaptive Cursor Sharing (ACS) produces multiple Opt...
Understanding How is that Adaptive Cursor Sharing (ACS) produces multiple Opt...
Carlos Sierra
Planning for Disaster Recovery (DR) with Galera Cluster
Planning for Disaster Recovery (DR) with Galera Cluster
Codership Oy - Creators of Galera Cluster
Extreme Replication - Performance Tuning Oracle GoldenGate
Extreme Replication - Performance Tuning Oracle GoldenGate
Bobby Curtis
Top 10 Mistakes When Migrating From Oracle to PostgreSQL
Top 10 Mistakes When Migrating From Oracle to PostgreSQL
Jim Mlodgenski
Galera Cluster Best Practices for DBA's and DevOps Part 1
Galera Cluster Best Practices for DBA's and DevOps Part 1
Codership Oy - Creators of Galera Cluster
The consequences of sync_binlog != 1
The consequences of sync_binlog != 1
Jean-François Gagné
Demystifying MySQL Replication Crash Safety
Demystifying MySQL Replication Crash Safety
Jean-François Gagné
Smart monitoring how does oracle rac manage resource, state ukoug19
Smart monitoring how does oracle rac manage resource, state ukoug19
Anil Nair
Oracle RAC features on Exadata
Oracle RAC features on Exadata
Anil Nair
Étude de cas : migration MySQL Latin 1 vers UTF-8
Étude de cas : migration MySQL Latin 1 vers UTF-8
Olivier DASINI
Optimisation de MySQL
Optimisation de MySQL
Olivier DASINI
Mais conteúdo relacionado
Mais procurados
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)
Jean-François Gagné
Percona Live 2022 - MySQL Architectures
Percona Live 2022 - MySQL Architectures
Frederic Descamps
ProxySQL for MySQL
ProxySQL for MySQL
Mydbops
MariaDB MaxScale
MariaDB MaxScale
MariaDB plc
MySQL Shell for DBAs
MySQL Shell for DBAs
Frederic Descamps
Faster, better, stronger: The new InnoDB
Faster, better, stronger: The new InnoDB
MariaDB plc
Percona XtraDB Cluster vs Galera Cluster vs MySQL Group Replication
Percona XtraDB Cluster vs Galera Cluster vs MySQL Group Replication
Kenny Gryp
MySQL Group Replication
MySQL Group Replication
Ulf Wendel
MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11
MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11
Kenny Gryp
MySQL High Availability Solutions
MySQL High Availability Solutions
Mydbops
Vitess: Scalable Database Architecture - Kubernetes Community Days Africa Ap...
Vitess: Scalable Database Architecture - Kubernetes Community Days Africa Ap...
Alkin Tezuysal
Understanding How is that Adaptive Cursor Sharing (ACS) produces multiple Opt...
Understanding How is that Adaptive Cursor Sharing (ACS) produces multiple Opt...
Carlos Sierra
Planning for Disaster Recovery (DR) with Galera Cluster
Planning for Disaster Recovery (DR) with Galera Cluster
Codership Oy - Creators of Galera Cluster
Extreme Replication - Performance Tuning Oracle GoldenGate
Extreme Replication - Performance Tuning Oracle GoldenGate
Bobby Curtis
Top 10 Mistakes When Migrating From Oracle to PostgreSQL
Top 10 Mistakes When Migrating From Oracle to PostgreSQL
Jim Mlodgenski
Galera Cluster Best Practices for DBA's and DevOps Part 1
Galera Cluster Best Practices for DBA's and DevOps Part 1
Codership Oy - Creators of Galera Cluster
The consequences of sync_binlog != 1
The consequences of sync_binlog != 1
Jean-François Gagné
Demystifying MySQL Replication Crash Safety
Demystifying MySQL Replication Crash Safety
Jean-François Gagné
Smart monitoring how does oracle rac manage resource, state ukoug19
Smart monitoring how does oracle rac manage resource, state ukoug19
Anil Nair
Oracle RAC features on Exadata
Oracle RAC features on Exadata
Anil Nair
Mais procurados
(20)
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)
Percona Live 2022 - MySQL Architectures
Percona Live 2022 - MySQL Architectures
ProxySQL for MySQL
ProxySQL for MySQL
MariaDB MaxScale
MariaDB MaxScale
MySQL Shell for DBAs
MySQL Shell for DBAs
Faster, better, stronger: The new InnoDB
Faster, better, stronger: The new InnoDB
Percona XtraDB Cluster vs Galera Cluster vs MySQL Group Replication
Percona XtraDB Cluster vs Galera Cluster vs MySQL Group Replication
MySQL Group Replication
MySQL Group Replication
MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11
MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11
MySQL High Availability Solutions
MySQL High Availability Solutions
Vitess: Scalable Database Architecture - Kubernetes Community Days Africa Ap...
Vitess: Scalable Database Architecture - Kubernetes Community Days Africa Ap...
Understanding How is that Adaptive Cursor Sharing (ACS) produces multiple Opt...
Understanding How is that Adaptive Cursor Sharing (ACS) produces multiple Opt...
Planning for Disaster Recovery (DR) with Galera Cluster
Planning for Disaster Recovery (DR) with Galera Cluster
Extreme Replication - Performance Tuning Oracle GoldenGate
Extreme Replication - Performance Tuning Oracle GoldenGate
Top 10 Mistakes When Migrating From Oracle to PostgreSQL
Top 10 Mistakes When Migrating From Oracle to PostgreSQL
Galera Cluster Best Practices for DBA's and DevOps Part 1
Galera Cluster Best Practices for DBA's and DevOps Part 1
The consequences of sync_binlog != 1
The consequences of sync_binlog != 1
Demystifying MySQL Replication Crash Safety
Demystifying MySQL Replication Crash Safety
Smart monitoring how does oracle rac manage resource, state ukoug19
Smart monitoring how does oracle rac manage resource, state ukoug19
Oracle RAC features on Exadata
Oracle RAC features on Exadata
Destaque
Étude de cas : migration MySQL Latin 1 vers UTF-8
Étude de cas : migration MySQL Latin 1 vers UTF-8
Olivier DASINI
Optimisation de MySQL
Optimisation de MySQL
Olivier DASINI
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
Olivier DASINI
Architectures haute disponibilité avec MySQL
Architectures haute disponibilité avec MySQL
Olivier DASINI
MySQL Day Paris 2016 - MySQL as a Document Store
MySQL Day Paris 2016 - MySQL as a Document Store
Olivier DASINI
MySQL 5.7 & JSON - Nouvelles opportunités pour les dévelopeurs
MySQL 5.7 & JSON - Nouvelles opportunités pour les dévelopeurs
Frederic Descamps
Haute disponibilité my sql avec group réplication
Haute disponibilité my sql avec group réplication
Frederic Descamps
MySQL Day Paris 2016 - MySQL Enterprise Edition
MySQL Day Paris 2016 - MySQL Enterprise Edition
Olivier DASINI
MySQL Cloud Service Deep Dive
MySQL Cloud Service Deep Dive
Morgan Tocker
MySQL High Availability -- InnoDB Clusters
MySQL High Availability -- InnoDB Clusters
Matt Lord
MySQL Day Paris 2016 - MySQL HA: InnoDB Cluster and NDB Cluster
MySQL Day Paris 2016 - MySQL HA: InnoDB Cluster and NDB Cluster
Olivier DASINI
MySQL Day Paris 2016 - Introducing Oracle MySQL Cloud Service
MySQL Day Paris 2016 - Introducing Oracle MySQL Cloud Service
Olivier DASINI
MySQL Day Paris 2016 - State Of The Dolphin
MySQL Day Paris 2016 - State Of The Dolphin
Olivier DASINI
Les nouveautés de MySQL 5.1
Les nouveautés de MySQL 5.1
Olivier DASINI
Mix ‘n’ Match Async and Group Replication for Advanced Replication Setups
Mix ‘n’ Match Async and Group Replication for Advanced Replication Setups
Pedro Gomes
Fine-tuning Group Replication for Performance
Fine-tuning Group Replication for Performance
Vitor Oliveira
Group Replication: A Journey to the Group Communication Core
Group Replication: A Journey to the Group Communication Core
Alfranio Júnior
Galera Cluster for MySQL vs MySQL (NDB) Cluster: A High Level Comparison
Galera Cluster for MySQL vs MySQL (NDB) Cluster: A High Level Comparison
Severalnines
Best practices for MySQL High Availability
Best practices for MySQL High Availability
Colin Charles
Jeudis du Libre - MySQL InnoDB Cluster
Jeudis du Libre - MySQL InnoDB Cluster
Frederic Descamps
Destaque
(20)
Étude de cas : migration MySQL Latin 1 vers UTF-8
Étude de cas : migration MySQL Latin 1 vers UTF-8
Optimisation de MySQL
Optimisation de MySQL
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
Architectures haute disponibilité avec MySQL
Architectures haute disponibilité avec MySQL
MySQL Day Paris 2016 - MySQL as a Document Store
MySQL Day Paris 2016 - MySQL as a Document Store
MySQL 5.7 & JSON - Nouvelles opportunités pour les dévelopeurs
MySQL 5.7 & JSON - Nouvelles opportunités pour les dévelopeurs
Haute disponibilité my sql avec group réplication
Haute disponibilité my sql avec group réplication
MySQL Day Paris 2016 - MySQL Enterprise Edition
MySQL Day Paris 2016 - MySQL Enterprise Edition
MySQL Cloud Service Deep Dive
MySQL Cloud Service Deep Dive
MySQL High Availability -- InnoDB Clusters
MySQL High Availability -- InnoDB Clusters
MySQL Day Paris 2016 - MySQL HA: InnoDB Cluster and NDB Cluster
MySQL Day Paris 2016 - MySQL HA: InnoDB Cluster and NDB Cluster
MySQL Day Paris 2016 - Introducing Oracle MySQL Cloud Service
MySQL Day Paris 2016 - Introducing Oracle MySQL Cloud Service
MySQL Day Paris 2016 - State Of The Dolphin
MySQL Day Paris 2016 - State Of The Dolphin
Les nouveautés de MySQL 5.1
Les nouveautés de MySQL 5.1
Mix ‘n’ Match Async and Group Replication for Advanced Replication Setups
Mix ‘n’ Match Async and Group Replication for Advanced Replication Setups
Fine-tuning Group Replication for Performance
Fine-tuning Group Replication for Performance
Group Replication: A Journey to the Group Communication Core
Group Replication: A Journey to the Group Communication Core
Galera Cluster for MySQL vs MySQL (NDB) Cluster: A High Level Comparison
Galera Cluster for MySQL vs MySQL (NDB) Cluster: A High Level Comparison
Best practices for MySQL High Availability
Best practices for MySQL High Availability
Jeudis du Libre - MySQL InnoDB Cluster
Jeudis du Libre - MySQL InnoDB Cluster
Semelhante a Case Study: MySQL migration from latin1 to UTF-8
Perf Tuning Short
Perf Tuning Short
Ligaya Turmelle
My sql 5.7-upcoming-changes-v2
My sql 5.7-upcoming-changes-v2
Morgan Tocker
MySQL 8.0.22 - New Features Summary
MySQL 8.0.22 - New Features Summary
Olivier DASINI
DATABASE AUTOMATION with Thousands of database, monitoring and backup
DATABASE AUTOMATION with Thousands of database, monitoring and backup
Saewoong Lee
Dave Williams - Nagios Log Server - Practical Experience
Dave Williams - Nagios Log Server - Practical Experience
Nagios
Exploring mysql cluster 7.4
Exploring mysql cluster 7.4
Ivan Ma
7 Database Mistakes YOU Are Making -- Linuxfest Northwest 2019
7 Database Mistakes YOU Are Making -- Linuxfest Northwest 2019
Dave Stokes
Oracle Exadata Cloud Services guide from practical experience - OOW19
Oracle Exadata Cloud Services guide from practical experience - OOW19
Nelson Calero
"Advanced MySQL 5 Tuning" by Michael Monty Widenius @ eLiberatica 2007
"Advanced MySQL 5 Tuning" by Michael Monty Widenius @ eLiberatica 2007
eLiberatica
Macy's: Changing Engines in Mid-Flight
Macy's: Changing Engines in Mid-Flight
DataStax Academy
[DBA]_HiramFleitas_SQL_PASS_Summit_2017_Summary
[DBA]_HiramFleitas_SQL_PASS_Summit_2017_Summary
Hiram Fleitas León
Objects? No thanks!
Objects? No thanks!
corehard_by
MySQL Baics - Texas Linxufest beginners tutorial May 31st, 2019
MySQL Baics - Texas Linxufest beginners tutorial May 31st, 2019
Dave Stokes
Php johannesburg meetup - talk 2014 - scaling php in the enterprise
Php johannesburg meetup - talk 2014 - scaling php in the enterprise
Sarel van der Walt
MySQL 8.0 & Unicode: Why, what & how
MySQL 8.0 & Unicode: Why, what & how
Bernt Marius Johnsen
MySQLinsanity
MySQLinsanity
Stanley Huang
Magento performances 2015 best practices
Magento performances 2015 best practices
NBS System
TiDB DevCon 2020 Opening Keynote
TiDB DevCon 2020 Opening Keynote
PingCAP
MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)
MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)
Dave Stokes
What is MariaDB Server 10.3?
What is MariaDB Server 10.3?
Colin Charles
Semelhante a Case Study: MySQL migration from latin1 to UTF-8
(20)
Perf Tuning Short
Perf Tuning Short
My sql 5.7-upcoming-changes-v2
My sql 5.7-upcoming-changes-v2
MySQL 8.0.22 - New Features Summary
MySQL 8.0.22 - New Features Summary
DATABASE AUTOMATION with Thousands of database, monitoring and backup
DATABASE AUTOMATION with Thousands of database, monitoring and backup
Dave Williams - Nagios Log Server - Practical Experience
Dave Williams - Nagios Log Server - Practical Experience
Exploring mysql cluster 7.4
Exploring mysql cluster 7.4
7 Database Mistakes YOU Are Making -- Linuxfest Northwest 2019
7 Database Mistakes YOU Are Making -- Linuxfest Northwest 2019
Oracle Exadata Cloud Services guide from practical experience - OOW19
Oracle Exadata Cloud Services guide from practical experience - OOW19
"Advanced MySQL 5 Tuning" by Michael Monty Widenius @ eLiberatica 2007
"Advanced MySQL 5 Tuning" by Michael Monty Widenius @ eLiberatica 2007
Macy's: Changing Engines in Mid-Flight
Macy's: Changing Engines in Mid-Flight
[DBA]_HiramFleitas_SQL_PASS_Summit_2017_Summary
[DBA]_HiramFleitas_SQL_PASS_Summit_2017_Summary
Objects? No thanks!
Objects? No thanks!
MySQL Baics - Texas Linxufest beginners tutorial May 31st, 2019
MySQL Baics - Texas Linxufest beginners tutorial May 31st, 2019
Php johannesburg meetup - talk 2014 - scaling php in the enterprise
Php johannesburg meetup - talk 2014 - scaling php in the enterprise
MySQL 8.0 & Unicode: Why, what & how
MySQL 8.0 & Unicode: Why, what & how
MySQLinsanity
MySQLinsanity
Magento performances 2015 best practices
Magento performances 2015 best practices
TiDB DevCon 2020 Opening Keynote
TiDB DevCon 2020 Opening Keynote
MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)
MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)
What is MariaDB Server 10.3?
What is MariaDB Server 10.3?
Mais de Olivier DASINI
MySQL High Availability Solutions - Avoid loss of service by reducing the r...
MySQL High Availability Solutions - Avoid loss of service by reducing the r...
Olivier DASINI
MySQL Document Store for Modern Applications
MySQL Document Store for Modern Applications
Olivier DASINI
MySQL Performance Best Practices
MySQL Performance Best Practices
Olivier DASINI
MySQL Database Service - 100% Developed, Managed and Supported by the MySQL Team
MySQL Database Service - 100% Developed, Managed and Supported by the MySQL Team
Olivier DASINI
MySQL 8.0.21 - New Features Summary
MySQL 8.0.21 - New Features Summary
Olivier DASINI
MySQL 8.0.19 - New Features Summary
MySQL 8.0.19 - New Features Summary
Olivier DASINI
MySQL 8.0.18 - New Features Summary
MySQL 8.0.18 - New Features Summary
Olivier DASINI
MySQL 8.0.17 - New Features Summary
MySQL 8.0.17 - New Features Summary
Olivier DASINI
MySQL 8.0.16 New Features Summary
MySQL 8.0.16 New Features Summary
Olivier DASINI
MySQL Day Paris 2018 - Introduction & The State of the Dolphin
MySQL Day Paris 2018 - Introduction & The State of the Dolphin
Olivier DASINI
MySQL Day Paris 2018 - MySQL & GDPR; Privacy and Security requirements
MySQL Day Paris 2018 - MySQL & GDPR; Privacy and Security requirements
Olivier DASINI
MySQL Day Paris 2018 - Upgrade from MySQL 5.7 to MySQL 8.0
MySQL Day Paris 2018 - Upgrade from MySQL 5.7 to MySQL 8.0
Olivier DASINI
MySQL Day Paris 2018 - MySQL InnoDB Cluster; A complete High Availability sol...
MySQL Day Paris 2018 - MySQL InnoDB Cluster; A complete High Availability sol...
Olivier DASINI
MySQL Day Paris 2018 - MySQL JSON Document Store
MySQL Day Paris 2018 - MySQL JSON Document Store
Olivier DASINI
MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?
MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?
Olivier DASINI
MySQL 8.0, what's new ? - Forum PHP 2018
MySQL 8.0, what's new ? - Forum PHP 2018
Olivier DASINI
MySQL JSON Document Store - A Document Store with all the benefits of a Trans...
MySQL JSON Document Store - A Document Store with all the benefits of a Trans...
Olivier DASINI
MySQL 8.0 - What's New ?
MySQL 8.0 - What's New ?
Olivier DASINI
MySQL Document Store - A Document Store with all the benefts of a Transactona...
MySQL Document Store - A Document Store with all the benefts of a Transactona...
Olivier DASINI
MySQL 5.7 InnoDB Cluster (Jan 2018)
MySQL 5.7 InnoDB Cluster (Jan 2018)
Olivier DASINI
Mais de Olivier DASINI
(20)
MySQL High Availability Solutions - Avoid loss of service by reducing the r...
MySQL High Availability Solutions - Avoid loss of service by reducing the r...
MySQL Document Store for Modern Applications
MySQL Document Store for Modern Applications
MySQL Performance Best Practices
MySQL Performance Best Practices
MySQL Database Service - 100% Developed, Managed and Supported by the MySQL Team
MySQL Database Service - 100% Developed, Managed and Supported by the MySQL Team
MySQL 8.0.21 - New Features Summary
MySQL 8.0.21 - New Features Summary
MySQL 8.0.19 - New Features Summary
MySQL 8.0.19 - New Features Summary
MySQL 8.0.18 - New Features Summary
MySQL 8.0.18 - New Features Summary
MySQL 8.0.17 - New Features Summary
MySQL 8.0.17 - New Features Summary
MySQL 8.0.16 New Features Summary
MySQL 8.0.16 New Features Summary
MySQL Day Paris 2018 - Introduction & The State of the Dolphin
MySQL Day Paris 2018 - Introduction & The State of the Dolphin
MySQL Day Paris 2018 - MySQL & GDPR; Privacy and Security requirements
MySQL Day Paris 2018 - MySQL & GDPR; Privacy and Security requirements
MySQL Day Paris 2018 - Upgrade from MySQL 5.7 to MySQL 8.0
MySQL Day Paris 2018 - Upgrade from MySQL 5.7 to MySQL 8.0
MySQL Day Paris 2018 - MySQL InnoDB Cluster; A complete High Availability sol...
MySQL Day Paris 2018 - MySQL InnoDB Cluster; A complete High Availability sol...
MySQL Day Paris 2018 - MySQL JSON Document Store
MySQL Day Paris 2018 - MySQL JSON Document Store
MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?
MySQL Day Paris 2018 - What’s New in MySQL 8.0 ?
MySQL 8.0, what's new ? - Forum PHP 2018
MySQL 8.0, what's new ? - Forum PHP 2018
MySQL JSON Document Store - A Document Store with all the benefits of a Trans...
MySQL JSON Document Store - A Document Store with all the benefits of a Trans...
MySQL 8.0 - What's New ?
MySQL 8.0 - What's New ?
MySQL Document Store - A Document Store with all the benefts of a Transactona...
MySQL Document Store - A Document Store with all the benefts of a Transactona...
MySQL 5.7 InnoDB Cluster (Jan 2018)
MySQL 5.7 InnoDB Cluster (Jan 2018)
Último
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
debabhi2
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
The Digital Insurer
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
Anna Loughnan Colquhoun
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Miguel Araújo
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
Boston Institute of Analytics
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
Gabriella Davis
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
Khushali Kathiriya
🐬 The future of MySQL is Postgres 🐘
🐬 The future of MySQL is Postgres 🐘
RTylerCroy
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
UK Journal
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
Remote DBA Services
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Principled Technologies
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
SynarionITSolutions
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
apidays
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
Khem
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
DianaGray10
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
The Digital Insurer
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
The Digital Insurer
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
Último
(20)
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
🐬 The future of MySQL is Postgres 🐘
🐬 The future of MySQL is Postgres 🐘
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
Case Study: MySQL migration from latin1 to UTF-8
1.
MySQL migration from
latin1 to UTF-8 Meetup Viadeo / LeMUG.fr, Paris 16-11-2011 Olivier DASINI – dasini.net/blog/
2.
In this talk Why
migrate in UTF-8 Charset and collation ? Obstacles faced Solutions found, approved and tested Rolling upgrade Switchover Reminder... (abstract for exhausted people) Olivier DASINI - ©2011 – http://dasini.net/blog/ 2
3.
Me, myself &
I Olivier DASINI MySQL Expert at Viadeo ● http://fr.viadeo.com/fr/profile/olivier.dasini My technology watch blog on MySQL ● http://dasini.net/blog/ Co-founder of the french society: MySQL User Group Francophone (LeMug.fr) ● http://lemug.fr Book author (in french) Audit et optimisation – MySQL 5, Bonnes pratiques pour l’administrateur ● Eyrolles, ISBN-13: 978-2212126341 MySQL 5 – Administration et optimisation ● ENI, ISBN-13: 978-2-7460-5516-2 Olivier DASINI - ©2011 – http://dasini.net/blog/ 3
4.
Migration UTF-8 mission Main
mission Convert the data to UTF-8 ● Viadeo used in over 200 countries ● Including China, India, Russia, Middle East, ... Secondaries missions Convert the tables to InnoDB ● Performances, Hot Backup, Operability,... Server tuning ● InnoDB tuning differ from MyISAM tuning Olivier DASINI - ©2011 – http://dasini.net/blog/ 4
5.
Charset & collation
1/4 Charset Can be defined as the encoding of an alphabet 39 different charset in MySQL 5.5 Latin1 (ISO/CEI 8859-1) is the default charset in MySQL ● « Almost » optimal for Western Europe ● 1 character = 1 byte utf8 is that we want (must) use ● « universal » charset ● 1 character = 1, 2 ou 3 byte(s) SHOW CHARACTER SET WHERE Charset='latin1'; +++++ | Charset | Description | Default collation | Maxlen | +++++ | latin1 | cp1252 West European | latin1_swedish_ci | 1 | +++++ SHOW CHARACTER SET WHERE Charset='utf8'; +++++ | Charset | Description | Default collation | Maxlen | +++++ | utf8 | UTF8 Unicode | utf8_general_ci | 3 | +++++ Olivier DASINI - ©2011 – http://dasini.net/blog/ 5
6.
Charset & collation
2/4 Latin1 does not recognize all the characters CREATE TABLE t_latin1 ( nom varchar(10) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci CREATE TABLE t_utf8 ( nom varchar(10) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_swedish_ci SELECT * FROM t_latin1; ++ | nom | ++ | ?? | Latin1 can't encode Mandarin ++ SELECT * FROM t_utf8; ++ | nom | ++ | 谢谢 | ++ Olivier DASINI - ©2011 – http://dasini.net/blog/ 6
7.
Charset & collation
3/4 Collation Can be defined as the set of rules that compare and order the symbols of an alphabet . Used mainly in the sorts Related to a charset ● LATIN1 default collation is latin1_swedish_ci ● UTF-8 default collation is utf8_general_ci Beware of the differences in behavior and performances... Olivier DASINI - ©2011 – http://dasini.net/blog/ 7
8.
Charset & collation
4/4 Collation is used mainly in the sorts SELECT * FROM table ORDER BY col COLLATE latin1_xxxxx_ci; SELECT * FROM c1; ORDER BY c COLLATE latin1_swedish_ci; ++ ++ | c | | c | ++ ++ | û | | û | | u | | u | | ü | | ù | | ù | | ü | ++ ++ ORDER BY c COLLATE latin1_german1_ci; ORDER BY c COLLATE latin1_german2_ci; ++ ++ | c | | c | ++ ++ | û | | û | | u | | u | | ü | | ù | | ù | | ü | ++ ++ Olivier DASINI - ©2011 – http://dasini.net/blog/ 8
9.
Method Convert
the tables Charset : UTF-8 Collation : utf8_swedish_ci Storage : InnoDB Very simple with MySQL A single command : ALTER TABLE Fingers in the nose ! ALTER TABLE ma_table ENGINE = INNODB, ALTER TABLE ma_table CHARSET = utf8 COLLATE utf8_swedish_ci Does it work ? Olivier DASINI - ©2011 – http://dasini.net/blog/ 9
10.
The end ?
Thank you for your attention ! Olivier DASINI - ©2011 – http://dasini.net/blog/ 10
11.
Not so simple...
Viadeo constraints Workload: a huge amount of data is managed (Nov. 2011) ● 1 000 000 new members / month ● 250 000 connections / day ● 165 000 active discussiondans forum ● 80 000 forum member / month ● 18 000 articles shared / day ● 1 250 events organized / week Minimize the downtime ● No connection = no income Nasty surprise ● Dirty data ● Legacy... MySQL constraints Maximum size of the index Characteristics related to the CHARSET & COLLATION => had suddenly became issues when migrating ... Olivier DASINI - ©2011 – http://dasini.net/blog/ 11
12.
Mission: Impossible ?
Olivier DASINI - ©2011 – http://dasini.net/blog/ 12
13.
Viadeo constraints MySQL @
Viadeo (prod OLTP) : huge volume of data About thirty instances distributed on 5 « clusters » ie Master / Slaves replication 2 TB of data (for MySQL) About 1000 tables 20% of the effort ● 70% MyISAM Required good MySQL skills 5 billions rows Scripting know-how Minimize the downtime with MySQL replication => Rolling upgrade ● Slaves are migrated first ● Allowing testing and validate the process => Switchover ● A slave promoted to master 80% of the effort Required good business skills Data legacy Large consumer of time and energy for historical reasons, some data was not « clean » ● Thank you to the elders................................................................................. The application migration was carried out several months before => mix of latin1 et utf8 data in latin1 tables => Tedious hand cleaning => Performed with a good knowledge of code ● Thank you to the elders ! Olivier DASINI - ©2011 – http://dasini.net/blog/ 13
14.
80% of the
effort Required good business skills Large consumer of time and energy 3 weeks of labor The dark side of the force... Olivier DASINI - ©2011 – http://dasini.net/blog/ 14
15.
Data legacy -
Taille max des index Limited to 767 bytes for InnoDB (1000 bytes for MyISAM) Specified key was too long; max key length is 767 bytes Warning 1071 : for a not unique index ● MySQL index the 255 first characters ● KEY `idx_url` (`url`(255)) ERROR 1071 (42000) : for an unique index ● Many ways to handle it. ● Highly dependent on the business logic. ● => Processed on a case by case basis. ALTER TABLE _table CONVERT TO CHARACTER SET utf8; ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes CREATE TABLE _table ( info varchar(256) NOT NULL, 256 x 3 = 768 > 767 ... the count is not good ! PRIMARY KEY (info) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ALTER TABLE _table2 CONVERT TO CHARACTER SET utf8; Query OK, 0 rows affected, 2 warnings (0.33 sec) Records: 0 Duplicates: 0 Warnings: 2 CREATE TABLE _table2 ( info varchar(256) NOT NULL, KEY info (info(255)) Add by MySQL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 Olivier DASINI - ©2011 – http://dasini.net/blog/ 15
16.
Data legacy –
Duplicate entry 1/3 Process Run tests on a sample data Understand the problem(s) ● ERROR 1062 (23000): Duplicate entry ● => Different charset = different behavior of the server Identify rows issues ● The problematic characters : ● Do not appear to cause problems or are sometimes invisible ● With SQL queries : easy but sometimes long, often very long Deal with the problem ● Understand the data ● Understand MySQL ● Difficult to automate => TEDIOUS Olivier DASINI - ©2011 – http://dasini.net/blog/ 16
17.
Data legacy –
Duplicate entry 2/3 Weird characters in the data A0 / A020 / 20A0 / C2A0 / … at the end of some rows Clean hand operation ! SELECT ID, hex(url) FROM _table WHERE LEFT(reverse(Url),2) LIKE CONCAT(UNHEX('A0'),'%') ; for col in postID; do for carac in A0 A020 20A0; do mysql ugrantless uP4S5 B N e"SELECT ID FROM _table WHERE LEFT(reverse($col),2) LIKE CONCAT(UNHEX('$carac'),'%');"; done; done; Olivier DASINI - ©2011 – http://dasini.net/blog/ 17
18.
Data legacy –
Duplicate entry 2/3 ERROR 1062 (23000): Duplicate entry 'pykachu' for key 'surnom' ● While there are (apparently) no duplicates... ? SELECT surnom... LIKE 'p_kachu'; ++ = | surnom | Unique index ++ | pykachu | | pÿkachu | ++ ? SELECT surnom... LIKE 'p_kachu'; ++ | surnom | Unique index = ++ | pykachu| | pykachu | ++ Similar but different characters... Depends on the collation y = ÿ ² = 2 ª = a ß = ss Olivier DASINI - ©2011 – http://dasini.net/blog/ 18
19.
Charset & collation
(again) 1/4 2 different letters can be similar... SELECT 'u' = 'ü' COLLATE utf8_general_ci; SELECT 'e' = 'ë' COLLATE utf8_general_ci; ++ ++ | 'u' = 'ü' COLLATE utf8_general_ci | | 'e' = 'ë' COLLATE utf8_general_ci | ++ ++ | 1 | | 1 | ++ ++ SELECT 'u' = 'ü' COLLATE utf8_swedish_ci; SELECT 'e' = 'ë' COLLATE utf8_swedish_ci; ++ ++ | 'u' = 'ü' COLLATE utf8_swedish_ci | | 'e' = 'ë' COLLATE utf8_swedish_ci | ++ ++ | 0 | | 1 | ++ ++ SELECT 'u' = 'ü' COLLATE utf8_bin; SELECT 'e' = 'ë' COLLATE utf8_bin; ++ ++ | 'u' = 'ü' COLLATE utf8_bin | | 'e' = 'ë' COLLATE utf8_bin | ++ ++ | 0 | | 0 | ++ ++ Olivier DASINI - ©2011 – http://dasini.net/blog/ 19
20.
Charset & collation
(again) 2/4 Behavior may differ between latin1_swedish_ci & utf8_swedish_ci SELECT 'u' = 'ü' COLLATE latin1_swedish_ci; SELECT 'e' = 'ë' COLLATE latin1_swedish_ci; ++ ++ | 'u' = 'ü' COLLATE utf8_general_ci | | 'e' = 'ë' COLLATE utf8_general_ci | ++ ++ | 0 | | 0 | ++ ++ SELECT 'u' = 'ü' COLLATE utf8_swedish_ci; SELECT 'e' = 'ë' COLLATE utf8_swedish_ci; ++ ++ | 'u' = 'ü' COLLATE utf8_swedish_ci | | 'e' = 'ë' COLLATE utf8_swedish_ci | ++ ++ | 0 | | 1 | ++ ++ Identical behavior Different behavior ● u is different from ü ● e is different from ë in latin1_swedish_ci ● e is identical to ë in utf8_swedish_ci Olivier DASINI - ©2011 – http://dasini.net/blog/ 20
21.
Charset & collation
(again) 3/4 Collation : pay attention to differences in performance SELECT BENCHMARK(1000000000, (select 'u'='ü' collate utf8_bin)); ++ | BENCHMARK(1000000000, (select 'u'='ü' collate utf8_bin)) | ++ | 0 | ++ 1 row in set (20.62 sec) SELECT BENCHMARK(1000000000, (select 'u'='ü' collate utf8_swedish_ci)); ++ | BENCHMARK(1000000000, (select 'u'='ü' collate utf8_swedish_ci)) | ++ | 0 | ++ 1 row in set (57.53 sec) SELECT BENCHMARK(1000000000, (select 'u'='ü' collate utf8_general_ci)); ++ | BENCHMARK(1000000000, (select 'u'='ü' collate utf8_general_ci)) | ++ | 0 | ++ 1 row in set (27.71 sec) Olivier DASINI - ©2011 – http://dasini.net/blog/ 21
22.
Charset & collation
(again) 4/4 – Illegal mix Collation : pay attention to collation mixes CREATE TABLE City ( … ) DEFAULT CHARSET=utf8 COLLATE=utf8_swedish_ci CREATE TABLE Country ( … ) DEFAULT CHARSET=utf8 collate=utf8_general_ci SELECT City.name FROM City JOIN Country USING(name) ; ERROR 1267 (HY000): Illegal mix of collations (utf8_swedish_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '=' SELECT City.name FROM City Ci JOIN Country Co ON Ci.name=Co.name COLLATE utf8_general_ci ; Bypassing the problem Olivier DASINI - ©2011 – http://dasini.net/blog/ 22
23.
20% of the
effort Required good MySQL skills Scripting know-how 3 days of labor Light side of the force Olivier DASINI - ©2011 – http://dasini.net/blog/ 23
24.
Minimize the downtime
– Rolling upgrade Updated tested and validated on slaves White DB : latin-1 Orange DB : UTF-8 Olivier DASINI - ©2011 – http://dasini.net/blog/ 24
25.
Rolling upgrade 1/4 Optimize
the duration of the migration Minimize disk I/O Maximize buffers utilization Extract, Transform and Load (data) mysqldump ALTER TABLE mysqlimport REPAIR TABLE (MyISAM) Powered by bash ! Tuning server Setting buffers o their proper value Various optimization MySQL replication Stop it before the migration process Start it after the migration process Olivier DASINI - ©2011 – http://dasini.net/blog/ 25
26.
Rolling upgrade 2/4
Optimize the duration of the migration Minimize disk I/O Maximize buffers utilization Disable logs SET SESSION SQL_LOG_BIN=0; SET GLOBAL slow_query_log=0; SET GLOBAL general_log=0; InnoDB tuning Reduction disks I/O SET GLOBAL innodb_flush_log_at_trx_commit = 0; SET GLOBAL innodb_support_xa = 0; SET GLOBAL unique_checks=0; SET GLOBAL foreign_key_checks=0; MyISAM tuning Buffer for sorting MyISAM indexes: SET GLOBAL myisam_sort_buffer_size = N; REPAIR TABLE / CREATE INDEX / ALTER TABLE SET GLOBAL bulk_insert_buffer_size = N; Optimization : LOAD DATA INFILE Server tuning SET GLOBAL read_buffer_size = N; Used for « full table scan » Default DB charset & collation ALTER DATABASE DEFAULT CHARACTER SET utf8 COLLATE utf8_swedish_ci; Olivier DASINI - ©2011 – http://dasini.net/blog/ 26
27.
Rolling upgrade 3/4
Extract, Transform and Load (data) mysqldump ALTER TABLE mysqlimport REPAIR TABLE (MyISAM) Save the structure and the data in UTF8: mysqldump defaultcharacterset=utf8 hexblob DB table1 table2 T /path/to/bck/ 1m22.406s Convert the tables in InnoDB, utf8, utf8_swedish_ci: ALTER TABLE _table ENGINE=InnoDB, CONVERT TO CHARACTER SET utf8 COLLATE utf8_swedish_ci; Query OK, 12193106 rows affected (31 min 14.77 sec) Records: 12193106 Duplicates: 0 Warnings: 0 To do without the data !!! Load the data in UTF8: time mysql defaultcharacterset=utf8 DB < data.sql real 26m4.613s VS time mysqlimport defaultcharacterset=utf8 DB _table.txt DB._table: Records: 12193106 Deleted: 0 Skipped: 0 Warnings: 0 real 13m40.607s mysqlimport (load data infile) is the fastest Olivier DASINI - ©2011 – http://dasini.net/blog/ 27
28.
Rolling upgrade 4/4
Tuning server Setting buffers o their proper value Various optimization Refactoring my.cnf + Tuning Server default_storage_engine=InnoDB # Charset & Collation Limit bad surprises character_set_server=utf8 collation_server=utf8_swedish_ci # Replication Skipslavestart # Change hashing algorithm (REHASH passwords) old_passwords=0 The old passwords hashing algorithm is not secure (< 4.1) ... $ time ./poc XXxxXxxXXXxXxXXX mysql crack POC (c) 2006 Philippe Vigier & www.sqlhack.com password for footprint XXxxXxxXXXxXxXXX = '______' real 38m47.400s Olivier DASINI - ©2011 – http://dasini.net/blog/ 28
29.
Minimize the downtime
- Switchover Switchover for minimize the downtime A slave turn master The master become a slave Olivier DASINI - ©2011 – http://dasini.net/blog/ 29
30.
Switchover – Pseudo
code 1/3 /* the master should be in READ ONLY mode*/ Does not work with the $mA_cmd = "SET GLOBAL read_only='ON';"; SUPER privilege $mA_cmd = "FLUSH NO_WRITE_TO_BINLOG TABLES WITH READ LOCK;"; /*Retrieved old master binlog info*/ $mA_cmd = "SHOW MASTER STATUS;"; Allows the slave to stop at the exact position $old_master_file = $row["File"]; $old_master_pos = $row["Position"]; /* Kill the pending old master's connexions */ SELECT sleep(2); SELECT ID, USER, HOST FROM information_schema.PROCESSLIST WHERE TIME > 2; KILL CONNECTION ... Kill any remaining connections to the old master Olivier DASINI - ©2011 – http://dasini.net/blog/ 30
31.
Switchover – Pseudo
code 2/3 /*For all the slaves*/ /*Wait for the slave up to date*/ $m[B|C]_cmd = "SELECT master_pos_wait('$old_master_file', $old_master_pos);"; Gives back the hand when the slave is synchronized with the master /*Stop the replication*/ $m[B|C]_cmd = "STOP SLAVE"; Stop the replication /*Retrive new master binlog info*/ $mB_cmd = "SHOW MASTER STATUS;"; On the promoted server. Used to set the slaves on the new master $new_master_file = $row["File"]; $new_master_pos = $row["Position"]; Olivier DASINI - ©2011 – http://dasini.net/blog/ 31
32.
Switchover – Pseudo
code 3/3 /*For all the new slaves*/ /*reset the old slave configuration*/ $mC_cmd = "RESET SLAVE;"; Reset replication informations on all the other slaves /*Configure the new master*/ $mC_cmd = "CHANGE MASTER TO MASTER_HOST = '$new_master_host', MASTER_USER = '$new_master_user', MASTER_PASSWORD = '$new_master_pwd', MASTER_PORT=$new_master_port, MASTER_LOG_FILE='$new_master_file', MASTER_LOG_POS=$new_master_pos;"; Tell the slaves which is the new master /*Start the replication*/ $mC_cmd = "START SLAVE"; Start replication on all the slaves /*reset the replication info for the new master*/ $mB_cmd = "RESET SLAVE"; New master cleanup Olivier DASINI - ©2011 – http://dasini.net/blog/ 32
33.
Switchover - inspiration
Audit et optimisation, MySQL 5 --- éditions Eyrolles (french book) Page 239 Soit A le serveur master, B le slave de A qui va être promu master et C un autre slave de A 1/ Interdire les écritures sur A: SET GLOBAL read_only='ON'; verrouille en lecture seule FLUSH TABLES WITH READ LOCK; verrouille en lecture seule pour les autres comptes avec le droit SUPER 2/ Sauvegarder le numéro du journal binaire et la position de A : SHOW MASTER STATUS; paramètres : File, Position 3/ Laissez le serveur B & C rattraper leur retard au niveau de la réplication SELECT master_pos_wait('mysql-bin.xxxxxx',N); paramètres : File & Position de A (point 2). La fonction rendra la main une fois l’esclave à jour 3/ Une fois B à jour, assurez vous qu'il est configuré en master log binaire server-id unique Utilisateur de réplication exécutez SHOW MASTER STATUS; File & Position serviront à reconfigurer A et C. 4/ Routez les clients sur B qui devient alors le serveur actif 5/ Reconfigurer les serveurs A et C pour qu’ils soient esclave de B et qu’il reparte sur le bon fichier binaire et à la bonne position: STOP SLAVE; CHANGE MASTER TO MASTER_HOST='', MASTER_PORT=, MASTER_USER='', MASTER_PASSWORD='', MASTER_LOG_FILE = 'mysql-bin.xxxxxx', MASTER_LOG_POS = N; A doit être configurer comme un slave … la suite dans le livre :) Olivier DASINI - ©2011 – http://dasini.net/blog/ 33
34.
Recap Lessons learned from
this painful experience Know you data ● Know and understand the business logic ● Respect the data ● => Check them before you store them (in an ideal world) ● => Otherwise you will pay sooner or later... (in the real world) Know MySQL ● The charset that I need, the collation that I chose ● Limits => RTFM ● Rolling upgrade ● Switchover Migrate the DB before migrating the application ● See point 1... Automate everything that can ● Scripting for ever Olivier DASINI - ©2011 – http://dasini.net/blog/ 34
35.
Merci The Viadeo team
The speakers Anna Stéphane Combaudon Christophe Olivier Dasini Élodie Cédric Peintre Lionel Marc Thomas Lourdes Marie Anne You... Nicolas Pierre(s) Sabri et son équipe Sandy Séverine Stéphane Sylvain Yorick ... Olivier DASINI - ©2011 – http://dasini.net/blog/ 35
36.
Questions Where to
find the slides of the meetup ? http://dasini.net/blog/presentations/ Olivier DASINI - ©2011 – http://dasini.net/blog/ 36
Baixar agora