En raison aucune (n'est pas très clair raisons qui m') j'ai oublié de faire la mise à jour de postgresql démon sous l'action des médiateurs de l'inflammation lors de la mise à jour d'un serveur Debian m'. Postgresql démon a une propriété intéressante: ne commence pas à utiliser la nouvelle version (contrairement à Mysql) dans le même temps, pas de convaincre, ce qui est nouveau pleinement compatible avec le lancement de la – très utile lors des grandes bases de données. Le processus de mise à jour s'y limiter, les suivants 2 les étapes:

  • pg_dropcluster
  • pg_upgradecluster

Avant de издропите cluster pg démon doit être arrêté!

pg_dropcluster 9.4 main

Cette commande passe vite, puis nous passons à mettre en évidence – la mise à niveau simple

pg_upgradecluster 9.1 main
Disabling connections to the old cluster during upgrade...
Restarting old cluster with restricted connections...
Creating new cluster 9.4/main ...
config /etc/postgresql/9.4/main
data   /var/lib/postgresql/9.4/main
locale en_US.UTF-8
Flags of /var/lib/postgresql/9.4/main set as -------------e-C
port   5433
Disabling connections to the new cluster during upgrade...
Roles, databases, schemas, ACLs...
Fixing hardcoded library paths for stored procedures...
Upgrading database postgres...
Analyzing database postgres...
Fixing hardcoded library paths for stored procedures...
Upgrading database template1...
Analyzing database template1...
Fixing hardcoded library paths for stored procedures...
Upgrading database xpqt...
Analyzing database xpqt...
Re-enabling connections to the old cluster...
Re-enabling connections to the new cluster...
Copying old configuration files...
Copying old start.conf...
Copying old pg_ctl.conf...
Copying old server.crt...
Copying old server.key...
Stopping target cluster...
Stopping old cluster...
Disabling automatic startup of old cluster...
Configuring old cluster to use a different port (5433)...
Starting target cluster on the original port...
Success. Please check that the upgraded cluster works. If it does,
you can remove the old cluster with

pg_dropcluster 9.1 main

Si tout est lisse minlo vous devriez recevoir un message comme ci-dessus, qui vous invite à sortir des données anciennes de pg.

pg_dropcluster 9.1 main

À la fin de ce vous pouvez maintenant recommencer le processus Tarpan. Pour moi, les bases sont petites et malheureusement je ne peux pas donner une estimation de combien le temps passe la mise à niveau essentielle.

La semaine dernière, nous avons acheté Fantastico Deluxe installateur, qui à mon humble avis est l’un des plus réputés pour les serveurs CPanel. Nous l’avons testé, nous avons installé et tout s’est bien déroulé. Aujourd'hui un client m’a informé d’un problème avec l’enkodinga d’installation de wordpress. J’ai levé les yeux et obtenir immédiatement le problème des bases ont été avec l’encodage par défaut au lieu de Latin1 UTF8 comme était supposé. Encore plus de plaisir est, dans phpmyadmin et il dit qu’il utilise UTF8 par défaut, drame. J’ai décidé d’examiner les dossiers de Fantastico-it pour voir que si je peux me trouver un endroit où les paramètres par défaut des bases de données à première vue je ne vois rien. Je vois pas ce qui est le nez a commencé à saigner dans mes. conf-ce que pour voir il n’y avait pas les paramètres appropriés dans la configuration et tout commence à ce qui est défini par défaut. Serveur MySQL est hardkodnat d’utiliser UTF8 sauf s’il est configuré avec d’autres paramètres et Fantastico-it avec Latin1 ( qui est une décision assez stupide). La décision comme toujours trivial ajouté 2 pour [mysqld] chassta être UTF8 comme encodage par défaut et tout se endort 🙂

jeu de caractères serveur = UTF8
collation-server = utf8_general_ci

Je ne sais pas pour quelle raison j'ai raté ces paramètres si vous êtes jeu pour faire un peu “fin” paramètres de mysql-a.

Amélioré par Zemanta

Image representing MySQL as depicted in CrunchBase

Il y a quelque temps j'ai écrit MySQL Texte intégral Recherche Aujourd'hui, je 🙂 eu une expérience très intéressante avec une application. En général, les recherches d'application pour des résultats qui ne possède pas une autre table. Sélectionnez un principal et un sélectionner dans la partie WHERE de l'application. En général et squelette

SELECT DISTINCT (
`field`
)
FROM `table1`
WHERE `someID` =44
AND `firsTextField` NOT
IN (

SELECT DISTINCT (
`secondTextField`
)
FROM `table2`
WHERE `otherID` =44
)

demande fondamentalement simple. Je l'ai écrit pour 30 sec l'exécuter, et bloqué la machine. Après une longue et attendant patiemment de ma part ou juste ~ 43 sec . Il a craché résultat lol . pfff madhouse. Processeur Connexion look de la machine est normalement occupée état presque inactif. Choc et crainte. Replay demande à nouveau le même résultat. putain WTF. Exécuter expliquer la demande et tout rayonnait – secondTextField deuxième champ uniquement recherche en texte intégral indice без, et il y a un plateau modeste d'environ 35K lignes. qui a lu – recherche en texte intégral не е индекс. problème déjà clair rapidement un

ALTER TABLE `links` ADD INDEX ( `linkUrlID` ) 

Et les choses se mettaient en place la requête a 0.0005 sec 😀

Soyez prudent lorsque vous mettez les indices d'entre eux dépendent de votre demande de taux marginal.

p.s Je suis accroché ensemble sur la situation supérieure non seulement parce qu'il n'y a pas d'index, mais parce que ne pas utiliser la méthode de recherche en texte intégral 😀

Amélioré par Zemanta

Hier, après la mise à jour de la version de mysql, mon serveur est mis à crier à moi, Il a un plateau, qui n’a pas été fermé correctement et qui ont besoin de réparation, etc... Bla, Qu’est ce tableau, ai encore environ 30 sur ce serveur. Une option est de voir le journal-s ce qu’il dit à ce sujet et d’exécuter une réparation de la table ou l’autre option – beaucoup mieux – consiste à exécuter une réparation, vérifier et optimiser toutes les tables. Pour cela, je vais utiliser l’outil mysqlcheck. Dans l'ensemble des options dans ce cas sont les deux komendi sont synonymes les uns aux autres:

mysqlcheck -Aor -u root -p

mysqlcheck -u root -p --auto-repair --check --optimize --all-databases

en général, que les deux commandes à utiliser, l'effet sera le même – réparation aromatique, la vérification et l'optimisation de toutes les tables. Une fois que vous tapez une des deux commandes, On vous demandera le mot de passe root du serveur MySQL-vous un.