Maison base de données tutoriel mysql MySQL 升级的最佳实践

MySQL 升级的最佳实践

Jun 07, 2016 pm 04:44 PM
数据库

MySQL升级是非常必要的. 我们在Percona Support上列出了关于MySQL升级最佳实践的各种问题.这篇文章推荐了一些不同情况下升级MySQ

MySQL升级是非常必要的. 我们在Percona Support上列出了关于MySQL升级最佳实践的各种问题.这篇文章推荐了一些不同情况下升级MySQL的方法.

为什么MySQL升级是必须的? 原因有很多,比如:为了使用新增的特性,基于性能方面的考量, 修复的bug. 但是在没有充分的测试以前就应用到你的应用中是非常危险的, 因为升级可以能会让你的应用不能正常运作- 也可能引起性能的问题. 此外, 我建议你关注MySQL的发布信息和Percona Server - 看看最近的版本有什么变化. 也许在在最新的版本中已修复了某个你正在烦恼的问题.

--------------------------------------分割线 --------------------------------------

Ubuntu 14.04下安装MySQL

《MySQL权威指南(原书第2版)》清晰中文扫描版 PDF

Ubuntu 14.04 LTS 安装 LNMP Nginx\PHP5 (PHP-FPM)\MySQL

Ubuntu 14.04下搭建MySQL主从服务器

Ubuntu 12.04 LTS 构建高可用分布式 MySQL 集群

Ubuntu 12.04下源代码安装MySQL5.6以及Python-MySQLdb

MySQL-5.5.38通用二进制安装

--------------------------------------分割线 --------------------------------------

通过SQL Dump升级主版本:

把Percona Server从5.1升级到5.5版本或者是从5.5升级到5.6版本的升级模式同样适用于Oracle MySQL.

首先, 主版本升级并不是说可以不做任何准备,或者没有任何风险. 在升级之前你需要阅读相关的“升级”文档,比如:MySQL5.1到MySQL5.5的升级文档,MySQL5.5到MySQL5.6的升级文档.在这些文档里面你需要特别注意“Incompatible Change”部分,并检查你是否会受到这些变化的影响.它们可能是配置参数名字变更, 去掉旧的参数,引入新的参数等- 你需要根据这些变化在my.cnf文件做相应的变更.Percona Server 5.5需要特别注意的文档在, Percona Server 5.6需要特别注意的文档在这里.

现在,你有几种可行的方式升级,其中一种较灵活,,另一种则依赖你当前系统的拓扑结构和数据库数据大小 - 这种方法比前一种更安全。我们看个例子从 Percona Server 5.5 升级到 Percona Server 5.6,来具体看一下彼此的升级过程。

