首页 > 数据库 >mysql的主从复制

mysql的主从复制

时间:2025-01-22 14:49:24浏览次数:1  
标签:主从复制 xxx SOURCE MASTER mysql 服务器

一.主从复制
主从复制的限制
一个从服务器只能连接到一个主服务器:从服务器的复制机制是基于单个主服务器的二进制日志(binlog)来同步数据的。因此,一个从服务器不能同时从多个主服务器接收数据。
主从复制的架构(读写分离)
主服务器负责写操作(如 INSERT、UPDATE、DELETE)
从服务器负责读操作(如 SELECT)

1.保证主从服务器数据一致
1)主服务器复制备份数据
FLUSH TABLES WITH READ LOCK;
mysqldump -uroot -p --all-databases --master-data=1 --single-transaction > backup.sql
UNLOCK TABLES;
2)从服务器导入数据
SOURCE /path/to/backup.sql;


二.搭建主从复制(保证数据库一致,如:字符集一致)
1)主库配置
1.修改配置文件/etc/my.cnf(或者/etc/my.cnf.d/mysql-server.cnf)添加如下:
#mysq服务标识,保证整个集群环境中唯一,默认为1
server-id =1
#是否只读,1代表只读,0代表读写
read-only=0
#忽略的数据,指不需要同步的数据库(以下都注释掉,代表全都复制)
#binlog-ignore-db=mysql
#指定同步的数据库
#binlog-do-db=test

2.重启mysql
systemctl restart mysqld

3.登录mysql,创建远程连接的账户
create user 'cpuser'@'%' identified with mysql_native_password by '123456';
# 为用户分配主从复制权限
grant replication slave on *.* to 'cpuser'@'%';

4.通过指令,查看二进制日志坐标
show master status ;

字段含义:
file:从哪个日志文件开始推送日志文件
position:从哪个位置开始推送日志
binlog_ignore_db:指定不需要同步的数据库


2)从库配置
1.修改配置文件/etc/my.cnf
#mysq服务标识,保证整个集群环境中唯一,默认为1
server-id =2
#是否只读,1代表只读,0代表读写
read-only=1

2.重启mysql
systemctl restart mysqld

3.登录mysql,设置主库配置
# mysql 8.0.23 之后版本的语法:
CHANGE REPLICATION SOURCE TO SOURCE_HOST='xxx.xxx.xxx.xxx', SOURCE_USER='xxx', SOURCE_PASSWORD='xxx',SOURCE_LOG_FILE='xxx',SOURCE_LOG_POS=xxx;
#mysql 8.0.23 之前的版本,执行如下SQL:
CHANGE MASTER TO MASTER_HOST='xxx.xxx.xxx.xxx', MASTER_USER='xxx', MASTER_PASSWORD='xxx', MASTER_LOG_FILE='xxx', MASTER_LOG_POS=xxx;

 

 

4.开启同步操作
#8.0.22之后
start replica;
#80.22之前
start slave;


5.查看主从同步状态
#8.0.22之后
show replica status;
#8.0.22之前
show slave status;
或(列显示)
show slave status\G;


三.关闭主从复制
1.从服务器上,运行以下命令停止复制进程
STOP SLAVE;
2.确认复制已停止
SHOW SLAVE STATUS\G;
3.清理复制配置(可选)
RESET SLAVE;
4.主服务器移除从服务器(可选)
REVOKE REPLICATION SLAVE ON *.* FROM 'cpuser'@'%';
DROP USER 'cpuser'@'%';
5.关闭主服务器的二进制日志(可选)
注释掉或删除配置文件的以下行
log_bin = /var/log/mysql/mysql-bin

6.重启mysql服务后验证
#从服务器:确认复制已停止且没有错误
SHOW SLAVE STATUS\G;
#主服务器:确认复制用户已被删除
SHOW GRANTS FOR 'cpuser'@'%';

标签:主从复制,xxx,SOURCE,MASTER,mysql,服务器
From: https://www.cnblogs.com/circlecircle/p/18685850

