MySQL(MariaDB)主从架构项目实验(基于EVE-NG模拟器)

原创 阁主  2020-06-08 08:36:25  阅读 3513 次 评论 0 条
摘要:

MySQL主从又叫Replication、AB复制。简单讲就是A(Master-DB)与B(Slave-DB)两台机器做主从后,在A上写数据,另外一台B也会把A的数据复制到自己数据库里,实现数据实时同步。

主从作用

◆实时灾备,用于故障切换

◆读写分离,提供查询服务

◆备份,避免影响业务

基础准备

◆设备与系统

虚拟机两台(Centos7.X)

◆仓库yum源

使用华为yum源

◆软件需求

mariadb、mariadb-server

◆网卡需求(需要能连接外网)

均使用VMnet3(NAT)模式

◆远程SSH工具

本文使用finalshell

◆第三方数据库管理工具

本文使用Navicat Premium 15

拓扑规划

下图为本次实验拓扑

01实验拓扑.png

基础安装与配置

1.配置Master-DB和Slave-DB的IP地址

sudo ip addr add 172.16.8.10/24 dev eth0
sudo ip addr add 172.16.8.20/24 dev eth0

MySQL(MariaDB)主从架构项目实验(基于EVE-NG模拟器)第2张-阁主学习小站

MySQL(MariaDB)主从架构项目实验(基于EVE-NG模拟器)第3张-阁主学习小站

2.主从均关闭防火墙与SELINUX

systemctl stop firewalld
systemctl disable firewalld
sed -ri 's/(SELINUX=).*/\1disabled/g' /etc/selinux/config
setenforce 0

3.主从均更换yum源为华为源

cd /etc/yum.repos.d/
mkdir back
mv *.repo ./back
wget -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo
yum clean all
yum makecache fast

4.主从均安装MySQL

yum install –y mariadb-server mariadb

04安装MySQL.png

5.配置Master-DB数据库/etc/my.cnf文件

vim /etc/my.cnf
=========配置信息===========
[mysqld]
port=3306 #监听端口为3306
datadir=/data/database #设置数据库存储位置
max_connection=1000 #设置最大连接数
skip-name-resolve #跳过用户域名解析
server-id=1 #设置为主数据库,ID为1
log-bin=mysql-bin-master #日志定义

05my.cnf.png

6.Master-DB中创建数据库存储目录

mkdir -p /data/database
chown -R mysql:mysql /data/database/
ll /data/

06目录权限.png

7.配置Slave-DB数据库/etc/my.cnf文件

vim /etc/my.cnf
=========配置信息===========
[mysqld]
port=3306 #监听端口为3306
datadir=/data/database #设置数据库存储位置
max_connection=1000 #设置最大连接数
skip-name-resolve #跳过用户域名解析
server-id=2 #设置为从数据库,ID为2

07从数据库服务器.png

8.Slave-DB中创建数据库存储目录

mkdir -p /data/database
chown -R mysql:mysql /data/database/
ll /data/

08从服务器目录.png

9.初始化与管理MariaDB(主从服务器均操作)

systemctl start mariadb  #启动mariadb数据库服务
systemctl restart mariadb  #重启mariadb数据库服务
systemctl status mariadb  #查看数据库状态
mysql_secure_installation  #数据库初始化

09书数据库初始化.png

10.重启mariadb服务

systemctl restart mariadb  #重启mariadb数据库服务

主从架构部署

1.登录msyql

mysql -uroot -p123.com

2.创建用户sync,并授予数据库同步的权限

grant replication slave on *.* to 'sync'@'%' identified by 'sync123';
flush privileges; #刷新权限

3.查询Master-DB的状态

show master status;

010状态.png

4.Slave-DB输入进行同步的主数据库的相关参数

change master to master_host='172.16.8.10', 
master_user='sync',
master_password='sync123', 
master_port=3306, 
master_log_file='mysql-bin-master.000006',  #末尾小数点需要与主状态相同
master_log_pos=245, #端口同Master-DB的状态端口
master_connect_retry=10;

011同步参数.png

5.查询slave状态. 

Slave-DB同步开启

start slave;

Slave-DB重启mariadb服务

systemctl restart mariadb

6.查看从数据库状态,正确的状态如下:

show slave status\G;

012slave状态.png

◆Slave_IO_State必须为等待master发送事件

◆slave_IO_Running状态为Yes

◆slave_SQL_Running状态为Yes

Navicat管理MySQL

1.主从均开放root用户远程登录权限.

mysql -uroot -p123.com
use mysql
grant all privileges on *.* to 'root'@'%' identified by '123.com';
select host,user,password from user;

013开放root远程权限.png

2.主从均使用Navicat登录mariadb(地址等信息根据自己的配置来输入)

◆新建连接

014选择MDB.png

◆链接测试

015连接数据库.png

◆添加mariadb成功

016已添加连接.png

3.导入测试数据

◆上传测试数据压缩文件

017目录上传测试数据.png

◆解压缩包

#安装unzip zip命令模块
yum  install unzip zip -y
unzip test_db-master.zip

◆导入测试数据库

cd /root/test_db-master 
mysql -uroot -p123.com < employees.sql

018导入中,耐心等待.png

4.打开Master-DB数据库,可以看到已经导入测试数据,同时Slave-DB也已经同步到了Master-DB的数据表.

019导入成功.png

5.主从分别对employees数据库执行下条查询语句.

SELECT * FROM departments

◆Master-DB查询结果:

020查询接结果.png

◆Slave-DB结果同Master-DB:

021结果同Master-DB.png

6.Slave-DB中查看数据同步状态

show slave status\G;

022同步状态.png

常见的MySQL排错思路

1.防火墙和SELinux一定要关闭

2.初始化数据库之前一定要完成配置文件的正确设置(安装数据库→配置数据库→启动数据库→初始化数据库)

3.要能够查看报错的相关文件和日志信息

systemctl status mariadb.service
journalctl –xe
more /var/log/mariadb/mariadb.log

4.如下图,第三方数据库登录不上,基本上都是基础地址信息权限授权没有做到位.

023授权问题.png

附件

数据库测试数据文件

test_db-master.zip大小:35.0M
已经过安全软件检测无毒,请您放心下载。
本文地址:https://www.mainblog.cn/232.html
版权声明:本文为原创文章,版权归 阁主 所有,欢迎分享本文,转载请保留出处!
免责申明:有些内容源于网络,没能联系到作者。如侵犯到你的权益请告知,我们会尽快删除相关内容。

评论已关闭!