MySql主从复制

主从复制原理

mysql主从复制原理:首先主库发送更新事件到从库;然后从库读取更新记录,并执行更新记录;最后使得从库的内容与主库保持一致。

为什么要做主从复制

在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运行。
做数据的热备,主库宕机后能够及时替换主库,保证业务可用性。
架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。
在这里插入图片描述

实现主从复制的过程:

实验环境:

主数据库  centos7            mysql5.8    ip:172.16.251.38
从数据库  windows server12   mysql5.7    ip:172.16.251.28

准备工作:
1、在两台服务器上分别安装好mysql数据库

开始配置主从:

以下为主库配置:

[mysqld]
##binlog文件名
log_bin = mysql-bin
#MYSQL实例id, 不能重复
server_id = 10
#仅将以下数据库记录binlog, 不记录的则不会同步
binlog_do_db = bd-exam
#以下是推荐配置, 且是默认配置
#sync_binlog = 1
innodb_flush_log_at_trx_commit = 1
#innodb_support_xa = on
#binlog_format = row

1.1、重启mysql服务

systemctl restart mysqld.service;

1.2、主库 创建用作同步数据的用户 slave_ip为从机器的ip
grant replication slave on . to ‘proxycm3’@从数据库ip identified by ‘12345679’;

grant replication slave on *.* to 'proxycm3'@172.16.251.28  identified by '12345679';

1.3、刷新生效

flush privileges;

1.4、锁表,防止表继续写入

flush tables with read lock;  

1.5、查看binlog的位置和数值,需要记住,待会要用到

show master status;

在这里插入图片描述
1.6、从库配置开启完成,解除锁表

unlock  tables;   

以下为从库配置

log_bin = mysql-bin
server_id = 20
# 允许备库将重放事件记录到自身的binlog中
log_slave_updates = 1
# 只读, 也可以不设置
#read_only = 1
# 需要同步的数据库, 逗号分隔(不添加代表同步所有)
replicate-do-db = bd-exam
## 不需要同步的表, 多个需要分别设置
## replicate-ignore-table = dbname.table_name1
## replicate-ignore-table = dbname.table_name2

2.1、重启MySql服务

systemctl restart mysqld.service;

2.2、停止复制

stop slave;

2.3、master_host为主机器ip,msaster_pasword为主机器密码,master_log_file为binlog日志名称,master_log_pos为binlog日志数值

change master to master_host='172.16.251.38',master_user='proxycm3',master_password='12345679',master_log_file='mysql-bin.000005',master_log_pos=657;

2.4、开始复制

start slave;

2.5、判定主从是否配置成功

show  slave status\G

在这里插入图片描述
查看Slave_IO_Running和Slave_SQL_Running是否为yes

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

关注是否有error信息

Seconds_Behind_Master: 0  #为主从延迟的时间
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:

开始在主库创建数据库表,在从库检查是否同步正确完成
登录数据库

mysql -uroot -p****

创建库 create database 库名;

create database mydb11;

进入库 use 库名

use mydb11

创建表

create table user(id int,name varchar(18),sex varchar(5),age int);

插入数据(增数据)

insert into user values(125425,"xm","man",25);

进入从库
登录数据库

mysql -uroot -p****

查现有的数据库

show databases;

如果从库有mydb11库则说明主从同步成功,可进入mydb11库查表

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星空 | 永恒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值