mysql搭建主从复制

news2025/1/10 23:00:46

Mysql主从复制搭建过程:

  1. 主从需同步时间,主开启ntpd(ntp网络时间协议,它的端口号udp123)服务-----修改配置,从通过/usr/sbin/ntpdate 主ip(ntpdate包需要提前安装);
  2. 主:开启中继二进制日志;
  3. 主上进行从授权
  4. 从:同步主

Mysql主从复制原理:

主master服务器将数据的改变都记录到二进制binlog日志中,只要master上的数据发生改变,则将其改变写入二进制日志;

从salve服务器会在一定时间间隔内对主master二进制日志进行探测其是否发生改变,如果发生改变,则开始一个I/O Thread请求主master二进制事件

同时主节点为每个I/O线程启动一个dump线程,用于向其发送二进制事件,并保存至从节点本地的中继日志中;

从节点将启动SQL线程从中继日志中读取二进制日志,在本地重放,使得其数据和主节点的保持一致

最后I/O Thread和SQL Thread将进入睡眠状态,等待下一次被唤醒。

  1. 环境基础配置

192.168.6.128  主

192.168.6.129  从

128、129都操作

# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

# systemctl stop firewalld

128上操作

# hostnamectl set-hostname db1 #修改主机名

# vim /etc/hosts 

192.168.6.128 db1

192.168.6.129 db2

129上操作

#hostnamectl set-hostname db2

# vim /etc/hosts 

192.168.6.128 db1

192.168.6.129 db2

2.安装数据库(128、129都操作)

2.1创建安装用户mysql

# useradd  mysql

# passwd mysql #生产环境建议配置账号密码

2.2设置ulimit参数

# vim /etc/security/limits.conf

文件最后添加

* soft nofile 65536

* hard nofile 131072

* soft nproc 65536

* hard nproc 65536

2.3执行安装

# yum install -y libaio

# vim /etc/my.cnf

[client]

port = 3306

socket = /tmp/mysql.sock

[mysqld]

port = 3306

socket = /tmp/mysql.sock

datadir = /data/mysql

skip-name-resolve

lower_case_table_names=1

character-set-server=utf8

sql_mode=NO_ENGINE_SUBSTITUTION

default_password_lifetime=0

[mysql]

no-auto-rehash

#解压缩安装包

# wget -c https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.25-linux-glibc2.12-x86_64.tar

# tar xf mysql-8.0.25-linux-glibc2.12-x86_64.tar -C /usr/local/

# cd /usr/local/

# mv mysql-8.0.25-linux-glibc2.12-x86_64 mysql

# cd /usr/local/mysql

# chown -R mysql.mysql /usr/local/mysql

#创建数据存放目录

# mkdir -p /data/mysql

# chown -R mysql.mysql /data/mysql

# chmod -R 755 /usr/local/mysql/

#执行初始化命令

# bin/mysqld --initialize --user=mysql --datadir=/data/mysql

如下图红框内是初始密码,需要记录下来。

 

将mysql注册为系统服务

# cd /usr/local/mysql

# cp support-files/mysql.server  /etc/rc.d/init.d/mysqld

# chmod 700 /etc/rc.d/init.d/mysqld

# service mysqld start

本地连接数据库,密码是上图红框中的初始密码

# cd /usr/local/mysql/bin/

# ./mysql -uroot -p

连接mysql后执行下列命令,修改初始密码和访问权限:

Mysql> alter user 'root'@'localhost' IDENTIFIED BY '123456';

Mysql> use mysql;

Mysql> update user set host = '%' where user = 'root' and host='localhost';

Mysql> flush privileges;

3.搭建主从复制

检查两台主机的时间是否一致

# date

3.1修改主配置文件

# vim /etc/my.cnf

[mysqld]

log-bin=mysql-bin

log-slave-updates=true

server-id=1

# service mysqld restart

mysql  -uroot -p

mysql>create user 'myslave'@'192.168.6.129' identified with mysql_native_password by '123456';

mysql>GRANT ALL ON *.* TO 'myslave'@'192.168.6.129';

mysql> flush privileges;

Mysql>show master status\G;

记下这两个参数

 

3.2修改从上的配置

# vim /etc/my.cnf

[mysqld]

log-bin=mysql-bin

