森哥瞧世界

您现在的位置是:首页>文档内容页

文档详情

双主MySQL及基于Keepalived的高可用保障数据安全的安装配置(一)

jeson 2020-03-17 13:27:33 应用服务23133
MySQL集群是生产环境中,经常会遇到的,这即可保障数据库的安全,又确认了应用服务的有效运行。今天森哥带着大家一起来玩一玩高可用下的双主MySQL实现方案。

一、准备两台MySQL服务器

操作系统:CentOS Linux release 7.7.1908 (Core)

MySQL:mysql8.0版本

CPU:4vCPU

内存:8GB

分区:系统自动分区,实际生产中,请注意,硬盘空间大小要与数据库数据相关联。

[root@mysql-00 ~]# df -lh
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 3.9G     0  3.9G    0% /dev
tmpfs                    3.9G     0  3.9G    0% /dev/shm
tmpfs                    3.9G  8.8M  3.9G    1% /run
tmpfs                    3.9G     0  3.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root   50G  1.2G   49G    3% /
/dev/sda1               1014M  149M  866M   15% /boot
/dev/mapper/centos-home   40G   33M   40G    1% /home
tmpfs                    783M     0  783M    0% /run/user/0

IP地址(两台服务器必须能互通互联):

MySQL-00:172.16.3.101

MySQL-01:172.16.3.102

两台服务器的SSH使用证书实现root直接登陆。

再分配一个VIP的IP地址。

VIP:172.16.3.100

VIP:即为:virtual ipaddress,虚拟IP的意思。这里而不是会员级别的那个VIP概念。用户直接面向的就是这个VIP,而后面的物理机的IP,对用户来说,是不需要知道的,这也就是集群中运用的概念。

为了方便,将只创建一对证书,然后两台服务器共用。

证书创建:

在mysql-00上执行创建。

[root@mysql-00 ~]# ssh-keygen -t rsa -C "mysqldata"
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:5cGoFTXPGNM+vzPaq2Y2PBRxDNBuz9YyBadq36ViTHE mysqldata
The key's randomart image is:
+---[RSA 2048]----+
|        ..*+.o   |
|         + B+ + .|
|        o =ooo + |
|       o o .B E .|
|      . S .. X o |
|            = B o|
|           * o *.|
|            @.* .|
|           =o*o+ |
+----[SHA256]-----+

在/root/.ssh/下,会生成一对:id_rsaid_rsa.pub公私钥,将公钥的内容,写入authorized_keys

authorized_keys也放在/root/.ssh/目录下。

[root@mysql-00 .ssh]# cat id_rsa.pub > authorized_keys
[root@mysql-00 .ssh]# cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5EFgEzNvCzANXVYS23atvOrx6EpdNlL8ts6lqHEHHi3n9U2t8b+FduMsG6J0Iwg0aDBMRjD4To/OgEJSxrmdUcDRacbTUJBe+9AntdFbHaak7dz/SE+Nflcd5OIeBgYe1Vo10IAM5HVJvXYbyzvIOzkHiQC98QWrhLmQLuvZC8tgDenrd54aOPOS+VFEPuDM+Qy4IbecNXlqSgLGEznx8r+7xd2DGHeIDExzHEruFJ4DN+gquYE1eKF/OQY9xNMcJQoj/7VNVS4aXr9f3JBdpFsKo0jSq2DBnmv9vFAAsgx2rpFMKLGcGDQIId73Vl3lCz6BO8PQORIc59pEubWDD mysqldata

将这三个文件,打包一份,传到MySQL-01服务器上的/root/.ssh下。若是没有.ssh则手工创建。

这里需要注意的是,在复制相关证书到另一台服务器,注意文件的所属与权限。否则会出现无法登陆的错误。这个森哥我就不多说了,能来玩mysql的高可用的,那这些都是小意思。

测试一下是否能正常登陆

[root@mysql-00 ~]# ssh root@172.16.3.102
Last login: Mon Mar 16 15:43:01 2020 from 172.16.7.11
[root@mysql-01 ~]#
[root@mysql-01 .ssh]# ssh root@172.16.3.101
The authenticity of host '172.16.3.101 (172.16.3.101)' can't be established.
ECDSA key fingerprint is SHA256:ucZtMHPrHKqc3/sZJ/Z0PFAaslQX81dG7dSB/46dPSM.
ECDSA key fingerprint is MD5:6a:3c:50:9a:f9:c8:bf:e9:69:0b:b0:e1:20:3e:8a:5f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.3.101' (ECDSA) to the list of known hosts.
Last login: Mon Mar 16 15:34:35 2020 from 172.16.7.11
[root@mysql-00 ~]#

OK了,两台可以免密互登了。下面进入环境预置及mysql的安装。

二、基本环境配置

2.1、关闭SeLinux

sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
setenforce 0

2.2、关闭系统自带的防火墙

systemctl stop firewalld    //停止系统默认的防火墙
systemctl mask firewalld    //屏蔽服务(让它不能启动)
yum remove -y firewalld        //卸载自带防火墙

2.3、系统管理工具

此举是为了今后方便运维管理使用。可根据情况而定。

yum install -y chkconfig  net-tools ntsysv mlocate lrzsz wget lsof setuptool tcpdump

2.4、更新yum源

yum install -y epel-release
wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm  //Mysql8.0yum源
yum localinstall -y mysql80-community-release-el7-3.noarch.rpm
yum repolist enabled | grep "mysql.*-community.*"    //检查mysql源是否安装成功

由于mysql-server文件在yum安装的时候,文件较大,下载很慢,故森哥是先使用境外的服务器下载后,再从境外服务器拉回本地。

https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.19-1.el7.x86_64.rpm-bundle.tar

2.5、清理并更新yum源

yum clean all
yum makecache

2.6、编译等环境预装(根据自己需求而定,不用全装)

yum install -y make cmake gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers  gd gd-devel perl expat expat-devel nss_ldap unixODBC-devel libxslt-devel libevent-devel libtool-ltdl bison libtool zip unzip gmp-devel python-devel perl-devel perl-ExtUtils-Embed //安装各种环境所需要的插件
yum update -y    //升级补丁

三、MySQL安装

yum install -y bison-devel libaio-devel perl-Data-Dumper  //预装mysql环境
yum install -y mysql-server   //安装mysqld
service mysqld start  //启动mysql
systemctl enable mysqld.service  //开机自启动

由于森哥已把相关的安装包直接下载下来。所以,在yum install -y mysql-server这一步就不一样了。如下:

yum install -y bison-devel libaio-devel perl-Data-Dumper
tar -xvf mysql-8.0.19-1.el7.x86_64.rpm-bundle.tar
yum localinstall -y mysql-community-*    //在安装本地包的时候,若遇到需要安装依赖包会自动网上下载
service mysqld start  //启动mysql
systemctl enable mysqld.service  //开机自启动

修改及设置初始密码

grep 'temporary password' /var/log/mysqld.log     //mysql5.7版本后,初始密码不再为空,默认随机生成,可通过该命令查询
mysql -u root -p   //进入mysql
alter user 'root'@'localhost' identified with mysql_native_password by 'Fixes.cn.888';   默认需要先修改密码,才能其他操作
exit;    //退出mysql管理

请在两台的服务器上,都进程同样的安装与配置。设置的数据库密码,先建议设置为一样的:Fixes.cn.888

致此,两台MySQL基础环境都配置好了。现在开始下面同步的设置。


双主MySQL及基于Keepalived的高可用保障数据安全的安装配置(二)

双主MySQL及基于Keepalived的高可用保障数据安全的安装配置(三)

文章评论

Cancel the reply
Login Participate In Comments

Review(