- /4te.me
- Создание нового сервера
- Настройка репликации master-slave
- Настройка репликации master-master
- Выключение старого сервера
- ИТ База знаний
- Полезно
- Навигация
- Серверные решения
- Телефония
- Корпоративные сети
- Перенос базы данных MySQL со старого на новый сервер
- Подготовка
- Экспортируем базу данных MySQL в файл дампа
- Перенос базы mysql linux
- Переносим базу данных mysql
- Импорт и экспорт баз данных MySQL и MariaDB
- Требования
- Экспорт данных
- Импорт данных
- Заключение
- Как перенести базу данных MySQL на новый сервер в Ubuntu
- Дамп Всех баз данных
- Восстановить дампы базы данных
- Запустите обновления
- Пример вывода
- Протестируйте новый сервер
/4te.me
Часто возникают ситуации с переездами базы между серверами. Здесь расскажу как перенести базу MySQL с одного сервера на другой без даунтайма.
Имеется такая ситуация:
Есть приложение, в настройках которого прописан адрес MySQL сервера в виде домена mysql.server.loc . Этот домен прописан в DNS и резолвится в 1.1.1.1. Есть новый сервер 2.2.2.2. Надо перенести mysql базу со старого сервера на новый. Нацеливать приложение можно как через его настройки, так и через DNS, меняя запись A-типа.
Перенос в несколько шагов:
- Создать новый сервер
- Настроить репликацию мастер-мастер. Приложение при этом смотрит на старый сервер.
- Перенацелить приложение на новый сервер.
- Выключить репликацию на новом. Выключить старый сервер.
Создание нового сервера
В данном случае я использую Ubuntu 16.04.3 и MySQL 5.7. Установим mysql на новый сервер:
Настройка репликации master-slave
Для того чтобы работала репликация в конфиге mysql надо добавить опцию записи binlog-ов. В них будут записываться изменения которые происходят в базе в бинарном формате. После этого эти изменения разъезжаются по репликам и тем самым поддерживается консистентное состояние данных.
Включаем binlog в my.cnf:
- log-bin — имя файла или путь до файлов с бинлогами. Если версия 5.6 или ниже — нужно указывать имя файла (как выше в примере), бинлоги будут хранится в data-директории. MySQL 5.7 и выше может принимать значения с путем, например /tmp/mysql-binlog
- expire-logs-days — длина логов в днях. За это время надо поднять и запустить слейв.
- max-binlog-size — максимальный размер логов. Если достигнут максимум, то логи будут ротироваться, не смотря на expire-logs-days
- server-id — id-сервера в реплике. должен быть разным на разных серверах
Создадим пользователя, под которым будет происходить репликация и дадим права на репликацию:
Теперь сделаем бэкап базы с помощью innobackupex (это утилита от Percona которая делает бэкап с указанием позиции в bin-логе) в директорию /tmp/mysqlbackup. Здесь инструкция по инсталяции innobackupex.
В конце вывода будет что-то типа:
Нам нужны filename и position. Запоминаем их, они пригодятся во время развертывания этого бэкапа на новом сервере. Эти значения также есть в файле xtrabackup_binlog_info в папке с бэкапом.
Копируем папку с бэкапом на новый сервер. Например rsync-ом (предварительно надо сделать доступ на новый сервер со старого по ssh):
Когда перенос закончится, логинимся на новый сервер и разворачиваем бэкап. Для этого скопируем содержимое папки бэкапа в /var/lib/mysql и запустим innobackupex:
Запускаем MySQL на новом сервере, заходим в mysql-консоль и прописываем адрес мастера и момент времени с которого надо начинать подтягивать данные:
Проверяем Master_Host должен быть ip старого сервера, Master_Log_File и Read_Master_Log_Pos должны быть те, которые показал innobackupex.
Стартуем слэйв и смотрим статус:
Теперь сервера между собой работают в master-slave режиме. Писать можно только в master, читать из обоих.
Ждем пока новый сервер догонит мастера. Время отставания слейва от мастера — Seconds_Behind_Master. Exec_Master_Log_Pos на новом сервере должен быть такой же как position у master ноды. В примере выше слейв уже догнал мастера. Посмотреть position на мастер ноде можно с помощью команды:
Настройка репликации master-master
Когда слейв догнал мастера, идем на старый инстанс и добавляем параметры для репликации, чтобы репликация была master+master. Здесь уже не надо указывать MASTER_LOG_POS и MASTER_LOG_FILENAME:
Теперь сервера работают как мастер-мастер. В таком режиме лучше всегда писать только в одну голову. Если писать в обеи — может возникнуть неконсистентность. Мастер-мастер у MySQL работает не всегда хорошо.
Выключение старого сервера
После того как получилась конструкция мастер-мастер, можно перенацелить приложение, изменив его настройки или изменить A запись в DNS.
Когда к старому серверу кончатся обращения (посмотреть — mysql> show full processlist; , можно остановить слейв на новом сервере:
Всё. MySQL теперь работает на новом сервере, приложение ходит в него. Старый можно выключать.
Источник
ИТ База знаний
Курс по Asterisk
Полезно
— Узнать IP — адрес компьютера в интернете
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Калькулятор инсталляции IP — АТС Asterisk
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Перенос базы данных MySQL со старого на новый сервер
Дорогая, мы переезжаем!
3 минуты чтения
Перенос или миграция базы данных MySQL или MariaDB между серверами обычно занимает всего несколько простых шагов. В этой статье мы расскажем про них, и вы сможете легко перенести данные со старого Linux сервера на новый, импортировать и выполнить проверку того что все прошло без ошибок. Поехали!
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Подготовка
Первым делом нужно убедиться, что и на старом, и на новом сервере установлена одинаковая версия MySQL с одинаковым дистрибутивом. Для этого в командной строке выполните:
После этого нужно убедиться, что на новом сервере хватает места для файла дампа старой базы и импортированной базы данных (например, используя команду df).
Экспортируем базу данных MySQL в файл дампа
Сначала на старом сервере остановите службу mysql или mariadb, используя команду systemctl:
Затем сделайте дамп ваших баз MySQL с помощью команды mysqldump:
Если база одна, то можно использовать команду:
Перенос дампа MySQL на новый сервер
Теперь используйте команду scp, чтобы перенести файл дампа на новый сервер. После подключения база будет перенесена на новый сервер.
Импорт файла дампа MySQL на новый сервер
После того как файл дампа был перенесен, нужно выполнить следующую команду для импорта всех баз данных в MySQL.
Проверка импорта
После завершения импорта вы можете проверить базы данных на обоих серверах:
Перенос баз данных и пользователей MySQL на новый сервер
Если нужно переместить все свои БД MySQL, пользователей, разрешения и структуру данных старого сервера на новый, то нужно использовать команду rsync. С ее помощью скопируется весь контент из каталога данных mysql или mariadb на новый сервер.
Как только передача завершится, вы можете установить владельца каталога данных mysql или mariadb для пользователя и группы mysql. Для того чтобы убедиться, что что все файлы были переданы можно выполнить просмотр каталога.
Готово! Мы только что очень быстро и просто выполнили миграцию всех баз со старого сервера на новый.
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Источник
Перенос базы mysql linux
Добрый день уважаемые читатели блога и гости портала. Как вы знаете альтернативой платному MS SQL серверу, выступает бесплатная утилита MySQL, которую очень часто устанавливают на Centos7 и другие linux платформы. Она выступает в роли базы данных для сайтов и других задач. Иногда бывает так, что администратор планировавший и создававший сервер, будь, то физический или виртуальный, мог ошибиться и отдать для базы MySQL не достаточное количество дискового пространства, или наоборот она быстро разрослась и не хватает пространства, в таких случаях можно перенести базу MySQL в другое место, чем мы и займемся.
Переносим базу данных mysql
Не всегда удобно когда база данных находится в системных разделах. Поэтому ее приходится переносить в другую папку в системе (которая находится на более быстром или более большом диске).
Для того чтобы перенести базу MySQL в другое место нужно сначала остановитьMySQL:
Теперь скопируем базу в другое место (по умолчанию она лежит в папке/var/lib/mysql) предположим что мы ее переносим в папку /mnt/data/
Перемещаем базу в новое место:
Меняем в файле конфигурации местоположение базы,
для этого открываем файл /etc/mysql/my.cnf,
находим в нем строчку:
и меняем в ней путь на новый:
Проверяем права перенесенной папки папки. Они должны быть 700 и пользователь:группа mysql:mysql
Запускаем MySQL
service mysql start
База MySQL перенесена в новое место.
Как видите, все очень просто, единственное для переноса, я вам советую пользоваться файловыми менеджерами, например Midnight Commander или WinSCP.
Источник
Импорт и экспорт баз данных MySQL и MariaDB
При работе с данными очень важно уметь импортировать и экспортировать базы данных. Дампы данных можно использовать для резервного копирования и восстановления БД, что позволяет в случае необходимости получить доступ к одной из предыдущих версий данных или переместить их на новый сервер или среду разработки.
Дампы MySQL и MariaDB очень просты в работе. Это руководство научит вас экспортировать и импортировать базы данных с помощью дампа MySQL или MariaDB.
Требования
- Сервер Linux.
- Предварительно установленная система управления базами данных MySQL или MariaDB.
- База данных и пользователь СУБД.
Экспорт данных
Консольная утилита mysqldump позволяет экспортировать данные в текстовый файл SQL, который можно легко переместить. Для этого вам понадобится имя БД, а также учётные данные пользователя, у которого есть как минимум право на чтение БД.
Чтобы экспортировать БД, используйте такую команду:
mysqldump -u username -p database_name > data-dump.sql
- username – имя пользователя БД;
- database_name – имя БД, которую нужно экспортировать;
- data-dump.sql – файл в текущем каталоге, в который будут экспортированы данные.
Вывод этой команды не отображается на экране. Чтобы убедиться в том, что данные были импортированы успешно, проверьте содержимое дампа:
head -n 5 data-dump.sql
Файл дампа MySQL должен начинаться примерно так:
— MySQL dump 10.13 Distrib 5.7.16, for Linux (x86_64)
—
— Host: localhost Database: database_name
— ——————————————————
— Server version 5.7.16-0ubuntu0.16.04.1
Если во время экспорта данных произошла ошибка, утилита mysqldump сообщит вам о ней.
Импорт данных
Чтобы импортировать дамп, нужно создать новую БД MySQL или MariaDB, в которую будут перемещены данные из дампа.
Войдите как root или другой пользователь с расширенными привилегиями.
Эта команда откроет командную оболочку MySQL. Создайте новую БД, например, new_database.
CREATE DATABASE new_database;
На экране появится вывод, подтверждающий, что БД была создана:
Query OK, 1 row affected (0.00 sec)
Закройте оболочку MySQL (CTRL+D). С помощью обычной командной строки импортируйте дамп:
mysql -u username -p new_database
- username – имя пользователя, у которого есть доступ к БД.
- newdatabase – имя новой БД.
- data-dump.sql – имя дампа, который нужно импортировать.
В случае успешного выполнения команды вывод не отображается на экране. Если во время выполнения возникла какая-либо ошибка, mysql выведет их в терминал. Чтобы убедиться, что данные импортированы успешно, войдите в оболочку MySQL и проверьте БД. Для этого можно использовать:
USE new_database;
SHOW TABLES;
Заключение
Теперь вы умеете перемещать данные MySQL и MariaDB с помощью дампа. Утилита mysqldump имеет множество дополнительных параметров, при помощи которых можно настраивать дампы; подробнее об этом – в официальной документации mysqldump.
Источник
Как перенести базу данных MySQL на новый сервер в Ubuntu
Если вы перемещаете свой сервер базы данных со старого сервера на новый, то это руководство для вас.
В этом случае я покажу, как шаг за шагом перенести существующие базы данных MySQL на сервер.
Сценарий: давайте предположим, что у вас есть работающая установка LEMP с небольшим сайтом WordPress, и вы хотите перейти на новый сервер с большей памятью и вычислительной мощностью, и вы планируете переносить все с одного сервера на другой. это руководство по переносу базы данных MySQL на новый сервер.
Дамп Всех баз данных
Команда сбросит все базы данных с предотвращением любых записей во время дампа.
ПРИМЕЧАНИЕ: для ядра базы данных myisam используйте –lock-tables вместо –single -action
Если вы не знаете, какой тип базы данных вы используете, выполните следующий запрос, чтобы узнать:
Восстановить дампы базы данных
Установите пакет сервера mysql на новый сервер, затем скопируйте файл дампа базы данных со старого сервера на новый сервер с помощью scp или rsync, а затем выполните следующую команду, чтобы восстановить всю базу данных.
Если все будет хорошо, на экране ничего не будет напечатано.
Затем запустите mysql_upgrade, чтобы обновить все параметры системы, которые исправят любые несовместимости с вашей текущей базой данных и базой данных, поддерживаемой текущей версией.
Подробнее об обновлении mysql читайте здесь: http://dev.mysql.com/doc/refman/5.7/en/mysql-upgrade.html.
Запустите обновления
Пример вывода
Протестируйте новый сервер
Теперь давайте протестируем все, войдите в свой сервер MySQL с помощью сервера MySQL и попытайтесь выполнить несколько запросов на примере формы WordPress Databse
Источник