MySQL的主从实战

news2024/10/6 22:33:59

MySQL的主从实战

1、Mysql主从的必要性

访问量不断增减,Mysql服务器的压力增大;就需要对Mysql进行优化与改造;

  • 实现Mysql的高可用
  • MySQL的主从复制搭建
    • 主从搭建的目的就是实现数据库冗余备份
    • 同步主服务器和Slave服务器,一旦Master服务器宕机也有Slave服务器的数据支撑
  • MySQL 的读写分离,
  • MySQL的拆分库、表进行优化

2、MySQL的主从搭建

  • 至少需要两台服务器:Master服务器和Slave服务器;
  • 主从数据同步是一个异步复制的过程
  • 两台服务器都需要开启bin-log日志功能;
    • bin-log日志用于记录在Master库中执行的增、删、修改、更新操作的sql语句;
  • IO线程、SQL线程开启

3、MySQL主从的原理:

  • salve执行start ,slave IO线程通过在Master创建的授权用户链接上至Master,并且请求master
  • Master接收到来自slave IO线程的请求后,master IO线程根据slave发送的指定bin-log日志position点之后的内容,然后返回给slave的IO线程;
  • 返回的信息中除了bin-log日志内容外,还有master最新的binlog文件名以及在binlog中的下一个指定更新position点;
  • 然后Slave服务器收到日志内容并且添加到relay-log文件;更新position记录到Master.info文件中;
  • 最后master与slave两台服务器保持一致;

4、搭建Mysq主从的实验:

  • master :192.168.75.131
  • slave:192.168.75.132
  • 实验中使用的是mariadb服务
#两台服务器都直接安装mariadb
[root@Node1 ~]# yum -y install mariadb-server
  • 主服务器master配置如下:
    • 编辑/etc/my.cnf文件
      • 添加server-id
      • 启用log-bin的日志格式
    • 授权一个用户,用于同步mariadb的数据
#修改配置文件
[root@Node1 ~]# vim /etc/my.cnf
..........[mysqld]的模块下添加
server-id = 131
log-bin = mysql-bin

#添加完成之后启动MySQL服务
[root@Node1 ~]# systemctl start mariadb

#登入mysql-->创建用户
	#这里直接用匿名用户登录,因为只是做实验;
[root@Node1 ~]# mysql
............
MariaDB [(none)]> 

	#创建一个数据库
MariaDB [(none)]> create database LJW;
Query OK, 1 row affected (0.00 sec)
	#授权用户、创建同步用户
MariaDB [(none)]> grant replication slave on *.* to 'tongbu'@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)


#查看主服务器的状态
	#这里要记录起来file的bin-log日志和position的编号-->从服务器需要用到
MariaDB [(none)]> SHOW MASTER status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 |      470 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
  • 接下来就是slave服务器的配置
    • 编辑/etc/my.cnf文件
      • 添加server-id–>注意这个server-id是不能与主服务器相同的
    • 在从服务器上指定主服务器的信息
#修改配置文件
[root@Node2 ~]# vim /etc/my.cnf
	#在[mysqld]的位置下添加
.....#这里只需要添加server-id即可-->注意不要和主服务器的id相同
server-id=132

#然后启动mysql
[root@Node2 ~]# systemctl start mariadb
	#登入服务器
[root@Node2 ~]# mysql

#指定主服务器信息
MariaDB [(none)]> change master to
    -> master_host='192.168.75.131',			#指定master的ip
    -> master_user='tongbu',					#指定master的用户
    -> master_password='123456',				#用户的密码
    -> master_log_file='mysql-bin.000003',		#就是主服务器的bin-log号
    -> master_log_pos=470;						#主服务器的position

#启动从服务器,
MariaDB [(none)]> slave start;
Query OK, 0 rows affected (0.00 sec)

#查看同步情况
MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.75.131
                  Master_User: tongbu
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000003
          Read_Master_Log_Pos: 470
               Relay_Log_File: mariadb-relay-bin.000002
                Relay_Log_Pos: 529
        Relay_Master_Log_File: mysql-bin.000003
             Slave_IO_Running: Yes							#主要查看这两个yes代表搭建成功
            Slave_SQL_Running: Yes							#主要查看这两个yes代表搭建成功
