centos7系统,mysql8.0实现主从库同步备份,奶奶级教学

配置mysql环境之前首先要配置好自己的系统环境以及mysql环境,mysql8.0版本配置主从同步。

一、安装好linux环境,业务系统为centos7,所以我们的环境也必须为centos7版本,至于系统差了0.x的小版本,只要不差太多的话对之后的MySQL安装就没有什么太大的影响。

1、配置linux环境,我的Linux环境为centos7版本,系统详情版本如下:

二、安装MySQL

由于centos7的镜像源的问题,我们使用yum install命令下载的mysql并不是甲骨文官方的MySQL,而是由开源社区正在运营维护的mariadb数据库,而mariadbMySQL在一些细节上还是有一些区别的,所以我们在这里配置MySQL主从同步的话还是去甲骨文官网下载比较好。当然也可以配置yum源,配置到甲骨文官网的mysql下载源。在这里我们主要讲解从甲骨文官网下载rpm包用WinScp上传到虚拟机里进行解压安装的方法。

1、甲骨文官网下载MySQLrpm包(对于一些计算机小白来讲,有关于rpm是什么的问题,请自觉动动你们的双手去百度上搜索一些相关信息查看了解一下比较好)。之后用winscpwindows物理机下载的MySQLrpm包传输到指定ip下的以及安装

1.1、百度上搜索MySQL,根据红框里点进Downloads里面。

1.2、这时我们会来到甲骨文有关于MySQL的下载处,如果你只是研究测试MySQL的功能的话,在这里大部分程序员都会推荐你去下载社区版,下方图片红框处。

1.3、点进去之后我们会看到有许多MySQL的下载版本,在这里我们点进MySQL Community Server

这时我们会跳转到社区版Mysql下载界面,在这里我们可以选择我们目前使用的操作系统是什么。

而我们使用的centos7是基于红帽公司的Redhat系统的基础上延伸出来的,所以有关于centos系统的MySQL下载都被甲骨文归档到了Redhat系统旗下,之后我们只要点进去即可,如下图红框所标

之后我们会选择centos的子版本,也就是我们需要的centos7的版本,其中又分为x86的系统架构与RAM系统架构(有关于这两个系统架构的详情请自觉百度),在这里我们的系统架构为x86架构,如下图红框所示

到这里以后会让我们选择MySQL8.0的子版本,这里因为我之前自己下载了一个最新的RPM Bundle8.0.28版本的包,下载之后在centos进行解压安装,遇到了一系列不必要的麻烦后,我果断去看b站视频找到了一个8.0.22不会出错的安装方式进行安装。(忘记是哪位大佬的视频了。。。)

按着顺序点击下方两张图片的红框处

之后我们选择一个RPM Bundle整合包进行下载,这里面包含了MySQL serverMySQL client等一系列的MySQL服务程序。如下图所示,点击Download即可下载

1.4、下载完以后找到我们下载的rpm包,打开winscp进行sftp协议的远程链接操作(有关于winscp下载与安装请百度,如果有更好的网络传输文件或者实现两端传输文件的方法,可以在讨论区里进行讨论),这里就不说明怎么查看主机ip了。

下图所示已经连接成功,左边为我目前使用的笔记本,右边为我要把rpm包传输过去的主机。

之后在传输之前我们需要在要传输的主机上的根目录下的/usr/local/目录下创建一个mysql目录。具体操作如下

cd /usr/local/

mkdir mysql

之后我们开始将rpm包传输到我们创建好的mysql目录之下。鼠标右键选中rpm包拖动过去即可。

这是传输完成的样子。

2、安装解压rpm包安装MySQL各项服务

2.1、在安装rpm包之前,我们需要查看一下安装centos7的镜像里有没有预装好的mysql数据库,可能因为某些世界性的大厂之间的竞争,甲骨文收购了mysql的公司以后,开源社区的大佬们怕甲骨文展开闭源操作,特此弄了一个mariadb数据库,防止闭源的风险出现。也因此我们需要检查一下系统里有没有预装的mariadb

通过rpm -qa | grep mariadb可以查看有没有预装的软件

之后我们将其卸载

rpm -e --nodeps mariadb-libs

卸载完以后我们便可以安装我们的mysql

2.2、利用tar命令进行解压目录下的.tar压缩包。

tar -xvf mysql-8.0.22-1.el7.aarch64.rpm-bundle.tar

之后我们只要rpm安装四个.rpm文件即可

安装命令如下

rpm -ivh mysql-community-common-8.0.22-1.el7.x86_64.rpm --nodeps --force

rpm -ivh mysql-community-libs-8.0.22-1.el7.x86_64.rpm --nodeps --force

rpm -ivh mysql-community-client-8.0.22-1.el7.x86_64.rpm --nodeps --force