相关文章

  • 【Mysql日志介绍】一般查询日志、慢查询日志、错误日志、二进制日志、Redo Log 、Undo
    一、日志简介 MySQLServer有以下几种日志,可以记录服务器正在发生的活动。日志类型日志信息错误日志(Errorlog)mysqld在启动、运行或停止时遇到的问题一般查询日志(Generalquerylog)已建立的客户端连接和从客户端接收到的语句慢查询日志(Slowquerylog)执行时间超......
  • 数据迁移丨借助 pg2mysql 从 PostgreSQL 到 GreatSQL
    数据迁移丨借助pg2mysql从PostgreSQL到GreatSQL上篇《数据迁移丨借助AI从PostgreSQL到GreatSQL》介绍了如何使用AI+pg_dump/COPY的方式将PostgreSQL迁移到GreatSQL中,各位同学看过之后,会发现两款数据库还是有一些差异,例如对象层次结构、数据类型等方面,如果采用......
  • MySql 范式
    目录三范式拓展:各范式的关系图如下所示:目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。一般说来,数据库只需满足第三范式(3NF)就行了。下面用画图方式简单介绍下前三范式三范式1NF:字段不可分;2......
  • MySql 约束条件
    目录数据类型的属性约束条件的简单运用创建表清空表,并清空主键自增记录注意例1单列唯一联合唯一例2例3例4联合主键联合主键sql约束:约束用于限制加入表的数据的类型。是一种限制,它通过对表的行或列的数据做出限制,来确保表数据的完整性、唯一性可以在创建表时规定约束(通过CRE......
  • MySQL--为什么有了redo log还需要double write buffer机制?
      我们知道,数据页被加载到内存中,经过增删改一系列的操作后,并不会立即落盘,而是由后台线程选择某个合适的时机写入磁盘。在数据页尚未落盘时,如果这时MySQL突然崩溃或者断电,内存中的数据将全部丢失。这时,redolog就可以发挥其作用了,只要重放redolog就可以恢复事务。  但......
  • MySQL基础知识学习指南
    一、MySQL-DDL(DataDefinitionLanguage)在数据库管理领域,MySQL是广泛应用的关系型数据库管理系统。其中,数据定义语言(DataDefinitionLanguage,简称DDL)起着至关重要的作用,它主要用于对数据库内部对象进行创建、删除、修改等操作。本文将深入且系统地介绍MySQL中的DDL相关......
  • 升级到MySQL 8.4,MySQL启动报错:io_setup() failed with EAGAIN
    在升级到MySQL8.4后,许多用户在启动数据库时遇到了一种常见错误:“io_setup()failedwithEAGAIN”。本文将深入探讨该错误的原因,并提供详细的解决方案。错误分析错误描述当你启动MySQL时,可能会在日志文件中看到以下错误信息:io_setup()failedwithEAGAIN​  这个......
  • mysql日志
    一.隔离级别1)一共4级READUNCOMMITTED:最低隔离级别,允许读取未提交的数据(脏读)。READCOMMITTED:允许读取已提交的数据,但不能重复读。REPEATABLEREAD(默认级别):保证在同一个事务中多次读取同样记录的结果是一致的。SERIALIZABLE:最高隔离级别,事务串行化执行,避免了并发......
  • MySQL
    数据查询语句(DQL-DataQueryLanguage)执行顺序:from-->where-->groupby-->select-->having-->orderby-->limit单表查询没啥好说的,了解基本的关键字用法和函数的功能即可实现快速查询。表连接内连接innerjoin只返回满足连接条件的记录外连接outerjoin左连......
  • centos死机导致mysql无法启动解决
    3306端口没被占用2.查看日志sudocat/var/log/mysqld.log从错误日志来看,MySQL启动失败的主要原因是InnoDB存储引擎的初始化失败。具体错误信息如下:复制[ERROR]InnoDB:IgnoringtheredologduetomissingMLOG_CHECKPOINTbetweenthecheckpoint111575434andthe......