Устанавливаем 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
нужна, чтобы после выполнения, когда крон отправит системное сообщение о выполнении работы, на почту пришли названия файлов с временем и объемом. Можно будет не заходя на сервер проверить, все ли прошло на отлично.