В тази публикация в блога ще ви покажем ръководство стъпка по стъпка как да инсталирате и настроите MySQL сървър както ръчно на операционната система Ubuntu 20.04, така и чрез използване на услугата за управлявана база данни на ScaleGrid. В следващите раздели на този урок ще ви помогнем през всяка стъпка, за да настроите успешно вашия собствен MySQL сървър и да го конфигурирате правилно.
Малко за MySQL и Ubuntu
MySQL е система за управление на релационни бази данни (СУБД) с отворен код. Той работи на Windows и Linux сървъри и обикновено се инсталира като част от стека LAMP (Linux, Apache, MySQL, PHP/Python/Perl) или стека LEMP (Linux, Nginx, MySQL, PHP). Това е подходящ избор, ако знаете, че просто се нуждаете от база данни, тъй като тя е бърза, проста и мащабируема SQL-базирана система и се счита за най-популярната система за управление на релационни бази данни.
Докато Ubuntu е една от най-популярните настолни операционни системи с отворен код в света, Ubuntu 20.04 се предлага със стабилност, устойчивост от корпоративен клас и дори по-добра сигурност в рентабилен модел.
Как да инсталирате MySQL на Ubuntu 20.04
Преди да се потопим в процеса на инсталиране на MySQL сървър на Ubuntu, имайте предвид тези предпоставки:
- Сървър на Ubuntu 20.04 с не-root администратор или sudo потребител за извършване на авторитетните стъпки и UFW-конфигурирана защитна стена
- Системата трябва да се актуализира с помощта на:
sudo apt update
sudo apt upgrade -y
- Стабилна мрежова връзка
Прясна инсталация на MySQL на Ubuntu 20.04
Инсталирайте MySQL
За да инсталирате MySQL на Ubuntu 20.04, може да се изпълни проста команда (apt install mysql сървър), тъй като инсталационният пакет е част от официалното хранилище на Ubuntu 20.04.
apt install mysql-server -y
Осигуряване на инсталацията на MySQL сървъра
MySQL сървърът има предварително изграден скрипт за неговата сигурна инсталация. Като обичайна практика, за да направите това сигурна инсталация, стартирайте този скрипт след командата за инсталиране. Това, което прави, е, че позволява на потребителя да зададе root паролата за MySQL, да деактивира достъпността на root акаунта извън локалния хост, да премахне анонимни потребителски акаунти и също така да премахне тестовата база данни, която може да бъде достъпна от анонимни потребители. Този скрипт може да бъде извикан с този sudo
команда:
sudo mysql_secure_installation
След стартиране на скрипта за защитена инсталация се появява поредица от подкани. Първата подкана е да настроите VALIDATE PASSWORD COMPONENT
. Тази подкана (ако е избрана) ще извърши проверка при създаването на паролата на потребителя. Той ще ви позволи да създадете паролата само ако отговаря на стандартите за пароли в MySQL.
Настройване на root парола
Следната подкана е за настройка на паролата за root. Потребителят трябва да зададе тази парола. Отговорете на всички следващи подкани с „Да“, тъй като това е най-добрата практика от гледна точка на сигурността.
Настройване на SSL за инсталацията на MySQL сървър
Има моменти след инсталиране на MySQL, когато сървърът на базата данни е конфигуриран на отделна физическа машина в същата или различна мрежа. За да комуникира с такава база данни, комуникацията трябва да бъде защитена и криптирана. Следователно, SSL сертификатите трябва да бъдат инсталирани и активирани на сървъра на базата данни. Протоколът SSL използва двойка ключове за удостоверяване, защита и управление на защитени връзки. Използвайте следната команда, за да генерирате SSL ключове:
sudo mysql_ssl_rsa_setup --uid=mysql
Директорията им по подразбиране съдържа тези ключове и можете да ги намерите, като извикате следната команда:
sudo sudo find /var/lib/mysql -name '*.pem' -ls
mysql> \s
Като извикате горната команда от SQL подканата, можете да потвърдите, че SSL е активен, като потърсите реда, който казва SSL: Cipher in use is […]
, както се вижда на изображението по-долу.
Обезопасяване на вашата база данни
Сигурността на базата данни е един от най-критичните елементи, които трябва да имате предвид, когато планирате да инсталирате MySQL. Нападателите винаги търсят начини да получат бекдор вход в системите на бази данни и да получат вътрешна информация за целта. Промяната на неговия порт по подразбиране е лесен начин за повишаване на сигурността на вашата база данни. Това може да се промени в конфигурационния файл на адрес /etc/mysql/mysql.conf.d/mysqld.cnf
.
Създайте MySQL потребител и база данни
С помощта на тази проста команда можете да създадете потребителски акаунт в базата данни на MySQL заедно с неговата парола:
CREATE USER 'Username' @ 'localhost' IDENTIFIED BY 'StrongPassword';
Полето localhost
в CREATE USER
командата показва, че потребителят ще се свърже от същия сървър. Може да бъде заменен с IP адрес, ако искате да се свържете от машина с определен IP адрес, или може да бъде заменен със знак за процент %
ако потребителят иска да получи достъп до БД отвсякъде.
Ако искате да създадете само база данни, тя може да бъде създадена с помощта на следната команда:
CREATE DATABASE databasename;
След като създадете потребителя и базата данни, на потребителя ще бъдат предоставени необходимите разрешения за базата данни.
Разрешенията могат да бъдат от всякакъв тип; например CREATE
, ALTER
, INSERT
, UPDATE
, DELETE
, SELECT
, RELOAD
и т.н. Обикновено собственикът на базата данни се нуждае от всички разрешения и тези разрешения могат да бъдат присвоени независимо на потребител. Всички тези разрешения могат да бъдат предоставени наведнъж с помощта на командата.
GRANT ALL PRIVILEGES ON databasename.tablename TO 'username' @ 'localhost';
Отново ключовата дума localhost може да бъде заменена с IP адрес или с %
знак, ако потребителят възнамерява да се свърже от конкретен IP адрес или друг източник.
Привилегиите за потребител могат да се видят чрез командата SHOW GRANTS
SHOW GRANTS for 'databaseuser'@'localhost';
Всички привилегии могат да бъдат отменени за потребител с помощта на командата:
REVOKE ALL PRIVILEGES ON database.name.* FROM 'database.user'@'localhost';
Тук можете да видите това след стартиране на REVOKE
команда, няма привилегии за потребителя jason
.
Създаване и изтриване на таблици
Лесно е да добавяте или изтривате таблици от вашата база данни. Всичко, което трябва да направите, е да използвате една от следните команди:
DROP TABLE databasename.tablename
CREATE TABLE databasename.tablename ( column1 datatype,column2 datatype ,column3 datatype);
Параметърът на колоната указва името, докато параметърът datatype определя какъв тип данни съдържа колоната.
Има моменти, когато първичен ключ трябва да се добави към колона. Първичният ключ ви позволява уникално да идентифицирате всеки запис във вашата таблица. Това може да стане, като го споменете в CREATE TABLE
команда. Примерът по-долу създава колона user_id
с първичен ключ, който се увеличава автоматично. Имайте предвид, че първичният ключ трябва да съдържа уникални стойности и не може да съдържа стойности null
Добавяне или премахване на колони в таблица
Колоните могат също да се добавят или изтриват от конкретна таблица на база данни след нейното създаване.
За да направите това, променете базата данни, която искате да промените, като използвате use database_name
команда.
Впоследствие следните команди ще добавят и пускат колона:
ALTER TABLE tablename ADD columnname datatype;
ALTER TABLE tablename DROP columnname;
Вмъкване на данни в таблица
Вмъкнете данни в таблица, като използвате следната команда:
INSERT INTO tablename (column1,column2,column3) VALUES ('value1','value2','value3' );
Ще трябва да посочите имената на колоните и стойността, която да се вмъкне във всяка колона по ред. Ако искате да вмъкнете стойности във всяка колона на таблица, можете просто да пропуснете колоните и да започнете да задавате стойностите директно след името на таблицата:
INSERT INTO tablename VALUES ('value1','value2','value3' );
Update Data in a Table
Използвайте следната команда, за да актуализирате данните в таблица:
UPDATE tablename SET columnname= 'newvalue' WHERE columnname='value'
WHERE
условието казва в кой ред трябва да се актуализират данните. Ако условието не е посочено, тогава данните се актуализират във всички редове на посочената колона.
Изберете данни от таблица
За да изберете и прегледате данни от определени колони в таблица, използвайте следната команда:
SELECT column1,column2 FROM tablename;
Въпреки това, за да изберете всички колони от таблица, използваната команда е:
SELECT * FROM tablename;
Активиране на двоично регистриране
Активирането на двоично регистриране в сървъра на базата данни MySQL ви позволява да регистрирате заявките, които са направили промени в базата данни. Двоичното регистриране е полезна функция, която трябва да бъде активирана, ако например трябва да отстраните проблем, причинен от заявка в базата данни.
За да активирате двоично регистриране, добавете следния ред в конфигурационния файл в /etc/mysql/mysql.conf.d/mysqld.cnf
.
log-bin=mysql-bin.log
За да потвърдите дали двоичното регистриране е активно, извикайте следната команда от обвивката на MySQL:
show variables like '% log_bin%'
По подразбиране двоичните регистрационни файлове се съхраняват в /var/lib/mysql
директория в повечето дистрибуции на Linux, включително Ubuntu.
Настройте проста асинхронна репликация
MySQL има поддръжка за репликация, което е полезно, когато планирате възстановяване след бедствие и се уверите, че минимизирате потенциала за прекъсване. MySQL поддържа два типа репликации:
- Полусинхронна репликация
- Асинхронна репликация
При полусинхронна репликация, когато източник извършва транзакция, всички реплики също ще са извършили транзакцията, преди източникът да се върне към сесията, която е извършила транзакцията. Недостатъкът е, че причинява голямо забавяне на приключването на транзакцията поради гореспоменатата система за транзакции.
Докато при асинхронна репликация източникът записва събития в своя двоичен дневник и репликите ги изискват, когато са готови. Въпреки това няма гаранция, че някое събитие някога ще достигне до реплика.
По подразбиране MySQL има активирана асинхронна репликация поради бързото време за обработка. И все пак основният недостатък е, че ако изходната база данни се провали, няма начин да се извлекат данни, които не са завършили транзакциите към репликирани БД. От друга страна, полусинхронният режим на репликация се фокусира повече върху наличността и издръжливостта на данните, но е много бавен. Изборът на режим на репликация зависи единствено от специфичните нужди на потребителя около настройката на тяхната база данни.
Вътре във файла my.cnf за изходния сървър и реплика сървъра можете да напишете идентификаторите на сървъра съответно като:
server_id=1
server_id=2
На изходния сървър може да бъде създаден специален потребител на MySQL, който ще се използва от репликата за свързване към изходния сървър.
GRANT REPLICATION SLAVE ON *.* TO ‘masterusername’ @ 'ipaddress of slave server' → IDENTIFIED BY ‘masterpassword’;
Процесът на репликация на сървъра за реплика може да бъде стартиран от:
mysql> CHANGE MASTER TO -> MASTER_HOST='ip address', -> MASTER_PORT=port number, -> MASTER_USER='username', -> MASTER_PASSWORD='password', -> MASTER_LOG_FILE='', -> MASTER_LOG_POS=4; mysql> start slave;
Тези инструкции ще започнат да създават реплики сървъра като копие на изходния сървър.
Архивиране/възстановяване на MySQL база данни
Поддържането на резервно копие на вашата база данни винаги е добра идея, никога не знаете кога може да се нуждаете от нея, за да сте сигурни, че критичните данни не са загубени. За да архивирате база данни за MySQL на Ubuntu OS, просто изпълнете следния mysqldump
команда:
sudo mysqldump -u root -p <database.name> > <filename.sql>
За възстановяване на изтрита база данни първо се създава базата данни със същото име в MySQL. След това базата данни се възстановява с командата:
sudo mysql -u root -p <database.name> < <filename.sql>
Следващата екранна снимка първо изтрива нашата test_database, след това я създава отново и се опитва да възстанови всички нейни данни от архива, създаден по-рано. Импортирането на данни може да се извърши и чрез същия процес.
Завършване на инсталирането на MySQL в Ubuntu
Вече завършихте успешно основните стъпки за инсталиране на MySQL на Ubuntu 20.04. След завършване на инсталацията ще имате оперативна релационна база данни, която можете да използвате, за да създадете следващото си приложение или уебсайт.
Ако предпочитате целият този процес да бъде автоматизиран и управляван от експерти, вижте следващата част от това ръководство.
Използване на ScaleGrid за настройка на внедряването на DigitalOcean MySQL
В тази част от ръководството използваме нашето напълно управлявано MySQL хостинг решение, тъй като предлага най-висока пропускателна способност и най-ниска латентност на DigitalOcean. Научете повече в статията за най-добрата производителност на MySQL DigitalOcean, за да сравните ценообразуването, забавянето и производителността на ScaleGrid спрямо управляваните бази данни DigitalOcean.
Целият процес трябва да отнеме по-малко от 20 минути, само с няколко минути в началото, за да персонализирате конфигурацията си за внедряване на MySQL, и няколко минути в края, за да се свържете с вашето приложение .
След като се регистрирате за безплатен пробен акаунт, първото нещо, което ще направите, е да изберете MySQL като своя база данни, DigitalOcean като своя облак и Специализиран хостинг като план за стартиране на процес на създаване на клъстер:
Стъпка 1. Въведете подробности за внедряването на MySQL
Съветникът за създаване на клъстер ще се отвори към първата стъпка, където можете да персонализирате основните подробности за вашето внедряване. Въведете име за своя клъстер с помощта на букви и цифри и използвайте уникално, описателно име, за да можете лесно да разпознаете своя клъстер по-късно.
След това изберете центъра за данни на DigitalOcean, който искате да използвате за вашия главен сървър от падащото меню за облачния регион – препоръчваме ви да използвате същия регион като вашите приложения DigitalOcean Droplets за най-доброто производителност. След това можете да изберете размера на вашата VM на екземпляри на DigitalOcean Droplet и версията на MySQL, която искате да използвате (поддържат се всички основни версии). InnoDB Storage Engine е по подразбиране за всички разгръщания на MySQL. Щракнете върху следващия.
Стъпка 2. Активирайте репликацията от главен-подчинен обект
В стъпка 2 можете да активирате репликацията на DigitalOcean MySQL главен-подчинен, за да добавите висока наличност към внедряването си. Репликацията е важна, за да поддържате приложението си достъпно и онлайн за вашите потребители, в случай че регионът на вашия център за данни DigitalOcean изпадне. Докато DigitalOcean е високонадежден доставчик на облак с 99,99% време на работа, центровете за данни неизбежно се срива, така че репликирането на вашите данни в допълнителни места на центрове за данни ви позволява да сведете до минимум риска от загуба на данни и престой за вашите потребители.
Ако искате да продължите със самостоятелно внедряване, щракнете върху Напред, за да преминете към стъпка 3, без да активирате конфигурацията главен-подчинен.
Забележка – конфигурацията главен-подчинен е достъпна само за платени акаунти, не можете да настроите внедряване на набор от реплика, докато сте в пробен режим.
Конфигурирайте настройката на MySQL Master-Slave
Тук има няколко опции за персонализиране на вашата настройка на MySQL master-slave. Първо, можете да избирате между 2 + 1 кворум или 3 възела за вашето внедряване. И двете предлагат висока наличност, но в настройката 2 + 1 Quorum имате само 2 възела, носещи данни, тъй като възелът Quorum служи като вземащ решения при събитие при отказ. Можете също да се свържете с екипа за поддръжка, за да персонализирате конфигурацията си главен-подчинен, за да добавите още възли към внедряването си.
След това можете да избирате между полусинхронна и асинхронна репликация. Полусинхронната репликация гарантира, че поне един подчинен е получил всички данни, които главният е поел, като гарантира, че превключването към правилния подчинен елемент е без загуби. При асинхронна репликация всяко подчинено устройство се синхронизира асинхронно с главната, така че преминаването при отказ от главен към подчинен може да доведе до превключване към сървър, който не е напълно синхронизиран до текущия главен.
Накрая, персонализирайте местоположението на центъра за данни на DigitalOcean, което искате да използвате за вашите подчинени възли. След като сте готови, щракнете върху следващия.
Как да настроите MySQL на DigitalOcean Щракнете за Tweet
Стъпка 3. Активирайте SSL
В стъпка 3 можете да активирате SSL за вашето внедряване. По подразбиране MySQL сървърът винаги инсталира и активира SSL конфигурация, но не е наложено клиентите да се свързват чрез SSL. Клиентите могат да изберат да се свързват със или без SSL, тъй като сървърът позволява и двата типа връзки. Научете повече за конфигурирането и управлението на SSL в този урок за MySQL.
Стъпка 4. Конфигуриране на защитни стени
В последната стъпка от процеса на създаване на клъстер въведете поне един IP CIDR, на който ще бъде разрешен достъп до внедряването на MySQL, за да настроите правилото за защитната стена. Можете да намерите текущия си IP CIDR в горната част на страницата. Те могат да бъдат персонализирани по-късно както на ниво клъстер, така и на ниво акаунт. След като го въведете, щракнете върху Добавяне. Въведете всички IP CIDR, които искате, и след това щракнете върху следващия.
Стъпка 5. Преглед и създаване
Последната страница предоставя кратко резюме на вашия нов MySQL DigitalOcean клъстер. Прегледайте всички подробности и щракнете върху бутона Предишен, за да се върнете към по-ранна стъпка и да промените конфигурациите си. След като сте готови, щракнете върху Създаване, за да развиете своя клъстер.
И това е всичко! Вашето внедряване вече се предоставя! Това отнема около 15 минути, така че докато чакате, можете да се запознаете с инструментите за управление на MySQL в конзолата – архивиране, възстановяване, мащабиране, сигнали, анализ на заявки и др.
Свързване и мигриране
След като състоянието на клъстера се промени от „Създаване“ на „Изпълнение“, можете да свържете внедряването си. Има няколко различни начина да направите това – чрез низа ви за връзка с вашето приложение, чрез командния ред, чрез WordPress, чрез MySQL Workbench или други популярни GUI инструменти. Всички данни за връзката ви са налични в долната половина на раздела Преглед на страницата с подробности за клъстера.
Посетете горните раздели, за да създадете MySQL база данни и да създадете потребител на база данни на MySQL. Те могат да бъдат достъпни и управлявани по всяко време от конзолата ScaleGrid.
Мигрирайте съществуващата си MySQL инсталация за минути
Мигрирането също е автоматизиран процес, който изисква само няколко подробности от съществуващото ви внедряване. Щракнете върху бутона Импортиране на данни във вашия раздел Общ преглед и въведете вашето име на сървър, порт, име(я на базата данни), потребителско име и парола. Вижте нашия документ за миграции на MySQL за повече подробности и допълнителни опции за миграция.
|
Изпълнение на вашия MySQL сървър на DigitalOcean
След като сте готови, вашето MySQL внедряване може виртуално да работи на автопилот. Тъй като ScaleGrid е напълно управлявана услуга, ние се занимаваме с цялата ви ежедневна администрация и поддръжка на вашите MySQL бази данни, така че можете да се съсредоточите върху изграждането на вашето приложение. Ако възникне нещо, което изисква вашето внимание, като например при изчерпване на дисковото пространство, ще ви изпратим известие, за да можете да влезете и да видите дали сте готови да разширите своя клъстер.
Можете също да се свържете с нашите MySQL експерти по всяко време чрез нашата денонощна поддръжка, 7 дни в седмицата, за да ви помогнем да настроите и отстраните неизправностите при внедряването си.