美文网首页工具栏
Linnux企业级运用:数据库服务器——MariaDB实现主从复

Linnux企业级运用:数据库服务器——MariaDB实现主从复

作者: 似朝朝我心 | 来源:发表于2021-10-24 11:31 被阅读0次

环境准备:准备2台redhat7.5的虚拟机,配置好IP和yum源
我这里
主数据库(主服务器)的IP配置为:192.168.31.101
从数据库(从服务器)的IP配置为:192.168.31.102

1.实现MariaDB主从复制

Master-mariadb1(主数据库配置)

  • 挂载光驱
  • 安装mariadb服务器
  • 主从数据库能互相ping通
  • 启动mariadb服务与配置开机自启,发现端口3306


  • 对数据库进行安全配置,为了禁止匿名访问数据库,需要重新配置密码(进入交互界面一路回车即可)


  • 导入users.mdb数据(我这里提前准备好了数据库的测试数据)


  • users.mdb脚本数据
-- MySQL dump 10.14  Distrib 5.5.35-MariaDB, for Linux (x86_64)
--
-- Host: localhost    Database: Contacts
-- ------------------------------------------------------
-- Server version   5.5.35-MariaDB

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `u_name`
--

DROP TABLE IF EXISTS `u_name`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `u_name` (
  `userid` int(11) NOT NULL AUTO_INCREMENT,
  `firstname` varchar(50) NOT NULL,
  `lastname` varchar(50) NOT NULL,
  PRIMARY KEY (`userid`)
) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `u_name`
--