.....................
  • 到这里搭建已经完成–>进入测试阶段
    • 主服务器创建库和表格
    • 然后从服务器查看
#主服务器创建
MariaDB [(none)]> create database HZM;
Query OK, 1 row affected (0.00 sec)
MariaDB [HZM]> create table t1 (id varchar(20),name varchar(20));
Query OK, 0 rows affected (0.00 sec)

#从服务器查看
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| HZM                |			#这个就是刚创建的HZM的库
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)

#主服务器插入数据
MariaDB [HZM]> insert into t1 values ('1',"liangjiawei");
Query OK, 1 row affected (0.00 sec)

#从服务器查看数据
MariaDB [(none)]> use HZM;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [HZM]> select * from t1;
+------+-------------+
| id   | name        |
+------+-------------+
| 1    | liangjiawei |
+------+-------------+
1 row in set (0.00 sec)
  • 到这里实验结束;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/548327.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vivado综合属性系列之七 DONT TOUCH

目录 一、前言 二、DONT TOUCH ​ ​2.1 属性说明 ​ ​2.2 属性用法 ​ ​2.3 工程代码 ​ ​2.4 参考资料 一、前言 ​ ​设计中经常会遇到一些信号,模块等被综合工具优化,而实际这些部分确是我们所需要的,针对这种情况&a…

哨兵机制原理详解

文章目录 初始化 Sentinel三个定时任务(重要)INFO任务订阅/发布任务心跳任务 Redis节点下线判断主观下线判断客观下线判断 Sentinel Leader 选举故障转移过程整体过程Master 选择算法修改从服务器的复制目标将旧的主服务器变为从服务器 节点上线原Redis节…

如何用Nginx实现对国家/城市以及指定IP的访问限制?

1.前言 在【如何用Nginx代理MySQL连接,并限制可访问IP】一文中,我们实现了通过Nginx代理MySQL连接,并限制了指定IP才能通过Nginx进行连接,以提高数据安全性。 该场景适用于根据具体的IP地址来进行访问限制,假如我们要…

synchronized优化原理

文章目录 一、Monitor1.1 Monitor结构 二、轻量级锁三、锁膨胀四、自旋优化五、偏向锁 一、Monitor Monitor的工作原理也是synchronized底层原理 每个Java对象都可以关联一个Monitor对象,如果使用synchronized给对象上锁之后,该对象头的MarkWord中就被设…

怎样从“点点点”进阶到自动化测试?

为什么要学习自动化测试 在讨论这个问题之前,先来聊一下测试人员的职业发展路线,无非就是两条,技术路线和管理路线,技术路线一般就是功能测试(60%)-->自动化测试(25%)-->测试…

fio引发的一些问题

fio引发的一些问题 奇怪的255扇区在nvme驱动中插入打印语句直接编译模块加载源码编译内核 查找内核源码 奇怪的255扇区 由于块设备驱动项目需要测试读写速度,故使用fio工具,没想着深入了解,简单测个速就可以 使用tldr命令得到测试磁盘读写的…

linux内核篇-文件系统(硬盘、虚拟文件系统、文件缓存)

文件系统的意义 之前说的都是在进程在物理内存保存的数据,内存就像一个纸箱子,仅仅是一个暂存数据的地方,而且空间有限。如果我们想要进程结束之后,数据依然能够保存下来,就不能只保存在内存里,而是应该保存…

Nacos-04-@RefreshScope自动刷新原理

Nacos动态刷新原理 Nacos做配置中心的时候,配置数据的交互模式是有服务端push推送的,还是客户端pull拉取的? 短轮询 不管服务端的配置是否发生变化,不停发起请求去获取配置,比如支付订单场景中前端JS不断轮询订单支…

hadoop启动,缺少RM的进程:Error starting ResourceManager【已解决】

Error starting ResourceManager【已解决】 现象解决思路报错内容解决总结 现象 Hadoop启动后 执行jps 查看进程,缺少了 ResourceManager 解决思路 start-all.sh分别会有五个日志产生 缺少哪个进程,就去看谁的日志 报错内容 resourcemanager的log文…

