当前位置: 首页 > news >正文

MySQL运维学习(2):主从复制

1.什么是主从复制

*主从复制是指将主数据库的DDL和 DML操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。

MySQL支持一台主库同时向多台从库进行复制,从库也可以作为其他从服务器的主库,实现链状复制。

MySQL复制的有点主要包含以下三个方面

(1)主库出现问题,可以快速切换到从库提供服务。

(2)实现读写分离,降低主库的访问压力。

(3)可以在从库中执行备份,以避免备份期间影响主库服务

2.主从复制原理

从库使用IOthread进程读取主库binlog,并存储为本地的relay log,然后从库再通过SQLthread进程读取本地relay log,以达到与主库同步

3.主从复制配置过程

3.1环境准备

(1)准备2台安装了相同版本mysql的服务器。我这里是2台centos7.6,安装了mysql8.3.0

(2)关闭两台服务器的防火墙,或者是开放2台服务器的3306端口

3.2主库配置

3.2.1修改主库配置文件/etc/my.cnf

在文件添加下面的内容:

server-id=1
#mysql服务ID,保证整个集群环境中唯一。read-only=0
#是否只读。1 代表只读,0代表读写#binlog-ignore-db=xxx
#指定不需要同步的数据库,可以不配置#binlog-do-db=xxx
#指定同步的数据库编辑,可以不配置
#不配置的情况下,就是复制所有数据库

修改后重启mysqld

3.2.2登录mysql,创建远程连接的账号,并赋予其主从复制权限

create user '用户名'@'%' identified with mysql_native_password by '密码';
#创建一个用于远程连接的用户grant replication slave on *.* to '用户名'@'%';
#赋予该用户主从复制权限

这个账户是让从库来主库用的

3.2.3查看二进制日志坐标

show master status;

file:推送日志文件的起始文件

position:从日志文件的哪个位置开始推送

这个信息会在之后从库的配置中用到

3.3从库配置

3.3.1修改从库配置文件/etc/my.cnf

 在文件添加下面的内容:

server-id=2
#标号数字与主库不一样即可read-only=1

配置完同样需要重启mysqld。

read-only=1不能限制超级用户的写操作,如果想限制超级用户,可以在文件中加上下面的语句:

super-read-only=1

3.3.2登录从库mysql,建立主从库连接

change replication source to source_host='主库ip',
source_user='连接主库的远程用户名',
source_password='用户密码',
source_log_file='binlog文件名',
source_log_pos=binlog文件位置;

命令中的binlog文件名、binlog文件位置就是在主库中用show master status;查出来的信息

除了最后的binlog文件位置不需要单引号,其他的信息都需要加上单引号

上面的命令是在mysql8.0.23及之后的版本中使用的。如果是8.0.23之前的版本,可以使用下面的语句:

change master to master_host='主库ip',
master_user='连接主库的远程用户名',
master_password='用户密码',
master_log_file='binlog文件名',
master_log_pos=binlog文件位置;

3.3.3开启同步

start replica;
#mysql8.0.23及之后的版本使用这条命令start slave;
#mysql8.0.23之前的版本使用这条命令

3.3.4查看主从同步状态

show replica status\G;
#mysql8.0.23及之后的版本使用这条命令show slave status\G;
#mysql8.0.23之前的版本使用这条命令

看到结果中的两个进程都为yes,说明配置成功

开启同步后,主库进行的DDL、DML都会同步到从库上,从库的操作则不会同步到主库上。

开启同步之前的从库与主库的配置不会同步


http://www.mrgr.cn/news/11726.html

相关文章:

  • 在 Monaco Editor 中自定义右键菜单并支持多级菜单
  • 对于 OpenAI 最新发布 支持实时语音对话的模型GPT-4o,我想说
  • 新手科研人必看! 2024年8月学术论文疑惑解答,迅速提升你的SCI投稿质量。
  • iOS WebView
  • Linux--find命令-搜索
  • kafka
  • Aria2安装和使用-Mac版
  • Nuxt 入门实战 - 05:特性
  • 【Python机器学习】NLP词中的数学——词袋
  • 系统编程-信号量集
  • NLP从零开始------14.文本中阶序列处理之语言模型(2)
  • SSRF漏洞(服务器端请求伪造)相关案例
  • 初识数据库
  • Dotnet Core-关于8.0版本中jwt的官方bug
  • BC156 牛牛的数组匹配(c语言)
  • 【C/C++】typedef用法
  • SpringCloudGateway重写负载均衡策略
  • CSS 中处理文本溢出并隐藏它
  • 论文笔记:Large Language Models are Zero-Shot Next LocationPredictors
  • 【笔记】数据结构——8月27日