Praleisti ir pereiti prie pagrindinio turinio

MySQL password resset (Ubuntu server 18.04)

1. Stop MySQL: $ sudo service mysql stop  2. Make MySQL service directory:  $ sudo mkdir /var/run/mysqld  3. Give MySQL user permission to write to the service directory:  $ sudo chown mysql: /var/run/mysqld  4. Start MySQL manually, without permission checks or networking:  $ sudo mysqld_safe --skip-grant-tables --skip-networking &  5.  Log in without a password.  $ mysql -u root mysql  6. Update the password for the root user.
 mysql> UPDATE mysql.user SET authentication_string=PASSWORD('YOURNEWPASSWORD') WHERE User='root';
 mysql> EXIT; 
7. Turn off MySQL:  $ sudo service mysql restart

MySQL klasterio (MySQL cluster) diegimas

Įžanga

MySQL klasteris yra programinės įrangos technologija, užtikrinanti didelį duomenų prieinamumą ir pralaidumą. Yra nemažai sukurtų technologijų dideliems duomenų pralaidumams sukurti (pvz. Galera Cluster). Žymiai spartiems duomenų pralaidumams naudojama 'Sharding' technologija.
Čia aptarsime tik klasterio diegimą, nesigilinsim į optimizavimo dalykus. Todėl mums pakaks trijų virtualių mašinų (paprastai dėl didesnio našumo naudojama ne mažiau kaip keturios mašinos - serveriai).

Būtinos sąlygos

Mums prireiks trijų virtualių mašinų: viena MySQL klasterio valdymui ir dvi duomenų saugojimui. Taigi pasinaudojant VBox arba VMware pasiruošiam tris virtualias mašinas sekančių charakteristikų:

  • Operacinė sistema - Ubuntu Server 16.04.4
  • 1GB RAM
  • 8GB HDD
  • 1 CPU
  • Įgalintas vietinis tinklas
MySQL klasteris naudoja ne mažai operatyviosios atminties todėl kiekviena virtuali mašina turėtų turėti ne mažiau kaip 1GB atminties.

Vietinis tinklas su virtualiomis mašinomis turėtų atrodyti sekančiai:

  • 192.168.0.80 manager-node
  • 192.168.0.81 data-node1
  • 192.168.0.82 data-node2
IP adresai gali būti pakeisti pagal jūsų tinklo galiojančiais adresais.

Pirmas žingsnis - Atsiunčiam ir diegiam MySQL klasterį

Taigi mūsų atveju naudosime MySQL klasterio GPL 7.4.19 versija. Šis produktas skirtas MySQL 5.6 versijai ir apima:
  • Klasterio valdymo programinė įranga
  • Duomenų bazių tvarkyklių įranga
  • MySQL 5.6 serveris ir klientų sritis
Sekantis veiksmas yra toks pat visiems trims virtualioms mašinoms, todėl taupant laiką galite tai atlikti su viena virtualia mašina kurią veliau klonuosite.

Prieš pradėdami diegimą turime įdiegti libaio1 paketas kuris yra privalomas:
$ sudo apt-get install libaio1
Po ko galime atsisiųsti MySQL klasterio diegimo paketą:
$ wget https://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.19-debian7-x86_64.deb
Ir įdiegti:
$ sudo dpkg -i mysql-cluster-gpl-7.4.19-debian7-x86_64.deb
Po įdiegimo galime virtualią mašiną klonuoti du kartus ir kiekvienai atitinkamai mašinai suteikti vietinio tinklo parametrus (priskirti host vardą, statini IP adresą).

Antras žingsnis - Nustatom ir paleidžiam klasterio valdiklį (manager)

Šis žingsni kaip nustatyti klasterio valdiklį. Būtent jis atsako už teisingą duomenų sinchronizavimą ir apkrova tarp duomenų serverių. Klasterio valdiklis turi startuoti pirmas už visus kitus komponentus. Valdiklio nustatymai yra saugomi /var/lib/mysql-cluster/config.ini faile. Todėl turime sukurti sekantį failą ir įkelti sekančius nustatymus:

$ sudo mkdir /var/lib/mysql-cluster
$ sudo nano /var/lib/mysql-cluster/config.ini
Įkeliam sekančius nustatymus:
[ndb_mgmd]
# Management process options:
hostname=192.168.0.80   # Hostname of the manager
datadir=/var/lib/mysql-cluster   # Directory for the log files

[ndbd]
hostname=192.168.0.81  # Hostname of the first data node 
datadir=/usr/local/mysql/data    # Remote directory for the data files