通常情况下,有两中升级方式:

  • 直接升级:安装好新版本数据库后,利用已经存在的数据文件夹,同时运行mysql_upgrade脚本来升级。

  • SQL 导出: 从一个较老版本的mysql把数据导出,然后恢复到新版本的数据库中。(利用mysqldump工具)。

  • 相比之下,第二种方式更安全些,但是这也会使得升级的过程要慢一些。

    理论上讲,最安全的方式是:

  • 导出所有用户的权限

  • 导出所有数据并恢复到新版本数据库中

  • 恢复用户权限到新数据库中

  • 下面是基本的操作步骤(在开始之前最好停止有关数据库操作的应用).

    1) 获取用户和权限信息. 该操作会备份所有用户的权限.

    $ wget percona.com/get/pt-show-grants;
    $ perl pt-show-grants --user=root --ask-pass --flush > /root/grants.sql

    2) dump 5.5数据库实例的所有信息(除去mysql, information_schema 和performance_schema数据库).

    $ mysql -BNe "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mysql', 'performance_schema', 'information_schema')" | tr 'n' ' ' > /root/dbs-to-dump.sql
    $ mysqldump --routines --events --single-transaction --databases $(cat /root/dbs-to-dump.sql) > /root/full-data-dump.sql

    3) 停止数据库

    $ service mysql stop
    or
    $ /etc/init.d/mysql stop

    4) 移动旧数据库(5.5版本)的数据目录(假设是/var/lib/mysql,此处应该改为你自己的数据目录)

    $ mv /var/lib/mysql/ /var/lib/mysql-55

    5) 安装5.6版本(按照正常安装流程). 如果你不是用的yum/apt-get方式安装的,你需要执行 mysql_install_db 和mysql_upgrade两个命令.

    6) 将在1)操作中导出的用户信息导入到新数据库中.

    mysql -uroot

    7) 将2)导出的数据导入到新数据库.

    $ mysql -e "SET GLOBAL max_allowed_packet=1024*1024*1024";
    $ mysql -uroot -p --max-allowed-packet=1G

    此时, 所有的表都在MySQL 5.6中重建及重新加载完成,所以所有的二进制文件对MySQL 5.6可用. 同时也你完成了最干净/最稳定的升级过程,你可以恢复你的应用- 这个升级过程和valina MySQL与Percona Server的升级过程是一样的.甚至你可以把Oracle MySQL升级到Percona Server. 比如: 把Oracle MySQL 5.5升级到Percona Server 5.6. 再次强调: MySQL的升级过程和Percona Server的升级过程是一样的,只需要将Percona Server 替换成Oracle MySQL即可.

    "SQL dump" 也可以称为逻辑备份.用升级后的MySQL二进制文件来重建所有的表基本没有兼容问题,从这一方面来说"SQL dump"更安全. 但是对于TB, GB级的大数据来说,这种方法非常的耗时. 另一方面, 备份/重新加载如此大的数据集,比如重建InnoDB表,你需要恢复很多的空闲磁盘,这样会引起的磁盘碎片整理优化.对于常更新或者删除的数据来说, 这么做是有益的.

    用In-Place升级小版本:

    这种升级方式是在一个主版本内做小版本升级, 比如把MySQL 5.5.35升级到MySQL 5.5.38或者是把Percona Server 5.6.14升级到最新的Percona Server 5.6.20

    这被称为一个就地升级,你只安装一个新的二进制包,然后运行mysql_upgrade脚本,如果必要的话,检查和更新系统表。仍然,就地升级我们强烈推荐检查新功能的发布说明,bug修复等。Percona Server 5.5 和 Percona Server 5.6 发行说明可以分别在这儿和那儿找到。

    当我们需要升级Percona服务器时,针对它的Percona-specific的一些特性,对于Percona服务器我们有额外的文档描述一些细节,可以在这儿和那儿找到。这也包括完成就地升级过程的和yum/apt的包管理器。

    同时,在安全方面你可以升级那些使用较早描述的逻辑转储程序,mysqldump或mydumper程序——前者并行备份和恢复和逻辑备份,升级是最安全的方法。

    直接升级到最新版本:

    跳过5.1版本直接把MySQL从5.0版本升级到5.5版本,或者跳过5.5版本直接从MySQL 5.1升级到5.6.甚至,可以直接从MySQL 5.0升级到MySQL 5.6虽然现在只有少数人还在使用MySQL 5.0版本. 这种同样使用于Percona Server.

    在这里我们假设跳过5.5版本,把Oracle MySQL或者Percona Server直接从5.1版本升级到5.6版本.

    Déclaration de ce site Web
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

    Outils d'IA chauds

    Undresser.AI Undress

    Undresser.AI Undress

    Application basée sur l'IA pour créer des photos de nu réalistes

    AI Clothes Remover

    AI Clothes Remover

    Outil d'IA en ligne pour supprimer les vêtements des photos.

    Undress AI Tool

    Undress AI Tool

    Images de déshabillage gratuites

    Clothoff.io

    Clothoff.io

    Dissolvant de vêtements AI

    AI Hentai Generator

    AI Hentai Generator

    Générez AI Hentai gratuitement.

    Outils chauds

    Bloc-notes++7.3.1

    Bloc-notes++7.3.1

    Éditeur de code facile à utiliser et gratuit

    SublimeText3 version chinoise

    SublimeText3 version chinoise

    Version chinoise, très simple à utiliser

    Envoyer Studio 13.0.1

    Envoyer Studio 13.0.1

    Puissant environnement de développement intégré PHP

    Dreamweaver CS6

    Dreamweaver CS6

    Outils de développement Web visuel

    SublimeText3 version Mac

    SublimeText3 version Mac

    Logiciel d'édition de code au niveau de Dieu (SublimeText3)

    Comment le langage Go implémente-t-il les opérations d'ajout, de suppression, de modification et de requête de la base de données ? Comment le langage Go implémente-t-il les opérations d'ajout, de suppression, de modification et de requête de la base de données ? Mar 27, 2024 pm 09:39 PM

    Le langage Go est un langage de programmation efficace, concis et facile à apprendre. Il est privilégié par les développeurs en raison de ses avantages en programmation simultanée et en programmation réseau. Dans le développement réel, les opérations de base de données font partie intégrante. Cet article explique comment utiliser le langage Go pour implémenter les opérations d'ajout, de suppression, de modification et de requête de base de données. Dans le langage Go, nous utilisons généralement des bibliothèques tierces pour faire fonctionner les bases de données, telles que les packages SQL couramment utilisés, gorm, etc. Ici, nous prenons le package SQL comme exemple pour présenter comment implémenter les opérations d'ajout, de suppression, de modification et de requête de la base de données. Supposons que nous utilisons une base de données MySQL.

    Comment Hibernate implémente-t-il le mappage polymorphe ? Comment Hibernate implémente-t-il le mappage polymorphe ? Apr 17, 2024 pm 12:09 PM

    Le mappage polymorphe Hibernate peut mapper les classes héritées à la base de données et fournit les types de mappage suivants : join-subclass : crée une table séparée pour la sous-classe, incluant toutes les colonnes de la classe parent. table par classe : créez une table distincte pour les sous-classes, contenant uniquement des colonnes spécifiques aux sous-classes. union-subclass : similaire à join-subclass, mais la table de classe parent réunit toutes les colonnes de la sous-classe.

    iOS 18 ajoute une nouvelle fonction d'album 'Récupéré' pour récupérer les photos perdues ou endommagées iOS 18 ajoute une nouvelle fonction d'album 'Récupéré' pour récupérer les photos perdues ou endommagées Jul 18, 2024 am 05:48 AM

    Les dernières versions d'Apple des systèmes iOS18, iPadOS18 et macOS Sequoia ont ajouté une fonctionnalité importante à l'application Photos, conçue pour aider les utilisateurs à récupérer facilement des photos et des vidéos perdues ou endommagées pour diverses raisons. La nouvelle fonctionnalité introduit un album appelé "Récupéré" dans la section Outils de l'application Photos qui apparaîtra automatiquement lorsqu'un utilisateur a des photos ou des vidéos sur son appareil qui ne font pas partie de sa photothèque. L'émergence de l'album « Récupéré » offre une solution aux photos et vidéos perdues en raison d'une corruption de la base de données, d'une application d'appareil photo qui n'enregistre pas correctement dans la photothèque ou d'une application tierce gérant la photothèque. Les utilisateurs n'ont besoin que de quelques étapes simples

    Comment gérer les erreurs de connexion à la base de données en PHP Comment gérer les erreurs de connexion à la base de données en PHP Jun 05, 2024 pm 02:16 PM

    Pour gérer les erreurs de connexion à la base de données en PHP, vous pouvez utiliser les étapes suivantes : Utilisez mysqli_connect_errno() pour obtenir le code d'erreur. Utilisez mysqli_connect_error() pour obtenir le message d'erreur. En capturant et en enregistrant ces messages d'erreur, les problèmes de connexion à la base de données peuvent être facilement identifiés et résolus, garantissant ainsi le bon fonctionnement de votre application.

    Tutoriel détaillé sur l'établissement d'une connexion à une base de données à l'aide de MySQLi en PHP Tutoriel détaillé sur l'établissement d'une connexion à une base de données à l'aide de MySQLi en PHP Jun 04, 2024 pm 01:42 PM

    Comment utiliser MySQLi pour établir une connexion à une base de données en PHP : Inclure l'extension MySQLi (require_once) Créer une fonction de connexion (functionconnect_to_db) Appeler la fonction de connexion ($conn=connect_to_db()) Exécuter une requête ($result=$conn->query()) Fermer connexion ( $conn->close())

    Une analyse approfondie de la façon dont HTML lit la base de données Une analyse approfondie de la façon dont HTML lit la base de données Apr 09, 2024 pm 12:36 PM

    HTML ne peut pas lire directement la base de données, mais cela peut être réalisé via JavaScript et AJAX. Les étapes comprennent l'établissement d'une connexion à la base de données, l'envoi d'une requête, le traitement de la réponse et la mise à jour de la page. Cet article fournit un exemple pratique d'utilisation de JavaScript, AJAX et PHP pour lire les données d'une base de données MySQL, montrant comment afficher dynamiquement les résultats d'une requête dans une page HTML. Cet exemple utilise XMLHttpRequest pour établir une connexion à la base de données, envoyer une requête et traiter la réponse, remplissant ainsi les données dans les éléments de la page et réalisant la fonction de lecture HTML de la base de données.

    Conseils et pratiques pour gérer les caractères chinois tronqués dans les bases de données avec PHP Conseils et pratiques pour gérer les caractères chinois tronqués dans les bases de données avec PHP Mar 27, 2024 pm 05:21 PM

    PHP est un langage de programmation back-end largement utilisé dans le développement de sites Web. Il possède de puissantes fonctions d'exploitation de bases de données et est souvent utilisé pour interagir avec des bases de données telles que MySQL. Cependant, en raison de la complexité du codage des caractères chinois, des problèmes surviennent souvent lorsqu'il s'agit de caractères chinois tronqués dans la base de données. Cet article présentera les compétences et les pratiques de PHP dans la gestion des caractères chinois tronqués dans les bases de données, y compris les causes courantes des caractères tronqués, les solutions et des exemples de code spécifiques. Les raisons courantes pour lesquelles les caractères sont tronqués sont des paramètres de jeu de caractères incorrects dans la base de données : le jeu de caractères correct doit être sélectionné lors de la création de la base de données, comme utf8 ou u.

    Comment se connecter à une base de données distante à l'aide de Golang ? Comment se connecter à une base de données distante à l'aide de Golang ? Jun 01, 2024 pm 08:31 PM

    Grâce au package base de données/sql de la bibliothèque standard Go, vous pouvez vous connecter à des bases de données distantes telles que MySQL, PostgreSQL ou SQLite : créez une chaîne de connexion contenant les informations de connexion à la base de données. Utilisez la fonction sql.Open() pour ouvrir une connexion à la base de données. Effectuez des opérations de base de données telles que des requêtes SQL et des opérations d'insertion. Utilisez defer pour fermer la connexion à la base de données afin de libérer des ressources.

    See all articles