Устанавливаем MariaDB 10.2 на CentOS 7

Материал из Викиадмин
Перейти к навигации Перейти к поиску

Для начала: недавно у меня была передача сервера с уже настроенным ПО и чуть позже звонок: как поставить MySQL? Был удивлён, MariaDB там уже стоит и, мало того, активно используется. Зачем надо сносить? Оказалось, что сотрудник просто не в курсе, что это в принципе почти одно и то же. И думал, что надо ставить с нуля. Вот такие бывают ситуации.

Ну а теперь по теме: надо быстро развернуть VDS с базой. Ок..

Отключаем selinux и в ребут:

   sed -i ’s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config
   reboot

Как только появился в сети, подключаемся и продолжаем…

Меняем порт SSH и разрешаем заходить root только по ключам:

   sed -i ’s/#Port 22/Port 222/g’ /etc/ssh/sshd_config
   sed -i ’s/#PermitRootLogin yes/PermitRootLogin without-password/g’ /etc/ssh/sshd_config
   systemctl restart sshd

Накатываем обновления, нужные хранилища и привычное ПО

   yum -y install epel-release
   yum -y install centos-release-scl-rh centos-release-scl
   sed -i -e “s/enabled=1/enabled=0/g” /etc/yum.repos.d/CentOS-SCLo-scl.repo
   sed -i -e “s/enabled=1/enabled=0/g” /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo
   yum update -y
   yum install mc vim htop lsof wget ncdu tmux -y

На VDS есть привычка кошмарить пользователей минимумом памяти. Если что - поднимайте тариф. Но учитывая SSD и нетребовательность к скорости, сделаем swap файл (4GB хватит для начала + добавим в fstab)

   dd if=/dev/zero of=/swap bs=1024 count=4096000
   mkswap /swap
   /bin/sync
   chmod 0600 /swap
   swapon /swap
   echo “/swap swap swap defaults 0 0” >> /etc/fstab

С сервером завершили. Теперь уже установка самой базы:

   yum –enablerepo=centos-sclo-rh -y install rh-mariadb102-mariadb-server
   scl enable rh-mariadb102 bash
cat > /etc/profile.d/rh-mariadb102.sh <<EOF
#!/bin/bash
source /opt/rh/rh-mariadb102/enable
export X_SCLS="`scl enable rh-mariadb102 'echo $X_SCLS'`"
EOF
sed -i '17a\character-set-server=utf8\nbind-address=127.0.0.1\n' /etc/opt/rh/rh-mariadb102/my.cnf.d/mariadb-server.cnf

Проверим, появились ли эти строки:

cat /etc/opt/rh/rh-mariadb102/my.cnf.d/mariadb-server.cnf
[mysqld]
character-set-server=utf8 
bind-address=127.0.0.1

Старт и автозапуск:

   systemctl start rh-mariadb102-mariadb
   systemctl enable rh-mariadb102-mariadb

Ну и первоначальный “мастер настройки”:

   mysql_secure_installation

А это как бонус: добавляем базу с нужным именем и кодировкой UTF-8

   CREATE DATABASE mantisbt CHARACTER SET utf8 COLLATE utf8_general_ci;

где mantisbt замените на нужное вам название.


Создание бэкапа базы или таблицы MySQL

Базы данных обычно разворачиваются, чтобы хранить и обрабатывать какие-либо важные данные. Потеря таковых может быть очень болезненная. Поэтому проведение бэкаповвообще - это очень важное мероприятие. Ну а если это бэкап баз данных, то вообще за отсутствие такового надо вводить смертную казнь. Лучше всего бэкапы делать периодически и, желательно, автоматизировав. Чтобы периодически дампить базу данных MySQL вручную или с помощью cron, можно использовать такой скрипт резервного копирования:

#!/bin/bash
# это нужно сменить, если какой-либо из параметров поменяется. Например при плановой замене пароля.
export DB_BACKUP="/home/backups/mysql" #Указать каталог для баз
export DB_USER="root" # Указать пользователя, от которого будет идти бэкап
export DB_PASSWD="qweqwe" # Указать пароль этого пользователя
# название и версии бэкапов. Тут же - глубина бэкапов. Чем больше строк "mv $DB_BACK..." тем больше бэкапов сохранится. При каждом
# срабатывании скрипта бэкапы перемещаются в сл. папку, а последний - удаляется.
echo ""
echo "* Идет бэкап, можете покурить, попить чаю или поиграть в косынку :)"
rm -rf $DB_BACKUP/04
mv $DB_BACKUP/03 $DB_BACKUP/04
mv $DB_BACKUP/02 $DB_BACKUP/03
mv $DB_BACKUP/01 $DB_BACKUP/02
mkdir $DB_BACKUP/01
echo "* Самый ответственный, нужный и необходимый момент. Спорцменк и комсомолк mysqldump делает свое черное дело..."
echo "----------------------"
mysqldump --user=$DB_USER --password=$DB_PASSWD -R имя_базы >$DB_BACKUP/01/имя базы-wi-`date +%Y-%m-%d-%H-%M-%S`.sql
mysqldump --user=$DB_USER --password=$DB_PASSWD -R имя_еще одной базы >$DB_BACKUP/01/имя_еще_одной_базы-`date +%Y-%m-%d-%H-%M-%S`.sql
echo "ready!"
ls -lah $DB_BACKUP/01/
exit 0

Сохраните данный скрипт в файл, например в backup.sh. Далее стоит сделать этот скрипт исполняемым:

chmod +x backup.sh

Имя дампа базы создается с датой и временем, чтобы можно было не только знать, когда сделан бэкап, но и сколько он делался. Если cron запустил выполнение в 4.00, а в имени файла 4.02 - значит 2 минуты бэкапилась база.

Строка

ls -lah

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