[ndbd]
hostname=192.168.0.82     # Hostname of the second data node
datadir=/usr/local/mysql/data        # Remote directory for the data files

[mysqld]
# SQL node options:
hostname=192.168.0.80   # In our case the MySQL server/client is on the same Droplet as the cluster manager

Dabar galime paleisti klasterio valdiklį (manager):
$ sudo /opt/mysql/server-5.6/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini

Jei viskas gerai turėtumėm išvysti sekantį pranešimą:
MySQL Cluster Management Server mysql-5.6.29 ndb-7.4.11

Tam kad kiekvieną kartą startuojant virtualiai mašinai būtų atomatiškai paleidžiamas klasterio valdiklis atliekame sekančius veiksmus:
$ sudo systemctl enable rc-local.service

Atveriam sekantį failą komandinės eilutės įterpimui:
$ sudo nano /etc/rc.local

Įterpiam sekančią komandinę eilutę prieš ''exit 0" eilutę:
...
/opt/mysql/server-5.6/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini
exit 0

Trečias žingsnis - Nustatom ir paleidžiam duomenų mazgus

Toliau nustatysime ir paleisime du duomenų mazgus (192.168.0.81 ir 192.168.0.82). Sekančios komandos turi būti vienodai panaudotos abiejuose virtualiose mašinose.

Duomenų mazgo nustatymo failas randasi /etc/my.cnf adresu. Sukuriam minėtu adresu failą:
$ sudo nano /etc/my.cnf

Įkeliam nustatymus:
[mysql_cluster]
ndb-connectstring=192.168.0.80

Sukuriam direktorija kurioje bus saugomi MySQL duomenys:
$ sudo mkdir -p /usr/local/mysql/data

Paleidžiame duomenų mazgą:
$ sudo /opt/mysql/server-5.6/bin/ndbd

Jei viskas gerai turime išvysti sekantį pranešimą:
2016-05-11 16:12:23 [ndbd] INFO -- Angel connected to '192.168.0.80:1186' 
2016-05-11 16:12:23 [ndbd] INFO -- Angel allocated nodeid: 2

Tam kad duomenų mazgas startuotų pasileidžiant virtualiai mašinai atliekam sekančius veiksmus:
$ sudo systemctl enable rc-local.service

Atveriam sekantį failą komandinės eilutės įterpimui:
$ sudo nano /etc/rc.local

Įterpiam sekančią komandinę eilutę prieš ''exit 0" eilutę:
... 
/opt/mysql/server-5.6/bin/ndbd
exit 0

Atlikus su pirmu duomenų mazgu, ta patį reikia pakartoti su sekančiu.

Ketvirtas žingsnis - Nustatom ir paleidžiam MySQL serverį

Standartinis MySQL serveris standartiškai galimas įdiegimui iš Ubuntu bibliotekos (saugyklos), bet dėja ji neplaiko MySQL NDB varikliuko. Todėl MySQL serverį teks diegti savarankiškai. Pačioje pradžioje jau sudiegėme MySQL serverį ir kliento sritį, tereikia atlikti sekančius nustatymus. Kaip ir buvo minėta nustatymai saugomi sekančiam faile /etc/my.cfg

Sukuriam nustatymų failą:
$ sudo nano /etc/my.cnf
Įkeliam nustatymus:
[mysqld]
ndbcluster # run NDB storage engine

Pagal nusistovėjusia praktika MySQL serveris turi veikti savo vartotojo srityje (mysql) ir priklausyti savo grupei (mysql).

Todėl turime sukurti grupe:
$ sudo groupadd mysql

Sukuriam grupe mysql ir uždraudžiam naudotis 'shell':
$ sudo useradd -r -g mysql -s /bin/false mysql

Sekantys veiksmai sukurs pirmines duomenų bazes:
$ sudo /opt/mysql/server-5.6/scripts/mysql_install_db --user=mysql

Perkeliam paleisties scenarijaus failą:
$ sudo cp /opt/mysql/server-5.6/support-files/mysql.server /etc/init.d/mysqld

Suteikiam vartotojo ir grupes teisias sekančiomis komandomis:
$ sudo mkdir -p /data/mysql
$ sudo mkdir /var/lib/mysql-files
$ sudo chown mysql:mysql /var/lib/mysql-files
$ sudo chown mysql:mysql /data/mysql


Įgalinam paleisties scenarijų (script):
$ sudo systemctl enable mysqld.service

Ir pagaliau galime paleisti savarankiškai MySQL serverį
$ sudo systemctl start mysqld

