iuj (ne tre klara mia kialoj) Mi ne ĝisdatigi PostgreSQL demono en la distribueca ĝisdatigi unu el miaj Debiano serviloj. PostgreSQL demono belan karakterizaĵo ne komencis uzi la novan version (kontraste Mysql) dum ne konvinkos, la novaj estas plene kongrua kun la ĵeto – ekstreme utila por grandaj datumbazoj. La procezo por ĝisdatigo limigita al la jena 2 paŝoj:

  • pg_dropcluster
  • pg_upgradecluster

Antaŭ izdropite pg floraro demono devas esti fermitaj!

pg_dropcluster 9.4 main

Тази команда преминава бързо, след което преминаваме към съществената частсамият ъпгрейд

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

Ако всичко е минло гладко трябва да получите съобщение като горното което ви подканва да разкарате старите данни от pg.

pg_dropcluster 9.1 main

В края на тая тарпана вече можете да стартирате процеса си отново. При мен базите са малки и за съжаление не мога да дам оценка за колко време преминава същественият ъпгрейд.

Ekde lasta semajno aĉetis Fantastico Luksoklasa instalilo, kiu en mia humila opinio estas unu el la plej deca por CPanel serviloj. Ni instalis ĝin kaj provita ĉiu iris glate. Hodiaŭ, kliento rakontis al mi pri problemo kun la kodigo de WordPress instalado. Tra la aĵoj kaj tuj ekbrilis problemo bazojn Latin1 kodoprezenton defaŭlte UTF8 anstataŭ supozante. Eĉ pli amuza estas, ke phpMyAdmin-skribis kaj estas uzata defaŭlte UTF8, dramo. Mi decidis revizii la dosieroj de Fantastico-al vidi se estas ie kie mi povas trovi mem enmetajxon datumbazo defaŭlte unue vidis nenion. Tiam io TEKNA mi vidi kio estas en my.conf-kaj kion vidi ekzistis neniu responda difinoj en la agordo kaj ĉiuj liaj lumoj sur kion oni metas kiel defaŭltan. Mysql servilo hardkodnat uzi UTF8 se ĝi estas agordita kun aliaj agordojn kaj Fantastico-tio evidente estas Latin1 ( kiuj estas sufiĉe stulta decido). Решението както винаги е тривиално добавят се 2 реда в [mysqld] часста за да се окаже UTF8 като кодировка по подразбиране и всичко заспива 🙂

character-set-server=utf8
collation-server=utf8_general_ci

Нямам никаква идея поради каква причина съм пропуснал тези настройки при положение че си играх да правя няколкофининастройки на mysql-а.

Plibonigita per Zemanta

Image representing MySQL as depicted in CrunchBase

Преди известно време бях писал за MySQL Plena Teksto Serĉo 🙂 Днес имах много интересно преживяване с една заявка. В общи линии заявката търси за резултати който липсват друга таблица. Един основне Select и един sub select в WHERE частта на заявката. В общи линии скелета и е

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

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

В общи линии елементарна заявка. Написах я за 30 сек пускам я и зацикли машината. След дълго и търпеливо чакане от моя страна или по точно ~43 сек . Ми се изплю резултат lol . Пффф лудница. Влизам в машината гледам процесора е нормално натоварен почти в idle състояние. Шок и ужас. Пускам пак заявката пак същия резултат. Fuck WTF. Пускам explain на заявката и всичко лъснавторото поле secondTextField е само full text search без index, а там табличката е скромна от около 35к реда. Кой да четеfull text search не е индекс. Вече е ясен проблема набързо едно

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

И нещата си дойдоха на местата Query took 0.0005 sec 😀

Внимавайте как си слагате индексите от тях ви зависи маргинално скоростта на заявката.

p.s Като цяло аз съм си крив за горната ситуация не само защото липсва индекс ами защото не ползва full text search метода 😀

Plibonigita per Zemanta

Hieraŭ post ĝisdatigi la versio de MySQL, servilo-vidis min komencis krii min, ke estas tablo, kiu ne estis fermita pure kaj bezonas riparon, ktp. bla, kion volas tiu tablo, Ankoraŭ mi havas mian 30-io sur ĉi servilo. Unu eblo estas vidi en la logo-s kio diras sur la temo kaj kuri riparo de la tablo aŭ la alia eblo – senkompare pli bone – Ĝi estas kuri riparo, verificación kaj optimumigo de ĉiuj tabloj. Ĉi uzos mysqlcheck ilo. Общо взето вариантите в случая са като и двете коменди са синонимни една на друга:

mysqlcheck -Aor -u root -p

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

Общо взето, която и от двете команди да използвате, ефектът ще е еднакъвароматична поправка, проверка и оптимизация на всички таблици. След като напишете която и да е от двете команди, ще бъдете попитани за root паролата на mysql server-a ви.