Розгорніть набір реплік із високою доступністю в MongoDB 3.4 за допомогою ключового файлу для контролю доступу в Ubuntu 16.04

З моменту створення в 2009 році MongoDB лідирує в галузі NoSQL. Однією з основних концепцій MongoDB є набір реплік, тому перш ніж працювати з ним, давайте розглянемо концепцію.

Про набір реплік

Найпростішою моделлю зв'язку, що використовується при реплікації баз даних, є архітектура Master-Slave. Як випливає з назви, ця модель має 2 ролі, які розподіляються в унікальному головному і багатьох підлеглих, роль ведучого полягає в обробці операцій читання та запису, які виконуються клієнтами, а підпорядковані пристрої розглядаються як копія ведучого.

Найважливішою перевагою цієї моделі є те, що операції резервного копіювання не погіршують продуктивність головного вузла, операції резервного копіювання виконуються асинхронно, і це може стати серйозною проблемою, коли головний вузол виходить з ладу. Підлеглі вузли доступні лише для читання, і їх потрібно вручну перемістити до головного вузла, тому в цей час існує ймовірність втрати даних.

Один із варіантів вирішення проблеми доступності — мати більше одного головного в архітектурі, але це може призвести до іншої проблеми узгодженості даних між цими екземплярами та додаткової складності конфігурації.

Тепер, враховуючи контекст, ми можемо представити технологію Replica Set MongoDB. Набір реплік — це назва архітектури Master-Slave, яка має автоматичне перемикання збоїв, тому в момент, коли головний primaryвузол (який тепер називається ) не зможе належним чином функціонувати, electionвін спрацює, і новий основний вузол буде обрано з інших відомих ( іменується зараз як secondaries).

Первинний вузол

Основний вузол є єдиним, який виконує операції запису, за замовчуванням операції читання також обробляються основним, але цю поведінку можна змінити пізніше.

Операції записуються в oplog(журнал операцій), потім вторинні вузли оновлюють свій вміст асинхронно на основі вмістуoplog

Примітка: oplogце обмежена колекція, це означає, що колекція має обмеження, local.oplog.rsви можете перевірити вміст цієї колекції всередині оболонки mongo в будь-якому члені набору.

Вторинний вузол

Окрім того, що вторинний вузол виконує належне резервне копіювання бази даних, він виконує такі ролі:

  • При необхідності може приймати операції читання.
  • Може ініціювати вибори, якщо основний вузол виходить з ладу.
  • Може голосувати на виборах.
  • За потреби може стати новим основним.

Завдяки цим характеристикам ми можемо мати різні типи вторинних вузлів:

  • Пріоритет 0 : ці вузли не можуть стати primaryі не можуть ініціювати вибори, але вони можуть голосувати на виборах, мати повну копію та приймати операції читання. Вони можуть бути корисними при розгортанні кількох центрів обробки даних.
  • Прихований : це Priority 0члени, але, крім того, вони не можуть обробляти операції читання. При необхідності вони можуть проголосувати. Переважними завданнями для цих учасників є звіти та резервне копіювання.
  • Затримка : ці вузли відповідають за «історичні дані», будучи затриманими на певну одиницю часу. Учасник із затримкою має бути priority 0вузлом, і рекомендується, щоб він також був hiddenучасником.

Передумови

  • Доступність для запуску щонайменше 3 екземплярів Ubuntu 16.04 x64 з однаковим розміром сервера.

Спроектуйте набір реплік

Перед розгортанням інфраструктури важливо спроектувати її, і в цьому проекті є моменти, які слід враховувати.

Вибір кількості членів

Майте на увазі, що мінімальна кількість елементів для побудови набору реплік становить 3. Ви можете змішати три типи вузлів з як мінімум одним основним і одним вторинним вузлом.

У цьому посібнику ми розгортаємо 3 учасників, одного основного та двох стандартних вторинних.

Примітка. Рекомендується мати максимальну кількість 7 членів з правом голосу з поєднанням арбітрів і вторинних членів.

Виберіть назву

Назва лише для довідки, але ви використовуєте її в конфігурації набору. Майте на увазі, що у вашому виробничому середовищі може бути більше однієї репліки, тому не нехтуйте назвою набору.

Цей посібник заохочує користувача вибрати назву набору.

