mysql的主从复制

mysql的主从复制

​ 主从复制开始前有个前提条件:两边的数据要一样,主必须开启二进制日志

异步主从复制

异步主从复制

主从复制过程:master数据发生变化,产生新的二进制文件,master通知slave的I/O thread进程来读取master的二进制文件,slave的I/O thread 读取本地的master_info,携带master所需的验证信息和二进制日志读取的定位,master的log dump thread进程将master新增加的二进制日志内容发送给i/o thread ,slave收到日志后,将新的二进制日志写入relay_log,并更新master_info中的二进制的位置信息;slave的SQL thread进程读取更新的relay_log中的新内容并在数据库执行sql语句,从实现了master到slave的主从复制

mysql主从复制功能开启步骤

  • 第一步:确保主从初始数据一致,使用全备
  mysqldump -uroot -p'Sanchuang123#'  --all-databases > /backup/all_db.sql

  scp all_db.sql root@192.168.0.177:/root

  mysql -uroot -p'Sanchuang1234#' <all_db.sql 
  • 第二步:开启master与slave的二进制日志功能

    修改mysql的配置文件,启动二进制日志功能,

  server_id=1

   #binary log

   log_bin

   server_id = 1
  • 第三步:在master服务器上创建一个用于主从复制的用户
grant **replication slave** on \*.\* to 'oudi'@'192.168.0.177' identified by 'Sanchuang123#';**REPLICATION SLAVE** 常用于建立复制时所需要用到的用户权限,也就是slave server必须被			master server授权具有该权限的用户,才能通过该用户复制。

  ​		**REPLICATION CLIENT** 不可用于建立复制,有该权限时,只是多了可以使用如"SHOW 	SLAVE 			STATUS""SHOW MASTER STATUS"等命令。
  • 第四步:在master和slave上关闭防火墙和selinux

  • 第五步:配置slave,开启slave服务

  ​	在slave数据库中输入以下配置信息:

  ​	CHANGE MASTER TO MASTER_HOST='主服务器host',

  ​	MASTER_USER='用于主从复制的用户名',

  ​	MASTER_PASSWORD='用户密码',

  ​	MASTER_PORT=3306,

  ​	MASTER_LOG_FILE='master当前的二进制文档名称.00000XX',

  ​	MASTER_LOG_POS=master当前二进制日志的pos;
  • 第六步:在slave上启动复制功能
  start slave;

Master上查看所有从服务器

- SHOW SLAVE HOSTS;

如何清楚从服务器上的主服务器信息

stop  slave;
reset slave all;  清除所有的master信息
Show slave status\G;
重新输入master的信息

 CHANGE MASTER TO MASTER_HOST='192.168.0.218' ,
 MASTER_USER='minhua',
 MASTER_PASSWORD='Sanchuang123#',
 MASTER_PORT=33060,
 MASTER_LOG_FILE='Sanchuang-bin.000010',
 MASTER_LOG_POS=154;

2.然后到从服务器上看,是否存在

半同步主从复制

​ 主服务器有数据更新的操作时,先更新二进制日志,然后将更新的二进制日志发送到从服务器的relay-log(从服务器的SQL_thread读取relay-log将操作更新到从服务器),从服务器收到日志信息后返回确认请求,收到从服务器确认后主服务才落盘(将更新的数据信息写入磁盘)。

查看半同步相关的参数show variables like ‘%rpl_semi%’;

半同步主从复制

半同步主从复制开启步骤

第一步:在主服务器上安装插件

root@localhost [(none)]> **install plugin rpl_semi_sync_master soname 'semisync_master.so';** 

第二步:在主服务器上启动半同步

root@(none) 15:45  mysql>**set global rpl_semi_sync_master_enabled=1;**

第三步:在从服务器上安装插件

**install plugin rpl_semi_sync_slave soname 'semisync_slave.so';**

第四步:从服务器上启动半同步

root@(none) 15:59  mysql>**set global  rpl_semi_sync_slave_enabled=1;**

主库在10秒内没有收到从服务器的应答后自动改为异步复制,然后再引擎层提交事物

show status like ‘Rpl_semi_sync_master-status’; 知道当前主从复制的状态时半同步还是异步同步

延迟备份

登录到slave数据库服务器

stop slave
CHANGE MASTER TO MASTER_DELAY = N(秒)
start slave
show slave status \G;

GTID主从复制

参考链接
参考链接

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值