Миграция данных MySQL-PXC в MySQL-MGR
Содержание
Предварительные требованияПримечанияРабочий процессПроверка статуса кластера MySQL-PXCОпределение узлов чтения/записи MySQL-PXCОстановить предоставление внешних сервисов MySQL-PXCСоздание экземпляра MySQL-MGRПроверка статуса кластера MySQL-MGRОпределение узлов чтения/записи MySQL-MGRОпределение баз данных, которые нужно резервировать из MySQL-PXCРазвёртывание контейнера MySQL-MGR для резервного копирования и восстановленияСоздание PVCСоздание PVРазвёртывание контейнера MySQL-MGRРезервное копирование бизнес-баз данных MySQL-PXCВосстановление бизнес-данныхРезервное копирование бизнес-аккаунтов MySQL-PXCИмпорт бизнес-аккаунтов приложенийДополнительно: Использование метода резервного копирования mysqldump на вычислительном узле (хосте)Предварительные требования
-
Узлы MySQL-PXC должны быть остановлены.
-
В кластере должно быть достаточно ресурсов CPU, памяти, хранилища и других для создания кластера MySQL-MGR с такими же характеристиками, как у MySQL-PXC.
Примечания
-
На стороне приложения следует обновить драйвер MySQL до версии MySQL-MGR; можно обратиться к Connectors and APIs.
-
Используйте набор символов
utf8mb4.-
На стороне приложения должен использоваться
utf8mb4. -
На стороне базы данных необходимо конвертировать базу и таблицы в
utf8mb4.
SQL для конвертации набора символов приведён ниже.
Совет: Чем больше данных в таблице, тем дольше будет длиться конвертация.
-
-
MySQL-MGR требует, чтобы таблицы имели первичный ключ.
-
Если в таблице отсутствует первичный ключ, при импорте в MySQL-MGR автоматически создаётся
INVISIBLEпервичный ключ; рекомендуется, чтобы бизнес-сторона использовала явные первичные ключи.Совет: Он будет виден в
SHOW TABLE, но поле будет скрыто при выполненииSELECT. -
Чтобы найти таблицы в бизнес-базе данных без первичного ключа:
-
Добавить автоинкрементный первичный ключ:
-
Рабочий процесс
Примечание: При использовании примеров кода в этом документе заменяйте параметры на реальные значения экземпляров.
Проверка статуса кластера MySQL-PXC
Статус кластера MySQL-PXC должен быть нормальным перед резервным копированием данных.
-
В левой навигационной панели нажмите MySQL-PXC.
-
Нажмите Namespace Name.
-
Нажмите Instance Name.
-
На вкладке Details в разделах Basic Information, Resource Configuration и статус ProxySQL должен быть Running.
-
На вкладке Topology статус каждого ProxySQL и MySQL узла должен быть Normal.
Определение узлов чтения/записи MySQL-PXC
-
Найдите IP ProxySQL.
-
Подключитесь к любому Pod ProxySQL, чтобы найти узлы чтения/записи.
По выводу определите имя MySQL-PXC, к которому принадлежит узел чтения/записи demo-pxc-0.demo-pxc.demo-ds1.svc.cluster.local.
Остановить предоставление внешних сервисов MySQL-PXC
Примечание: Не выполняйте операции записи на стороне приложения, так как это приведёт к неполной резервной копии.
-
В левой навигационной панели нажмите MySQL-PXC.
-
Нажмите Namespace Name.
-
Нажмите Instance Name.
-
Нажмите Actions > Update.
-
Нажмите YAML.
-
Измените значение параметра
pxc.proxysql.sizeна0. -
Нажмите Update.
Создание экземпляра MySQL-MGR
Примечание: Спецификации ресурсов создаваемого экземпляра MySQL-MGR не должны быть ниже, чем у экземпляра MySQL-PXC.
Проверка статуса кластера MySQL-MGR
-
В левой навигационной панели нажмите MySQL-MGR.
-
Нажмите Namespace Name.
-
Нажмите Instance Name.
-
На вкладке Details в разделах Basic Information, Resource Configuration и статус MySQL Router должен быть Running.
-
На вкладке YAML значения
status.conditions.typeиstatus.stateдолжны бытьready.
Определение узлов чтения/записи MySQL-MGR
Узлы с MEMBER_ROLE равным PRIMARY являются узлами чтения/записи MySQL-MGR.
Определение баз данных, которые нужно резервировать из MySQL-PXC
-
Исключите системные базы данных MySQL:
information_schema,mysql,performance_schemaиsys. -
Для бизнес-баз данных: зафиксируйте бизнес-базы данных для резервного копирования, при использовании инструмента
mysqldumpуказывайте базы с опцией-B.
Например, из следующего списка баз данных необходимо резервировать бизнес-базы test1, test2 и test3.
Развёртывание контейнера MySQL-MGR для резервного копирования и восстановления
Создание PVC
-
В представлении Container Platform в левой навигационной панели нажмите Storage > Persistent Volume Claims.
-
Нажмите Create Persistent Volume Claim.
-
Заполните параметры конфигурации PVC.
Примечание: Используйте TopoLVM в качестве класса хранилища.
-
Нажмите Create; статус PVC должен быть Pending Binding.
Создание PV
Обратитесь к администратору платформы для создания PV на основе следующего YAML. После создания PV проверьте, что статус PVC стал Bound.
Развёртывание контейнера MySQL-MGR
-
Проверьте адрес образа MySQL-MGR.
-
В представлении Container Platform в левой навигационной панели нажмите Compute Components > Deployments.
-
Нажмите Create Deployment.
-
Выберите метод Input, заполните Image Address и нажмите OK.
-
В разделе Pods > Volumes нажмите Add.
-
Заполните конфигурацию тома, используя PVC, созданный в этом документе, в качестве хранилища для MySQL контейнера.
-
Нажмите Add.
-
Заполните конфигурацию контейнера.
-
Нажмите Create.
Резервное копирование бизнес-баз данных MySQL-PXC
-
Получите IP Pod чтения/записи MySQL-PXC.
-
Получите root пароль для MySQL-PXC.
-
Войдите в контейнер резервного копирования и восстановления MySQL, созданный в этом документе, например, Pod с именем
mgr-backcup-9f87d46c4-kwkps.Совет: Имя Pod можно посмотреть в списке контейнерных групп этого развертывания.
-
Сделайте резервную копию бизнес-базы данных.
Объяснение параметров:
--password: root пароль MySQL-PXC.--host: IP адрес Pod чтения/записи MySQL-PXC.-B: указать имена бизнес-баз данных MySQL-PXC для резервного копирования через пробел. -
Проверьте размер логической резервной копии.
Восстановление бизнес-данных
Резервное копирование бизнес-аккаунтов MySQL-PXC
-
Войдите в Pod MySQL-MGR для резервного копирования таблицы пользователей MySQL-PXC.
-
Получите SQL-запросы для аккаунтов:
INSERT INTO. -
Удалите системных пользователей MySQL-PXC, оставив только бизнес-аккаунты приложений.
-
Удалите системные аккаунты:
('localhost','root'),('localhost','mysql.session'),('localhost','mysql.sys'),('%','root'),('%','operator'),('%','monitor'),('localhost','clustercheck'). -
Оставьте бизнес-аккаунты приложений:
test_user_1,test_user_2,test_user_3.
-
Импорт бизнес-аккаунтов приложений
-
Измените вставляемые записи аккаунтов.
Примечание: Не импортируйте root аккаунт.
В MySQL-MGR добавлено 6 полей в таблицу
mysql.userпо сравнению с MySQL-PXC, поэтому при вставке записей аккаунтов необходимо добавить следующие 6 полей:Create_role_priv: Y,Drop_role_priv: Y,Password_reuse_history: NULL,Password_reuse_time: NULL,Password_require_current: NULL,User_attributes: NULL. Таким образом, к каждой записи вставки добавьте значения:, 'Y', 'Y', NULL, NULL, NULL, NULL. -
Вставьте записи аккаунтов в MySQL-MGR.
-
Проверьте, корректно ли работают аккаунты.
Дополнительно: Использование метода резервного копирования mysqldump на вычислительном узле (хосте)
Если в текущем кластере недостаточно ресурсов и не развернут MySQL-MGR с такими же характеристиками, можно использовать mysqldump на хост-машине для резервного копирования.
Процедура:
-
Убедитесь, что статус кластера MySQL-PXC нормальный.
-
Остановите бизнес-операции чтения/записи и установите количество реплик ProxySQL в 0.
-
Выполните резервное копирование MySQL-PXC.