Розподіл учасників у різних центрах обробки даних

У цьому посібнику пропонується розгорнути в одному центрі обробки даних, щоб уникнути проблем зі зв’язком.

Примітка: у разі розгортання в різних центрах обробки даних рекомендується обгорнути свої вузли VPN

Інструкції з розгортання

Крок 1. Розгорніть мінімальні вузли для вашої інфраструктури

Запустіть 3 вузли Ubuntu 16.04 x64; в тому самому регіоні з вашого клієнтського порталу, якщо це можливо. Не забудьте назвати їх відповідно до типу проекту, з яким ви маєте справу, і переконайтеся, що всі ці вузли мають однаковий розмір сервера.

Після того, як ви розгорнули свої 3 вузли, ви повинні бути впевнені, що кожен вузол може спілкуватися з іншими. Вам потрібно розділити ssh на два вузли та досягти інших за допомогою ping -c 4 EXAMPLE_IP. Змініть EXAMPLE_IPна фактичні IP-адреси ваших вузлів.

Тут ви можете побачити приклад успішної комунікації між двома вузлами.

root@foo_node:~# ping -c 4 EXAMPLE_IP
PING EXAMPLE_IP (EXAMPLE_IP) 56(84) bytes of data.
64 bytes from EXAMPLE_IP: icmp_seq=1 ttl=59 time=0.594 ms
64 bytes from EXAMPLE_IP: icmp_seq=2 ttl=59 time=0.640 ms
64 bytes from EXAMPLE_IP: icmp_seq=3 ttl=59 time=0.477 ms
64 bytes from EXAMPLE_IP: icmp_seq=4 ttl=59 time=0.551 ms

--- EXAMPLE_IP ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3021ms
rtt min/avg/max/mdev = 0.477/0.565/0.640/0.064 ms

Крок 2: Встановіть MongoDB на кожному вузлі вашої інфраструктури

Загалом, ви можете використовувати пакунок MongoDB Ubuntu, але краще використовувати офіційне репо спільноти, оскільки воно завжди оновлюється. Це репо містить такі пакети:

  • mongodb-org , груповий пакет, який охоплює чотири компоненти.
  • mongodb-org-server , тут міститься mongodдемон (основний процес, який обробляє запити даних).
  • mongodb-org-mongos , тут міститься mongosдемон (служба маршрутизації для спільних розгортань).
  • mongodb-org-shell , це mongo shellінтерфейс JavaScript.
  • mongodb-org-tools , деякі інструменти для адміністрування.

Перейдіть до встановлення пакетів.

Імпортуйте відкритий ключ до системи керування пакетами.

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6

Створіть файл списку для MongoDB '/etc/apt/sources.list.d/mongodb-org-3.4.list'.

echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

Оновіть базу даних пакетів.

sudo apt-get update

Встановіть метапакет MongoDB.

sudo apt-get install -y mongodb-org

Запустіть службу MongoDB.

sudo service mongod start

Тепер ви можете відкрити його mongo shellв будь-якій сесії bash. Для цього необхідно скористатися mongoкомандою. Вас зустріне щось подібне.

MongoDB shell version v3.4.7
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.7
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
Server has startup warnings:
*Some extra logs are cut by the way*
>

Не забудьте вимкнути службу за допомогою sudo service mongod stop, тому що пізніше ми почнемо mongodзнову з деякими параметрами. Повторіть цей процес у всіх 3 вузлах набору.

Крок 3: Налаштуйте ключовий файл доступу

Використання ключового файлу змушує використовувати дві концепції в адмініструванні набору реплік. Першим є Internal Authentication. За замовчуванням ви можете почати mongo shellсеанс без використання користувача, і цей сеанс матиме повний контроль над базою даних, але коли ви використовуєте ключовий файл для аутентифікації, ваш mongo shellсеанс досягає стану, який називається localhost exception. Цей стан дозволяє лише створити користувача адміністратора та набір реплік. Друге поняття - це Role-Based Access Control, або іншими словами авторизація. Це застосовується для керування адміністративними рівнями набору реплік.

Створіть свій ключовий файл

Ключовий файл — це пароль для використання в наборі, цей пароль має бути однаковим для всіх членів набору. Для підвищення безпеки важливо використовувати випадковий ключ із вибраним інструментом.