Kadangi MySQL serveris naudoja savo failus, turime sukurti nuorodą į kelią kuris naudojamas pagal nutylėjimą:
$ sudo ln -s /opt/mysql/server-5.6/bin/mysql /usr/bin/

Bandom paleisti MySQL serverio komandinės eilutės interpretatorių:
$ mysql

Jei viskas tvarkoje, pamatysime sekantį užrašą:
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 3
Server version: 5.6.29-ndb-7.4.11-cluster-gpl MySQL Cluster Community Server (GPL)

MySQL klasterio testavimas

Netrukus...

Darbas su NDB

Netrukus...

Populiarūs šio tinklaraščio įrašai

Kaip parsisiųsti video ir muziką iš Youtube, Vimeo, Facebook linux aplinkoje

Kaip parsisiųsti videoYra nemažai įrankių, leidžiančių linux aplinkoje parsiųsti vaizdo įrašus iš svetainių. Tačiau kiekvienas iš jų turi savų trūkumų. Didžiausia problema šių programų, kad internetinės svetainės vis atnaujina savo kodą, dėl ko vieną dieną programa gali tiesiog nebeveikti.
Viena iš geriausiai prižiūrimų (atnaujinamų) programų linux aplinkai yra ClipGrab. Jos dėka galėsite ne tik atsiųsti video iš svetainių (Youtube, Vimeo, Facebook, Dailymotion) bet ir konvertuoti į norimą formatą (mp3, mpeg4 ir kt.). ClipGrab diegimas Štai keletas žingsnių kaip tai paprastai ir greitai padaryti linux aplinkoje terminalo pagalba: 1. Visų pirmą, kad programą pilnai veiktų diegiame vaizdo ir garso formatų iškodavimo bibliotekas sekančia komanda:  $ sudo apt-get install ffmpeg 
Jei įdiegti nepavyks, ir terminalo lange pamatysite užrašą 'E: Unable to locate package ffmpeg', vadinasi diegimas nepavyko ir teks pakartoti diegimą, tik prieš tai nurodyti programos saugyklos adresą. Tuom…

Kaip automatiškai perkrauti MySQL serverį jam sustojus

Naudojantis MySQL serveriu kartais taip jau nutinka, kad dėl neapskaičiuotų resursų ar staiga padidėjusių užklausų MySQL serveris pakimba. Tai gali kartotis nesistemingai ir dėl tokios retos klaidos nesinori gaišti laiko ir tiesiog tenka ranka perkrauti MySQL serverį (žinoma geriausia išsiaiškinti priežastį, kad to nebūtų - tačiau niekada negali žinoti). Paprastai pakibus MySQL serveriui tikrinant būseną matome sekantį atsakymą:  $ sudo service mysql status 
● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; disabled; vendor preset: enabled)
   Active: inactive (dead) Taigi, kaip minėjau galime perkrauti rankiniu būdu ($ sudo service mysql restart), tačiau yra paprastesnis variantas. Galime paruošti scriptą, kuris pamatęs MySQL būseną 'inactive (dead)' perkraus MySQL serverį. Minetą scripto vykdymą galime atiduoti vykdyti numatytu laiku CRON tarnybai. Nesigilinsiu į scriptų rašymą šiai problemai išspręsti, nes buvo atrastas paprastas ko…

Kaip saugiai ištrinti duomenis iš disko

Kartais tiesiog ištrinti duomenis iš disko nėra saugu. Paprastai ištrynus failus ir net pašalinus iš šiukšlinės yra gan nesunku atstatyti duomenis su tam skirtomis programomis. Žinant tai, parduoti kompiuterį ar diską be saugaus duomenų ištrynimo yra tiesiog nesaugu. Tam, kad duomenis visiškai ištrinti iš disko yra naudojamas specialios programos. Bet prieš kalbant kaip tai padaryti reiktų atminti, kad visiško ištrynimo yra keletas metodų kurie priklauso nuo laikmenos tipo:
Seni kietieji diskai (HDD - Hard Disk Drive): dėl tuometinių technologijų, turi tarpus tarp duomenų įrašų eilučių. Todėl turint specialus įrankius, net ir po saugaus ištrynimo galima duomenis atkurti. Kad to išvengti saugų ištrynimą reikėtų atlikti ne vieną kartą, o tai reiškia gan ilgą procesą laiko atžvilgiu.Nauji kietieji diskai: šiuo metu nėra technologijos leidžiančios po vieno saugaus ištrynimo atkurti duomenis.Puslaidininkiai diskai (SSD - Solid State Drive): saugus ištrynimas šiems diskams reiškia tarnavimo…