log-slave-updates=true

server-id=2

# service mysqld restart

# mysql -uroot -p

Mysql>change master to master_host='192.168.6.128',master_user='myslave',master_password='123456',master_log_file='mysql-bin.000013',master_log_pos=1008;

Mysql> flush privileges;

Mysql> start slave;

Mysql>show slave status\G;

如图显示是正常的,主从就搭建好了,可以做些测试,看数据是否同步

 

           Slave_IO_State: Waiting for master to send event
              Master_Host: 192.168.6.128  //主服务器地址
              Master_User: myslave   //授权帐户名,尽量避免使用root
              Master_Port: 3306    //数据库端口,部分版本没有此行
              Connect_Retry: 60
              Master_Log_File: mysql-bin.000013
              Read_Master_Log_Pos: 1223     //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos
              Relay_Log_File: localgist-relay-bin.000015
              Relay_Log_Pos: 1223
              Relay_Master_Log_File: mysql-bin.000013
              Slave_IO_Running: Yes    //此状态必须YES
              Slave_SQL_Running: Yes     //此状态必须YES

3.3验证主从复制

主库上创建数据库或表数据

# mysql  -uroot -p

Mysql>create database test;

Mysql> use test;

mysql> create table tb1(id int,name varchar(20));

Mysql> inster into tb1 (id,name) values(1,’zhangsan’);

从库上进行查看,是否同步

# mysql  -uroot -p

Mysql> show databases; 查看是否同步

Mysql> use test;

Mysql> show tables;

Mysql> select * from tb1;

主库从库数据一致,主从搭建成功。

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

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

相关文章

整数划分问题(Java递归)

整数划分问题(Java递归) 文章目录整数划分问题(Java递归)0、 问题描述1、递归式2、代码3、参考0、 问题描述 整数划分问题 将正整数n表示成一系列正整数之和:nn1n2…nk,其中n1≥n2≥…≥nk≥1,k…

数字校园建设方案技术建议书

【版权声明】本资料来源网络,仅用于行业知识分享,供个人学习参考,请勿商用。【侵删致歉】如有侵权请联系小编,将在收到信息后第一时间进行删除!完整资料领取见文末,部分资料内容: 1.1 华为数字化…

“设计”小哥转行5G网络优化工程师!从零开始,三个月实现逆风翻盘~

5G网络优化,一个陌生的领域,对于一个毫无经验的小白来说,选择转行必定是需要勇气和决心的。好在,在决定选择5G网络优化的这一段时间里,老师给予了我最大的帮助和支持,包括从授课,到练习&#xf…

【Linux】基础IO(open、文件描述符、缓冲区)

文章目录1、从文件操作开始1.1 文件操作的系统调用接口1.2 文件描述符2、重定向3、缓冲区1、从文件操作开始 在C语言阶段,接触了很多库函数,如fopen、fclose、fread和fwrte,这些函数帮助了程序实现了内存与磁盘的输入输出功能。 不过之前都…

轻松搭建MQTT服务器,开发流程全透明

1、使用场景 MQTT服务器适用场景就不多介绍了,基本上实在IOT圈发光发热,所以说是特定领域的一个服务端软件,我们是用在车联网的环境里,用来发布消息。 2、选型 最早说需要使用mqtt服务器,然后我以为需要自己开发服务…

专利代理机构代理专利流程

代理申请专利流程是怎么样的? (一)咨询 1、 确定发明创造的内容是否属于可以申请专利的内容。 (二)技术交底 1、申请人向专利代理人提供有关发明创造的背景资料或委托检索有关内容; 2、申请人详细介绍发明创造的内容,帮助专利代理人充分理解发明创造…

【windows下nginx反向代理 ip地址和域名(含启动重启和关闭3个脚本)】 1.vue案例必须修改vue.config.js

例子1:代理vue的web服务器 1)去官网下nginx: download 下载windows版本nginx,并写好脚本,总体目录如下: StartNginx.bat // 启动脚本 echo off echo "nginx start !!!" nginx.exe -c conf/nginx.conf pause ReStartNginx.bat // 修改nginx.conf后重启脚…

redis学习笔记(基础)

Redis简介 Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、…

飞腾FT-2000/4处理器+复旦微FPGA+国产操作系统解决方案