Вміст має містити від 6 до 1064 символів. Також ви повинні встановити read onlyдозвіл для ключового файлу.

chmod 400 PATH_OF_YOUR_KEYFILE
Розмістіть ключовий файл у кожному елементі набору

Тепер скопіюйте свій ключовий файл до кожного члена набору, будь ласка, використовуйте послідовну папку для подальшого використання та не зберігайте її на знімному носії.

Також використовуйте папку для файлу, до якого mongodможна отримати доступ.

Примусово використовувати ключовий файл у наборі реплік

На цьому кроці нам потрібно запустити mongod daemon член у кожному набору . Існує два способи запуску mongodпроцесу: за допомогою файлу конфігурації або за допомогою командного рядка. Обидва методи досить прості, але для простоти в цьому посібнику використовується версія командного рядка.

Конфігурація командного рядка

Використовуйте назву, яку ви вибрали раніше в цій команді.

mongod --keyFile PATH_OF_YOUR_KEYFILE --replSet "YOUR_SET_NAME"

За замовчуванням mongodне запускається як демон. Вам потрібно буде використовувати --forkпараметр або використовувати його, upstartщоб повністю запустити його як демон. У цьому підручнику ми не заохочуємо працювати mongodяк демон, щоб ви могли бачити журнали безпосередньо у своєму терміналі.

Примітка. Уважно введіть назву набору реплік, оскільки після створення ви не можете змінити його.

Крок 4: Підключіться до інтерфейсу локального хосту з одного з членів набору

Примітка: якщо ви запускаєте mongodяк процес без демона, вам доведеться відкрити інше з’єднання ssh, щоб продовжити роботу.

Ви повинні використовувати mongoкоманду, щоб відкрити файл mongo shell. Це можна зробити в будь-якому члені набору.

На даний момент ми перебуваємо в стані, який називається localhost exception. Коли для налаштування mongodпроцесу використовується ключовий файл , ви зобов’язані створити адміністратора бази даних, перш ніж застосовувати операції читання-запису, але ми розглянемо це пізніше.

Крок 5: Ініціація набору реплік

Це делікатна частина, ми використовуємо команду rs.initiate()всередині mongo shellз кроку 4. Перед використанням огляду цієї команди , давайте його.

rs.initiate(
  {
    _id : <replicaSetName>,
    members: [
      { _id : 0, host : "example1.net:27017" },
      { _id : 1, host : "example2.net:27017" },
      { _id : 2, host : "example3.net:27017" }
    ]
  }
)

Перше _idполе є рядком і має відповідати тому, --replSetяке було передане до mongod. Крім того, кожне значення hostмає бути або IP-адресою, або іменем домену кожного члена набору реплік. Не забудьте додати порт, який використовує екземпляр mongo, до кожного члена.

Тепер настав час виконати команду з вашими даними, це призведе до запуску election, тоді основний буде обраний автоматично.

Тут ви повинні зауважити, що ваш курсор оболонки змінився на YOUR_SET_NAME:PRIMARY>або YOUR_SET_NAME:SECONDARY. Це означає, що створення набору було успішним.

Щоб продовжити роботу, вам потрібно знайти primaryфайл , якщо ви його, звичайно, немає. Використовуйте rs.status()команду, щоб показати інформацію про набір реплік і знайти файл primary. Ви шукаєте нерухомість "stateStr" : "PRIMARY".

Крок 6: Створення адміністратора

Після того, як ви знайшли primary, введіть mongo shellі запустіть наступну команду, використовуючи свої дані.

