MySQL的Replication复制

news/2025/3/19 10:39:35/

单机多实例部署

创建mysql系统账户

useradd -s /sbin/nologin -M mysql

解压tar包

tar -zxvf mysql5.7.tar.gz
mv mysql5.7 /usr/local/mysql

创建路径并赋值

mkdir -p /usr/local/var/mysql1
mkdir -p /usr/local/var/mysql2
mkdir -p /usr/local/var/mysql3touch /tmp/mysql1.sock
touch /tmp/mysql2.sock
touch /tmp/mysql3.sockchown mysql:mysql /tmp/mysql1.sock
chown mysql:mysql /tmp/mysql2.sock
chown mysql:mysql /tmp/mysql3.sockchown mysql:mysql -R /usr/local/mysql
chown mysql:mysql -R /usr/local/var/

配置my.cnf

[mysqld_multi]
mysqld=/usr/local/mysql/bin/mysqld_safe
mysqladmin=/usr/local/mysql/bin/mysqladmin
user=root
pass=passwd[mysqld1]
port=3306
socket=/tmp/mysql1.sock
datadir=/usr/local/var/mysql1[mysqld2]
port=3307
socket=/tmp/mysql2.sock
datadir=/usr/local/var/mysql2[mysqld3]
port=3308
socket=/tmp/mysql3.sock
datadir=/usr/local/var/mysql3[mysqld]

创建环境变量(在尾部添加)

vi /etc/profile
export PATH=/usr/local/mysql/bin:$PATH

生效

source /etc/profile

启动

mysqld_multi --defaults-extra-file=/etc/my.cnf start

查看状态

mysqld_multi --defaults-extra-file=/etc/my.cnf report
注:如果my.cnf中没有user和pass参数则mysqld_multi stop不能停止实例

MySQL Replication概述

MySQL复制是指从一个MySQL主服务器(Master)将数据复制到另一台或多台MySQL从服务器(Slave)的过程,将主数据库的DDL和DML操作通过二进制日志传到从服务器上,然后在从服务器上对这些日志重新执行,从而使得主从服务器的数据保持同步。
在MySQL中,复制操作是异步进行的,Slave服务器不需要持续的保持连接用于接收Master服务器的数据。
MySQL支持一台主服务器同时向多台从服务器进行复制操作,从服务器同时可以作为其他从服务器的主服务器,如果MySQL主服务器访问量比较大,可以通过复制数据,然后在从服务器上进行查询操作,从而降低主服务器的访问压力,同时从服务器作为主服务器的备份,可以避免主服务器因为故障数据丢失的问题。
MySQL数据库复制操作大致可以分成三个步骤:

  1. 主服务器将数据的改变记录到二进制日志(binary log)中。
  2. 从服务器将主服务器的binary log events复制到它的中继日志(relay log)中
  3. 从服务器重做中继日志中的事件,将数据的改变与从服务器保持同步

不同服务器之间实现主从复制

角色ip
master172.16.164.133
slave172.16.164.136

主:

调整/etc/my.cnf

[mysqld]
datadir=/data
basedir=/usr/local/mysql
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
symbolic-links=0log-bin=mysql-bin   # 必须打开binlog
server-id=1 # server-id与从不一致即可
read-only=0 # 0为可写,1为只读
binlog_format=row
binlog_row_image=minimal
[mysqld_safe]
log-error=/var/log/mysql/mysql.log
pid-file=/var/run/mysql/mysql.pid
[mysql]
default-character-set=utf8

重启mysql服务

登陆主端mysql,创建复制使用的账户并赋予权限:

mysql> create user 'repl'@'%' identified by 'p@ssw0rd';
mysql> grant replication slave on *.* to 'repl'@'%'; 

查看master参数

mysql> show master status;

返回:

FilePositionBinlog_Do_DBBinlog_Ignore_DBExecuted_Gtid_Set
mysql-bin.000002154

从:

调整/etc/my.cnf