LOCK TABLES `u_name` WRITE;
/*!40000 ALTER TABLE `u_name` DISABLE KEYS */;
INSERT INTO `u_name` VALUES (1,'san','zhang'),(2,'si','li'),(3,'wu','wang'),(4,'Barack','Obama'),(5,'George','Walker Bush'),(6,'Bill','Clinton'),(7,'Hillary','Clinton'),(8,'John','Clinton'),(9,'George','wang'),(10,'John','li'),(11,'Bill','wang'),(12,'George','Obama'),(13,'George','wang'),(14,'Michael','Jackson'),(15,'John','Clinton'),(16,'Michael','Walker Bush'),(17,'Michael','Obama'),(18,'Hillary','Jackson'),(19,'Georgexx','Jackson'),(20,'Barack','Jackson'),(21,'John','Jackson'),(22,'John','Obama'),(23,'John','Clinton'),(24,'John','Walker Bush'),(25,'John','wang');
/*!40000 ALTER TABLE `u_name` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `u_passwd`
--

DROP TABLE IF EXISTS `u_passwd`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `u_passwd` (
  `uid` int(11) NOT NULL AUTO_INCREMENT,
  `password` varchar(50) NOT NULL,
  PRIMARY KEY (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `u_passwd`
--

LOCK TABLES `u_passwd` WRITE;
/*!40000 ALTER TABLE `u_passwd` DISABLE KEYS */;
INSERT INTO `u_passwd` VALUES (1,'redhat'),(2,'fedora'),(3,'centos'),(4,'centes'),(5,'redhrt'),(6,'ridhat'),(7,'redfat'),(8,'fadora'),(9,'cantos'),(10,'redhap'),(11,'contos'),(12,'fcdora'),(13,'cendora'),(14,'tangene'),(15,'tangrine'),(16,'tangerone'),(17,'tangeine'),(18,'taangerine'),(19,'tangerine'),(20,'tanggerine'),(21,'anggerine'),(22,'aggerine'),(23,'taggerine'),(24,'tanerine'),(25,'tannerine');
/*!40000 ALTER TABLE `u_passwd` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `u_loc`
--

DROP TABLE IF EXISTS `u_loc`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `u_loc` (
  `uid` int(11) NOT NULL AUTO_INCREMENT,
  `location` varchar(50) NOT NULL,
  PRIMARY KEY (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `u_loc`
--

LOCK TABLES `u_loc` WRITE;
/*!40000 ALTER TABLE `u_loc` DISABLE KEYS */;
INSERT INTO `u_loc` VALUES (1,'Shenzhen'),(2,'Guangzhou'),(3,'Santa Clara'),(4,'Santa Clara'),(5,'San Francisco'),(6,'Santa Calara'),(7,'Santa Clare'),(8,'Santa Clara'),(9,'Florida'),(10,'Santa Claraa'),(11,'Florida'),(12,'State of Texas'),(13,'State of Texas'),(14,'Santa Claraa'),(15,'Santa Clara'),(16,'Colorado?CO'),(17,'Hawaii?HI'),(18,'Santa Calara'),(19,'Santa Clra'),(20,'Santa Clara'),(21,'Santa Clara'),(22,'Minnesota'),(23,'Vermont'),(24,'Santa Clara'),(25,'Minnesota');
/*!40000 ALTER TABLE `u_loc` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2016-07-24 18:17:53
  • 以新密码登录数据库,创建UserData数据库并使用该数据库


  • 将users.mdb脚本文件定向UserData数据库下,对该数据库进行数据的录入操作


  • 查看UserData数据库生成的数据表 (表明数据录入正常)


  • 配置主数据库的配置文件:my.cnf文件


  • 参数相关:二进制日志文件名、日志文件格式选择混合模式、Server-id取唯一值即可


  • 配置完后需要重启mariadb服务


  • 重新登录数据库


  • 查看主数据库的当前日志位置,复制点为245;
  • 主数据库授权,创建一个复制账号;仅针对192.168.31该网段
  • 查看主机信息
  • 再次查看主数据库的当前日志位置,复制点变更成402;



对主数据库进行数据备份

  • 第一步需要对主数据库进行锁库操作,其次并进行验证(锁库之后,数据库用户不能有其余的权限操作)


  • 对主数据库进行备份数据,将主数据库的所有数据写入到一个all.sql文件当中


  • 将主数据库备份的数据all.sql备份到从服务器上



Master-slave1从数据库配置(从服务器)

  • 从服务器这一端进行验收查看,发现all.sql数据已经从主服务器上发送过来。


  • 从服务器基础配置如下:挂载光驱、安装mariadb服务、maridb服务配置、数据库安全配置(重复主数据库配置的环境)



  • 登录数据库的交互界面


  • 验收从主数据库发送过来的数据是否正常


  • 回到主数据库对数据进行解锁操作


  • 从服务器配置mariadb服务



  • 配置完后重启mariadb服务


  • 切换Master,参数写对端(主数据库的参数)


  • 主数据库防火墙放行服务


  • 从数据库,查看slave服务的开启状态,2个都处于yes


    实现主从服务器的验收:
  • 主数据库创建一个名为tes1的数据库


  • 从数据库的那一端可以看到test1数据库存在


    结论:1:主数据库变更导致从数据库也会跟着变更(从数据库受到影响)
    结论2:从数据库变更而主数据库并不会跟着变更(主数据库不受到从数据库的影响)
    结论3:主从复制,仅仅实现单边同步,一个是主人,一个是仆从,主人可以吩咐仆人做事,仆人却不能反转身份去命令主人行事(这就是主从复制的原理)。

实现MariaDB双主复制

  • IP:101的master主机的配置



  • 重启mariadb服务



  • IP:102master主机(将原本的这台从服务器提升为主服务器,相当于我们现在拥有了2台主服务器,实现双主复制)


  • 参数相关:服务器ID必须唯一、二进制日志文件、采用混合模式、设置步长(根据服务器多少而定)、初始偏移量


  • 重启数据库服务


  • IP:102的这台主服务器创建复制用户并授权


  • 通过show master status 查看二进制文件名称还有pos位置,为slave配置复制位置


  • IP:102的这台主服务器防火墙放行mysql服务


  • IP:101的这台主服务器切换Master,参数写对端


  • 两台主服务器都需要启动slave服务,并且确保两台主服务器的这2个参数处于yes的开启状态。
    Slave_IO_Running:Yes
    Slave_SQL_Running:Yes



主主复制(双主复制)验收结论:两边分别创建数据库,彼此都同步受到影响,实现双边同步

  • IP为101的主数据库创建一个名字叫test5的数据库


  • IP为102的主数据库也会同步生成test5的数据库


  • IP为102的主数据库创建一个名字叫test6的数据库


  • IP为101的主数据库也会同步生成test6的数据库


报错解决:

  • 报错1:stop slave之后无法start slave,需要运行reset slave再start slave

  • 报错2:两台主服务器上的show slave status\G都必须保持处于YES 的开启状态




    如果存在NO(未开启的)都需要进行如下操作:


相关文章

网友评论

    本文标题:Linnux企业级运用:数据库服务器——MariaDB实现主从复

    本文链接:https://www.haomeiwen.com/subject/tgeraltx.html