admin = db.getSiblingDB("admin")
admin.createUser(
  {
    user: "YOUR_USER",
    pwd: "YOU_PASSWORD",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

admin = db.getSiblingDB("admin")Частина дозволяє нам писати в adminз іншої бази даних. Це створює псевдонім під назвою admin, тому ми можемо замість нього виконувати команди.

Якщо операція пройшла успішно, ви отримаєте сповіщення про те, що користувача додано.

Successfully added user: {
    "user" : "YOUR_USER",
    "roles" : [
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        }
    ]
}

На даний момент у нас є лише адміністратор для всіх серверів, але наявність набору Replica змушує нас мати користувача з цією clusterAdminроллю. Ми створимо іншого користувача лише з цією роллю, щоб розділити проблеми.

Крок 7: Аутентифікація як адміністратор

Ми досягли межі localhost exception, тому ми повинні змінити автентифікацію на користувача, створеного за один крок раніше.

Ви можете змінити користувачів всередині за mongo shellдопомогою наступного.

db.getSiblingDB("admin").auth("YOUR_ADMIN", "YOUR_PASSWORD" )

Якщо ви ще не підключилися до mongo shellцієї команди, скористайтеся цією командою.

mongo -u "YOUR_ADMIN" -p "YOUR_PASSWORD" --authenticationDatabase "admin"

Ви отримаєте сповіщення про зміну користувача, і ви зможете перейти до наступного кроку.

Крок 8: Створення головного кластера

clusterAdminРоль дає користувачеві повний контроль над набором реплік. Створити його так само легко, як створити користувача адміністратора.

db.getSiblingDB("admin").createUser(
  {
    "user" : "YOUR_USER",
    "pwd" : "YOUR_PASSWORD",
    roles: [ { "role" : "clusterAdmin", "db" : "admin" } ]
  }
)

Зауважте, що цього разу роль змінено наclusterAdmin .

Крок 9: Вставлення даних у набір реплік

На даний момент у нас є 2 адміністратори: один має повний контроль над сервером, а інший має доступ до адміністративних завдань на рівні набору репліки. Проте нам не вистачає користувача, який має доступ до «використання» бази даних, тому ми створимо цього користувача зараз.

admin = db.getSiblingDB("admin")
admin.createUser(
  {
    user: "YOUR_USER",
    pwd: "YOUR_PASSWORD",
    roles: [ { role: "userAdminAnyDatabase", db: "cars" } ]
  }
)

Зверніть увагу, що цього разу ми змінюємо dbчастину, там ми робимо базу даних доступною для користувача, у цьому випадку ми використовуємо базу даних з іменем cars.

База даних ще не створена. Для цього вам доведеться ввести кілька команд, щоб неявно його створити. Перейдіть до carsбази даних.

use cars

Ви отримаєте сповіщення: switched to db cars.

База даних ще не створена, для цього потрібно щось написати в неї. Ми використовуємо наступний приклад.

db.models.insert({ make: "Dodge", model: "Viper", year: 2010 })

Цього разу ви отримаєте сповіщення за допомогою WriteResult({ "nInserted" : 1 }).

Якщо ви хочете, ви можете отримати всі об’єкти в базі даних за допомогою find()методу:

db.models.find()
{ "_id" : ObjectId("59acd8b55334882863541ff4"), "make" : "Dodge", "model" : "Viper", "year" : 2010 }

Зауважте, що _idу вашому виводі вони будуть відрізнятися, але інші дані мають бути такими ж. Якщо достатньо часу, ці дані будуть репліковані іншим учасникам.

Висновок

Створення набору реплік спочатку може бути складним, оскільки потрібно зрозуміти багато інформації, але як тільки ви отримаєте ідею, ви зможете швидко розгорнути її, тому не опускайте руки, якщо ви не можете зрозуміти це з першого разу. Майте на увазі, що набір реплік важливий для адміністрування MongoDB, оскільки він відкриває можливість додавати додаткові функції, такі як балансування навантаження.


Встановлення InfluxDB на Ubuntu 14

Встановлення InfluxDB на Ubuntu 14

Вступ InfluxDB — це розподілена база даних часових рядів з відкритим вихідним кодом без зовнішніх залежностей. Так, ви читаєте параграф про відсутність зовнішніх залежностей

Як встановити Apache Cassandra 3.11.x на Ubuntu 16.04 LTS

Як встановити Apache Cassandra 3.11.x на Ubuntu 16.04 LTS

Використання іншої системи? Apache Cassandra — це безкоштовна система керування базами даних NoSQL з відкритим вихідним кодом, яка розроблена для забезпечення масштабованості, високої

Як встановити Apache Cassandra 3.11.x на CentOS 7

Як встановити Apache Cassandra 3.11.x на CentOS 7

Використання іншої системи? Apache Cassandra — це безкоштовна система керування базами даних NoSQL з відкритим вихідним кодом, яка розроблена для забезпечення масштабованості, високої

Як встановити та налаштувати ArangoDB на CentOS 7

Як встановити та налаштувати ArangoDB на CentOS 7

Використання іншої системи? Вступ ArangoDB — це відкрита база даних NoSQL з гнучкою моделлю даних для документів, графіків і ключів-значень. це є

Як встановити Laravel GitScrum на CentOS 7

Як встановити Laravel GitScrum на CentOS 7

Laravel GitScrum або GitScrum — це інструмент підвищення продуктивності з відкритим вихідним кодом, розроблений, щоб допомогти командам розробників реалізувати методологію Scrum подібним чином.

Автоматично резервне копіювання кількох баз даних MySQL або MariaDB

Автоматично резервне копіювання кількох баз даних MySQL або MariaDB

Вступ У цій статті розглянемо, як створити резервну копію кількох баз даних MySQL або MariaDB, які знаходяться на одній машині за допомогою спеціального сценарію bash.

Як встановити та налаштувати OrientDB Community Edition на CentOS 7

Як встановити та налаштувати OrientDB Community Edition на CentOS 7

OrientDB — це багатомодельна СУБД NoSQL з відкритим кодом наступного покоління. Завдяки підтримці кількох моделей даних OrientDB може надати більше функціональних можливостей і гнучкості

Захист MongoDB

Захист MongoDB

MongoDB за замовчуванням не захищений. Якщо ви встановлюєте MongoDB і запускаєте його, не налаштувавши його для аутентифікації, у вас буде поганий час

Резервне копіювання баз даних MySQL

Резервне копіювання баз даних MySQL

MySQL є найпопулярнішим програмним забезпеченням у світі, яке використовується для баз даних. Дуже важливо переконатися, що у вас є резервні копії бази даних. Така практика дозволяє

Як створити резервну копію та відновити бази даних PostgreSQL в Ubuntu 16.04

Як створити резервну копію та відновити бази даних PostgreSQL в Ubuntu 16.04

Вступ PostgreSQL — це безкоштовна система управління базами даних з відкритим кодом, яку можна використовувати для зберігання інформації, пов’язаної з веб-сайтами. Відомо також а

Як встановити PostgreSQL 11.1 на Arch Linux

Як встановити PostgreSQL 11.1 на Arch Linux

Передумови Сервер Vultr з сучасною версією Arch Linux (див. цю статтю). Доступ до Sudo. Команди, які потрібно виконувати як root, мають префікс # і один

Розгорніть набір реплік із високою доступністю в MongoDB 3.4 за допомогою ключового файлу для контролю доступу в Ubuntu 16.04

Розгорніть набір реплік із високою доступністю в MongoDB 3.4 за допомогою ключового файлу для контролю доступу в Ubuntu 16.04

З моменту заснування в 2009 році MongoDB лідирує в галузі NoSQL. Однією з основних концепцій MongoDB є набір реплік, тому перш ніж працювати з i

Установіть новіші версії MongoDB на Debian 7

Установіть новіші версії MongoDB на Debian 7

MongoDB — це швидка та потужна база даних NoSQL. Однак репозиторії Debian оновлюються повільно і часто містять дуже старі версії пакунків. Цей підручник

Налаштуйте Barnyard 2 за допомогою Snort

Налаштуйте Barnyard 2 за допомогою Snort

Barnyard2 — це спосіб зберігання та обробки двійкових вихідних даних Snort в базу даних MySQL. Перш ніж почати. ​​Зверніть увагу, що якщо у вас немає хропіння

Як встановити Apache Cassandra 3.11.x на Debian 9

Як встановити Apache Cassandra 3.11.x на Debian 9

Використання іншої системи? Apache Cassandra — це безкоштовна система керування базами даних NoSQL з відкритим вихідним кодом, яка розроблена для забезпечення масштабованості, високої

Встановіть RockMongo на CentOS 7

Встановіть RockMongo на CentOS 7

RockMongo — це веб-інструмент керування MongoDB, схожий на інструмент керування MySQL: phpMyAdmin. У цьому посібнику буде описано процес встановлення

Встановіть InfluxDB на Debian Jessie за допомогою Telegraf

Встановіть InfluxDB на Debian Jessie за допомогою Telegraf

Вступ InfluxDB — це база даних на основі часових рядів, написана на Go. InfluxDB має багато практичних застосувань, одним з яких є зберігання даних моніторингу на серверах. я

Захист MariaDB з підтримкою SSL в Ubuntu 16.04

Захист MariaDB з підтримкою SSL в Ubuntu 16.04

MariaDB є безкоштовною базою даних з відкритим вихідним кодом і є найбільш широко використовуваною заміною MySQL. Він створений розробниками MySQL і призначений для подальшого використання

Як встановити phpRedisAdmin на CentOS 7

Як встановити phpRedisAdmin на CentOS 7

phpRedisAdmin — це веб-додаток, який керує базами даних Redis з інтуїтивно зрозумілим графічним інтерфейсом користувача. Цей підручник пояснить, як встановити

Як встановити та використовувати ArangoDB в Ubuntu 16.04

Як встановити та використовувати ArangoDB в Ubuntu 16.04

Використання іншої системи? Вступ ArangoDB — це відкрита база даних NoSQL з гнучкою моделлю даних для документів, графіків і ключів-значень. це є

Повстання машин: застосування ШІ в реальному світі

Повстання машин: застосування ШІ в реальному світі

Штучний інтелект не в майбутньому, він тут прямо в сьогоденні У цьому блозі Прочитайте, як програми штучного інтелекту вплинули на різні сектори.

DDOS-атаки: короткий огляд

DDOS-атаки: короткий огляд

Ви також стали жертвою DDOS-атак і спантеличені методами запобігання? Прочитайте цю статтю, щоб вирішити свої запитання.

Ви коли-небудь замислювалися, як хакери заробляють гроші?

Ви коли-небудь замислювалися, як хакери заробляють гроші?

Можливо, ви чули, що хакери заробляють багато грошей, але чи замислювалися ви коли-небудь, як вони заробляють такі гроші? давайте обговоримо.

Революційні винаходи від Google, які полегшать ваше життя.

Революційні винаходи від Google, які полегшать ваше життя.

Ви хочете побачити революційні винаходи Google і як ці винаходи змінили життя кожної людини сьогодні? Тоді читайте в блозі, щоб побачити винаходи Google.

Friday Essential: Що сталося з автомобілями, керованими штучним інтелектом?

Friday Essential: Що сталося з автомобілями, керованими штучним інтелектом?

Концепція самокерованих автомобілів, щоб вирушати в дороги за допомогою штучного інтелекту, є мрією, яку ми давно мріємо. Але, незважаючи на кілька обіцянок, їх ніде не видно. Прочитайте цей блог, щоб дізнатися більше…

Технологічна сингулярність: віддалене майбутнє людської цивілізації?

Технологічна сингулярність: віддалене майбутнє людської цивілізації?

Оскільки наука розвивається швидкими темпами, бере на себе багато наших зусиль, ризики піддати себе незрозумілій Сингулярності також зростає. Читайте, що може означати для нас сингулярність.

Еволюція зберігання даних – інфографіка

Еволюція зберігання даних – інфографіка

Методи зберігання даних можуть розвиватися з моменту народження Даних. Цей блог висвітлює еволюцію зберігання даних на основі інфографіки.

Функціональні можливості шарів еталонної архітектури великих даних

Функціональні можливості шарів еталонної архітектури великих даних

Прочитайте блог, щоб дізнатися про різні шари архітектури великих даних та їх функціональні можливості найпростішим способом.

6 дивовижних переваг використання пристроїв розумного дому в нашому житті

6 дивовижних переваг використання пристроїв розумного дому в нашому житті

У цьому цифровому світі пристрої розумного дому стали важливою частиною життя. Ось кілька дивовижних переваг пристроїв розумного дому щодо того, як вони роблять наше життя гідним життя та спрощують його.

Оновлення доповнення macOS Catalina 10.15.4 спричиняє більше проблем, ніж вирішує

Оновлення доповнення macOS Catalina 10.15.4 спричиняє більше проблем, ніж вирішує

Нещодавно Apple випустила додаткове оновлення macOS Catalina 10.15.4, щоб виправити проблеми, але схоже, що оновлення викликає більше проблем, що призводять до блокування комп’ютерів Mac. Прочитайте цю статтю, щоб дізнатися більше