Mysql主从备份

主从复制概述

将主服务器的binlog日志复制到从服务器上执行一遍,达到主从数据的一致状态,称之为主从复制。一句话表示就是,主数据库做什么,从数据库就跟着做什么。

为什么要使用主从复制

为实现服务器负载均衡/读写分离做铺垫,提升访问速度
常规的读/写比例为10:1左右
主库主负责写和部分读,从库主负责读

通过复制实现数据的异地备份,保障数据安全
从库定期从主库上复制数据
提高数据库系统的可用性

主库宕机后,从库临时取代主库,只提供读操作
主库宕机后,从库永久取代主课,提供读写操作

主从复制原理

1.主从复制的前提
至少两个实例
不同的server_id
库开启二进制日志
主库需要授权一个专用复制用户
主库数据备份
开启专用复制线程

2.主从复制相关专业术语
文件
主库:binlog

从库:
relay-log,中继日志,存储主库传过来的binlog事件
master.info,主库信息,存储授权用户信息,及上次请求到的主库binlog的位置点
relay-log.info,中继日志应用信息

线程
主库:Dump_Thread,给库传送(TP)二进制日志线程

从库:
IO_Tread,从库IO线程,请求和接收binlog
SQL_Tread,从库的SQL线程

主从复制部署

环境:
db01    10.0.0.51 		mysql5.7 	主
db02	10.0.0.54		mysql5.7	从

配置步骤:
[master]
1.编写配置文件,添加主从必须的配置
vim /etc/my.cnf
[mysqld]
user=mysql
basedir=/app/mysql
datadir=/data/mysql/data
log_error=/data/mysql/data/mysql.log
log_bin=/data/mysql/binlog/mysql-bin
server_id=6
port=3306
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock

2.重启mysqld,让配置生效
systemctl restart mysqld

3.使用mysqldump全备主库数据
mysqldump -AR --triggers --single-transaction --master-data=2 > /tmp/master.sql

4.创建授权主从复制的用户
grant replication slave on *.* to 'repl'@'10.0.0.54' identified by '123';

5.将全备文件拷贝到从库上
scp /tmp/master.sql 10.0.0.54:/tmp/

[slave]
1.编写配置文件,添加主从必须的配置
vim /etc/my.cnf
[mysqld]
user=mysql
basedir=/app/mysql
datadir=/data/mysql/data
log_error=/data/mysql/data/mysql.log
log_bin=/data/mysql/binlog/mysql-bin
server_id=7
port=3306
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock

2.重启mysqld,让配置生效
systemctl restart mysqld

3.导入主的全备
#1.登录
mysql 

#2.临时关闭binlog
set sql_log_bin=0;

#3.导入全备
source /tmp/master.sql;

4.查看position及对应的binlog文件
awk "NR==22" /tmp/master.sql

5.配置主库信息
CHANGE MASTER TO
  MASTER_HOST='10.0.0.51',
  MASTER_USER='repl',
  MASTER_PASSWORD='123',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='mysql-bin.000003',
  MASTER_LOG_POS=4602;

6.启动从库
start slave;

7.查看从库状态
show slave status\G

怎么修改UUID
1.生成随机的UUID
mysql> select UUID();

2.修改
vim /data/mysql/data/auto.cnf 
[auto]
server-uuid=97320a42-b07c-11ee-a6a9-000c29a73a2c

延时从库

普通的主从复制可能存在不足
1)逻辑损坏怎么办?
2)不能保证主库的操作,从库一定能做
3)高可用?自动failover?
4)过滤复制
一般会延时3-6小时 延时从库配置方法

延时从库的配置
#停止主从
mysql>stop slave;
#设置延时为180秒
mysql>CHANGE MASTER TO MASTER_DELAY = 180;
#开启主从
mysql>start slave;
#查看状态
mysql> show slave status \G
SQL_Delay: 60
3.延时从库停止方法
#停止主从
mysql> stop slave;
#设置延时为0
mysql> CHANGE MASTER TO MASTER_DELAY = 0;
#开启主从
mysql> start slave;

  • 13
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值