rpm -ivh mysql-community-server-8.0.22-1.el7.x86_64.rpm --nodeps --force

如下图

2.3、至此MySQL已经安装完毕,接下来就是登录用户操作,由于不是yum下载安装的,mysqlroot账号密码已经创建好了,并不会像yum一样提供让设置root密码的操作。不要担心,我们还是能够通过linux查看日志的办法知道已经创建好的root账号密码。

首先让我们先启动mysql服务载入到linux系统的service中如下图

mysqld --initialize

chown mysql:mysql /var/lib/mysql -R

之后运行mysql服务程序,如下图

systemctl start mysqld.service

在这里,服务启动以后查看root账户的密码

cat /var/log/mysqld.log | grep password

在这里,最后的一串特殊字符便是我们的root账户密码,复制好。

2.4、登录数据库,粘贴复制好的密码即可

mysql -u root -p

登录成功之后,我们便可以在mysql命令行里进行root用户密码的修改(有些笨比)

alter user 'root'@'localhost' identified by 'wjy';

之后退出数据库再用我们修改好的密码登陆一次看看

之后开启我们的主从备份操作!

2.5、(#记得关闭主库从库防火墙)

关闭防火墙命令

systemctl stop firewalld.service

查看防火墙状态

firewall-cmd --state

永久关闭防火墙(实验可以这么做,但是业务中不推荐)

systemctl disable firewalld.service

三、主从备份,主要修改centos7下的/etc/目录下的my.cnf文件。如果是按着这个文档来的话,my.cnf一定在/etc/目录之下。

1配置主机的my.cnf

1.1、打开你的主机,找到主机下的/etc/my.cnf文件

vi my.cnf

在文件里添加的mysqld标签下添加以下红框圈中的三条

1.2、保存好以后重启mysql服务

1.3、之后再次进入主机的mysql数据库中创建一个用于远程连接的mysql用户,并分配这个用户被远程连接的权限以及对数据库增删改查权限(为了以防外一出现一堆不知名error,在这里我建议直接给所有权限,确保能主从备份之后再根据需求给用户删减权限)

create user 'wjy'@'%' identified with mysql_native_password by 'wjy';

而由于mysql8.0版本的原因,创建账户的命令进行了简化,如下图所示,所以使用以下语句即可

create user 'wjy'@'%' identified by 'wjy';

之后赋予远程连接权限

grant replication slave on .to 'wjy'@'%';

以防万一我们给这个账户对所有库的所有权限

grant all privileges on . to 'wjy'@'%';

刷新权限

flush privileges;

1.4、至此主数据库已经配置成功,可以用以下命令查看主机的主从备份的数据

show master status;

在这里需要注意下FilePosition两个字段里的数据,由于我之前已经配了一次的原因,这两个字段跟初次配置的字段有些许不同,初次应该是mysql-bin.0000051,如果与我的不匹配也没有关系,继续向下操作就行了。

1.5、我们开始配置从数据库的备份,与上面的操作一样,在从机的/etc/目录下配置my.cnf文件

mysqld标签下添加

server-id=2

保存并退出

1.6、我们登录从数据库中,也创建一个与主数据库同样的账户(为了以防万一,因为我第一次做的时候从库给我来了一个没有该账户的error,并且主库从库没有达成链接)创建用户命令和主库相同

之后配置从库链接到主库的wjy账户下,在这里我们就用到了主库查看的FilePosition两个字段了,具体命令如下

CHANGE MASTER TO

MASTER_HOST='192.168.101.206',

MASTER_USER='wjy',

MASTER_PASSWORD='wjy',

MASTER_LOG_FILE='mysql-bin.000005',

MASTER_LOG_POS=1352;

1.7开启slave从机线程服务并查看从机线程

这里我建议各位下载navicat这个软件进行操作,不然就有点看不懂数据了。出现以下两条就说明我们成功了

                 

四、在创建数据库的时候一定要确保主库从库都有同样的库同样的表和同样的字段!或者使用mysql命令行创建,不然从数据库会宕机!以下是我在主库中创建了一个test2库,同时他在从库中也出现了,就证明我们成功了

感谢各位观看。

后边还有异步备份,正在摸索研究中,博主第一次尝试是通过树莓派和笔记本电脑尝试的mysql主从备份,但当时并没有注意到mysql的版本问题,以及mariadb和mysql现在的一些区别,导致弄了一个星期都没有弄好,也没有用虚拟机,是真刀实枪的在自己系统环境里进行的配置,导致数据出错,改了root的密码验证机制导致mysql无法登录等等问题。所以实在不易,也是希望大家少爬电坑的,麻烦大家给我一个免费的赞,让大家能够多看到我这倒霉的历程,少爬坑。


版权声明:本文为q1975420992原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。