[mysqld]
datadir=/data
basedir=/usr/local/mysql
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
symbolic-links=0log-bin=mysql-bin
server-id=2
read-only=1
binlog_format=row
binlog_row_image=minimal
[mysqld_safe]
log-error=/var/log/mysql/mysql.log
pid-file=/var/run/mysql/mysql.pid
[mysql]
default-character-set=utf8

重启mysql服务

登陆mysql

mysql> stop slave;
mysql> change master to master_host='172.16.164.133',master_user='repl',master_password='p@ssw0rd',master_log_file='mysql-bin.000002',master_log_pos=154;
mysql> start slave;

查看slave参数

mysql> show slave status\G;

其中返回值中:
Slave_IO_Running,Slave_SQL_Running两个参数必须为Yes才能正常工作


http://www.ppmy.cn/news/73535.html

相关文章

django admin后台管理系统上传添加的图片保存到阿里云oss中

目录 一、配置admin上传图片到阿里云oss 二、配置admin后台上传到阿里云oss的图片为自定义名 问题描述:在开发自己的应用/网页前后台时可以调用阿里云oss的接口将图片上传至oss保存和读取,非常方便。但在django自带的admin后台中如何配置添加的图片也上…

私有GitLab仓库 - 本地搭建GitLab私有代码仓库并随时远程访问「内网穿透」

文章目录 前言1. 下载Gitlab2. 安装Gitlab3. 启动Gitlab4. 安装cpolar内网穿透5. 创建隧道配置访问地址6. 固定GitLab访问地址6.1 保留二级子域名6.2 配置二级子域名 7. 测试访问二级子域名 转载自远控源码文章:Linux搭建GitLab私有仓库,并内网穿透实现公…

网络性能测试工具

什么是网络测试 网络测试是用于定量或定性测量 IT 基础架构性能的过程。这是一个原始级别的故障识别,不需要大量的历史数据。对于更高级的监视,使用网络监视工具。 什么是网络测试工具 网络测试工具是一组工具,可帮助测量网络各个方面的性…

【数据结构】散列表(哈希表)

文章目录 前言一、什么是散列表二、什么是哈希函数三、下面简单介绍几种哈希函数四、冲突处理散列冲突的方法开放定址法再散列函数法公共溢出区法链地址法 五、代码实现1.哈希函数2.链表和哈希表的创建3.哈希表初始化3.从哈希表中根据key查找元素4.哈希表插入元素5.元素删除6.哈…

三十八、流控效果、热点数据限流、熔断降级、push到配置中心nacos

1、流控效果 流控效果是指请求达到流控阈值时应该采取的措施,包括三种: 快速失败:达到阈值后,新的请求会被立即拒绝并抛出FlowException异常。是默认的处理方式。 warm up:预热模式,对超出阈值的请求同样是…

微信小程序-页面跳转wxAPI

官方文档地址&#xff1a;https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.navigateTo.html wx.navigateTo(Object object) 更改首页代码&#xff0c;添加一个按钮&#xff0c;绑定一个事件的点击&#xff1a; <!--index.wxml--> <text>首页</t…

systemverilog 2 定宽数组

1. 数组的声明(一维和多维) 一维数组 int a[15]; 二维数组 int a[16][5]; 当访问越界地址时,读出的数据会是默认值,4值逻辑,如logic会返回x,2值逻辑如bit会读出0,而wire在没有驱动的时候会输出Z(高阻态) 2. 定宽数组初始化 int a[5] = { 0,1,2,3,4}; // 加 花括…

视频美颜SDK在直播领域的应用与挑战

目前&#xff0c;视频美颜技术在视频拍摄领域“大展神通”&#xff0c;因为视频美颜SDK可以帮助主播在直播中展现更加美好的形象&#xff0c;吸引更多的观众&#xff0c;并提升用户体验。然而&#xff0c;视频美颜SDK在直播领域的应用也面临着一些挑战。 一、视频美颜SDK在直…