基于 Linux 下的生产者消费者模型

目录 传统艺能😎概念😘特点😍优点😁基于阻塞队列的生产者消费者模型🤣模拟实现😂基于计算任务的生产者消费者模型👌 传统艺能😎 小编是双非本科大二菜鸟不赘述,欢迎米娜…

chatgpt赋能Python-python3_date

Python 3 Date介绍 Python 3是一种非常流行的编程语言,其中涉及到日期处理的功能非常强大。Python 3支持处理日期、时间和时间刻度,因此可以在各种情况下使用它来管理日期。 日期格式 Python 3支持多种日期格式,如下所示: “Y…

不怕得罪人地推荐这9本黑客书籍

[利益声明] 1、这9本都和我有些关系或缘分,也是我至少过了一遍的,虽然并没都仔细推敲,但是这些书,我还是不得不点个赞。 2、其中一本是我和 xisigr 写的:-)我并不觉得在这不能推荐,因为这本书毕竟卖得很好。 然后&am…

torch.nn.functional.normalize参数说明

torch.nn.functional.normalize参数说明 函数定义参数及功能官方说明三维数据实例解释参数dim0参数dim1参数dim2参数dim-1 参考博文及感谢 函数定义 torch.nn.functional.normalize(input, p2.0, dim1, eps1e-12, outNone) # type: (Tensor, float, int, float, Optional[Tens…

chatgpt赋能Python-python3_9怎么安装jieba库

Python3.9怎么安装jieba库 随着大数据时代的到来,中文分词是一个愈发重要的问题。而jieba是一个基于Python的中文分词工具包,具有高速、易用、解耦的特点,广受开发者的青睐。本文将介绍如何在Python3.9环境下安装jieba库。 什么是jieba库 …

微服务: Seata AT 分布式事务以及配置方式(上篇)

目录 前言简介: 1. 安装seata-at -> 1.1 先看版本, 全局搜一下 -> 1.2 版本说明 alibaba/spring-cloud-alibaba Wiki -> 1.3 选择seata-at版本 -> 1.4 下载后按照下图进行创建文件 ---> 1.4.0 先在nacos创建命名空间seata ---> 1.4.1 registry.conf…

Chrome 的骑士盾,谷歌 Security Princess 访谈

童话故事里的公主都有一种需要被保护的感觉,就像马里奥大叔在这么多年来都要在库巴手上拯救出碧姬公主一样。不过在谷歌的这位 Security Princess 却手执盾牌,守护着大家的 Chrome 浏览器免受恶意程序攻击。小编这次就乘着世界网络安全日的机会&#xff…

微信小程序-生命周期

为什么今天突然总结一下微信小程序的生命周期呢?因为突然发现这个知识点忘得有点干净。所以今天就看一下微信小程序的生命周期是怎么个事吧! 目录 生命周期 生命周期的分类 生命周期函数的作用 生命周期函数的分类 生命周期是指一个对象从创建->…

Docker -- m1芯片 macOS 安装 nginx - 03

m1芯片 macOS 安装 nginx 一、安装docker提前准备二、下载nginx相关镜像三、运行相关容器四、运行并验证 一、安装docker提前准备 查看 d o c k e r \color{#FF7D00}{docker} docker版本:在 c o m m e n t \color{#FF7D00}{comment} comment 中输入 docker -version…

小红薯笔记/帖子采集工具

小红书【笔记/帖子】采集工具 链接: http://106.53.68.168:9920/xhs-keyword-spider 规则及操作 (1)规则: 按照关键词抓取规则:标题中或者正文内容中包含该关键词都能被抓取下来。多种搜索模式可选,分别…

字节跳动10年经验,10W字228道软件测试经典面试题总结(附答案)

前言 最近有很多粉丝问我,有什么方法能够快速提升自己,通过阿里、腾讯、字节跳动、京东等互联网大厂的面试,我觉得短时间提升自己最快的手段就是背面试题,最近总结了软件测试常用的面试题,分享给大家,希望…