XM-1203-FPGA飞腾定制主板 自主可控,国产CPU、BIOS和国产Linux操作系统 性能稳定,FT-2000/4处理器 功能接口多样化,可扩展性强 高度集成,具有丰富的接口和电磁兼容性能. XM-1203-FPGA基于飞腾4 核CPU FT-2000/4的处理器板&#x…

【Javassist】快速入门系列09 当检测到数组创建时用代码块替换

系列文章目录 01 在方法体的开头或结尾插入代码 02 使用Javassist实现方法执行时间统计 03 使用Javassist实现方法异常处理 04 使用Javassist更改整个方法体 05 当有指定方法调用时替换方法调用的内容 06 当有构造方法调用时替换方法调用的内容 07 当检测到字段被访问时使用语…

springboot整合之统一结果返回

特别说明:本次项目整合基于idea进行的,如果使用Eclipse可能操作会略有不同,不过总的来说不影响。 springboot整合之如何选择版本及项目搭建 springboot整合之版本号统一管理 springboot整合mybatis-plusdurid数据库连接池 springboot整合…

树与二叉树(遍历)

一、树 树结构是一种非常重要的非线性数据结构,该结构中的一个数据元素可以有两个或者两个以上的直接后继元素。 1、树的定义 树是由 n(n>0)个有限结点组成一个具有层次关系的集合,当 n0时称为空树,当 n>0时称为非空树。 对于非空树来…

水上交通AIS常见问题解决方案

水上交通AIS常见问题解决方案 AIS无信号的几种情况 情况一:AIS未开启。 解决方法:开启AIS设备。 情况二:AIS开启但MMSI码和证书不一致。 解决方法:船长向直属海事部门申请MMSI码,并请专业人员将正确的MMSI码写入AIS设…

数据结构之堆的实现以及实现堆排序和建堆解决Top K问题

文章目录前言1.堆的相关介绍1.什么是堆2.堆的结构2.堆的相关接口具体实现1.堆的声明和堆的初始化2.堆插入数据和删除数据3.堆的其他函数接口3.堆的实际运用1.建堆算法2.堆的应用之堆排序3.堆解决Top k问题4.总结前言 之前对树的相关知识概念进行了简单介绍,本文将实…

odps-jdbc提交MaxCompute数据源SQL报错HTTP/1.0 is not allowed

概述 最近负责的一款数据产品。有个功能:选择某个数据源,比如阿里云的MaxCompute数据源,然后手写SQL,点击自动生成字段(即获取前置SQL里的查询字段。前置SQL可以有drop then create table动作子句,但是最后…

【PS-选区速成】快速选择工具、魔棒工具、对象选择工具

目录 快速选择工具 1、位置 2、3种模式:新选区、添加到选区、从选区减去 3、画笔的设置参数 画笔大小:识别的范围 硬度:边缘的识别能力 间距:识别的连贯程度 跟【选区工具】配套使用的快捷键 1、按【ALT】减区 2、放大…

数据结构之排序【快速排序和归并排序的非递归代码实现及分析】

引言: 今天因为要写论文,所以现在有点迟了,并且此时是北京时间:2022/12/28/1:41 ,我发现晚睡我真的是专业的,当然睡觉我也是专业的,懂的都懂,现在有点迟加上天大寒,手指不可屈伸&am…

android之View的滑动

其实不管是哪种滑动方式,基本思想都是类似的:当点击事件传递到View时,系统记下触摸点的坐标,手指移动的时候,系统记下移动后的坐标,并计算出偏移量,并通过偏移量来修改View的坐标。 下面我们来…

黑客比程序员高在哪里?

黑客其实和一般的程序员一样,但是他们的关注点不一样。黑客关注的是如何破坏,通过这些有创造性的破坏来获取利益,展现自己的能力。而程序员关注的是如何创造,通过创造来获取利益,展现自己的能力。 就如同一个硬币的两…

CCF BDCI|算能赛题决赛选手说明论文-01

基于TPU平台实现人群密度估计 加速器队伍 黄显钧 个人名义参赛 中国-广东广州peterhuang0323qq.com 团队简介 加速器队伍队长:黄显钧,现任某科技公司的高级工程师,技术栈涉足嵌入式全栈开发,AI 开发等领域,对技术充满…