努力挣扎的生活 努力挣扎的生活
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 运维基础
  • 监控
  • 日志系统
  • gitlab安装
  • jenkins安装和管理
  • Jenkins工具集成
  • pipeline流水线
  • Docker
  • Kubernetes
  • Nexus
  • Rancher
  • Prometheus
  • ELK(EFK)
  • 虚拟化
  • Mysql
  • PostgreSQL
  • Redis
  • MongoDB
  • clickhouse
关于
  • 分类
  • 标签
  • 归档
  • 收藏
  • 更多
GitHub (opens new window)

yangfk

瑟瑟发抖的小运维
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 运维基础
  • 监控
  • 日志系统
  • gitlab安装
  • jenkins安装和管理
  • Jenkins工具集成
  • pipeline流水线
  • Docker
  • Kubernetes
  • Nexus
  • Rancher
  • Prometheus
  • ELK(EFK)
  • 虚拟化
  • Mysql
  • PostgreSQL
  • Redis
  • MongoDB
  • clickhouse
关于
  • 分类
  • 标签
  • 归档
  • 收藏
  • 更多
GitHub (opens new window)
  • Mysql

    • mysql安装
    • Mysql数据库备份
    • mysql主从复制
      • Mysql 主从复制说明
      • 主从复制实践
    • mysql高可用MHA
    • binlog2sql安装及mysql数据恢复
    • mysql二进制安装5.7.38
  • PostgreSQL

  • Redis

  • MongoDB

  • ClickHouse

  • SqlServer

  • openGuassDB

//
  • DBA
  • Mysql
yangfk
2020-05-11

mysql主从复制

//

# Mysql 主从复制说明

主从复制前提准备:

主库需要开启二进制日志,一旦启用二进制日志后,它的数据库中所有操作都会以“事件”的方式记录在二进制日志中,而这个二进制保留着用户对数据库的所有“增删改”操作,

创建一个用来slave 和master 复制用户账号

需要告知slave,master 二进制日志文件名,和position位置点

slave 启用slave 服务

使用master 分配的复制用户读取master

修改server-id,这个id 如果只做主从可以不修改,但如果要做 MHA高可用 就必须修改

主从复制过程:

主从就是从库通过一个IO线程与主服务器保持通信,并监控master的二进制日志文件的变化,一旦主库有修改,则会把变化复制到自己的中继日志中,从库的SQL线程会把相关的事件执行到自己的数据库中,来实现与主库的数据一致性。

主从延迟,当主库执行操作也会立即把二进制日志复制到从库,只是执行sql 会根据设定时间延迟执行sql 语句

主从复制实现原理图图片来自网图😅

mysql_slave1.png

# 主从复制实践

通过上一篇咋们知道怎么去做数据库的备份,而主从就是通过一次全备,再通过设置position点,进行实时同步

主从复制有两种可行方法,

第一种 是通过逻辑全备,然后通过查看日志,做主从。

第二种 是通过xtrabackup 全备 ,记录slave position 位置信息,做主从,相对第一种更加方便快速

  • 1,检查配置文件,my.cnf,是否都有配置
log-bin                 = mysql-bin
binlog_format           = mixed #日志混合模式
server-id               = 112
log-bin                 = /opt/mysql/logs/mysql-bin.log
1
2
3
4
  • 2,主库创建复制用户
mysql> grant replication slave on *.* to rep@'192.168.%' identified by 'yfk123';
1

mysql-8.0

需要修改密码加密方式

select host,user,ssl_type,ssl_cipher,x509_issuer,x509_subject,plugin from mysql.user;

ALTER USER 'rep'@'%' IDENTIFIED BY 'yfk123' PASSWORD EXPIRE NEVER;
ALTER USER 'rep'@'%' IDENTIFIED WITH mysql_native_password BY 'yfk123';
1
2
3
4
  • 3,数据库全备

方式一:逻辑全备

mysqldump -uroot -p -R --single-transaction --master-data=2 --flush-privileges --flush-logs --all-databases > full_all_db.sql

方式二:物理冷备

innobackupex --user root --password yfk123 --host 192.168.14.144 --slave-info /opt/backup/full-mysql --no-timestamp

  • 3,从库操作-修改my.cnf配置,导入数据到从库
log-bin                 = mysql-bin
binlog_format           = mixed #日志混合模式
server-id               = 113
log-bin                 = /opt/mysql/logs/mysql-bin.log
1
2
3
4
  • 4,查看position 位置点

逻辑备份查看

head -30 full_all_db.sql |grep -n MASTER_LOG_FILE=

物理备份查看

xtrab_position.png

  • 5,登录从库,配置主库连接信息
mysql >
CHANGE MASTER TO
MASTER_LOG_FILE='mysql-bin.000008',
MASTER_LOG_POS=120,
MASTER_HOST='192.168.14.144',
MASTER_USER='rep',
MASTER_PASSWORD='yfk123';
1
2
3
4
5
6
7

记录:主从延迟600s,按需求添加是否需要该参数 change master to master_delay=600;

  • 6,启动从库,检查主从状态

start slave;

show slave status\G

如果地址配置错了,可以执行:stop slave; 修改完,启动slave ,检查即可

检查是否启动正常

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Seconds_Behind_Master: 0 #同步延迟,一般如果数据量大,会出现一段时间,这个数字不为0,会慢慢的跟主库一致之后,才为0,当从库有压力,或者从库表锁了,也会不为0

  • 7,设置从库为只读,从库不能写入数据,一旦写入,主从就会立即失败

注意:set global read_only=1 对拥有super权限的账号是不生效的,所以在授权账号的时候尽量避免添加super权限

mysql> show global variables like "%read_only%";

mysql> set global read_only=1;

1
2
3
4

记录

全局表锁:flush tables with read lock;

解锁:unlock tables ;

//
如果此文章对您有帮助,点击 -->> 请博主喝咖啡 (opens new window)
上次更新: 2024/01/26, 17:04:30
Mysql数据库备份
mysql高可用MHA

← Mysql数据库备份 mysql高可用MHA→

最近更新
01
Linux Polkit 权限提升漏洞(CVE-2021-4034)
03-28
02
postgreSQL维护
03-17
03
trivy系统漏洞扫描
02-25
更多文章>
Theme by Vdoing | Copyright © 2019-2025 yangfk | 湘ICP备2021014415号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×
//