MySql主从复制

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 21:00   2404   0

主从复制原理

MySQL的主从复制是MySQL本身自带的一个功能,不需要额外的第三方软件就可以实现,其复制功能并不是copy文件来实现的,而是借助binlog日志文件里面的SQL命令实现的主从复制,可以理解为我再Master端执行了一条SQL命令,那么在Salve端同样会执行一遍,从而达到主从复制的效果。

从库生成两个线程,一个I/O线程,一个SQL线程;i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中;

主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog;SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致;

主数据库配置

1:编辑mysql配置文件:vim /etc/my.cnf

###数据库id,=号后面自己写个id号
server_id=104
###开启mysql的binlog
log-bin=mysql-bin

2:重启mysql服务:service mysqld restart 或者 /etc/init.d/mysql restart

3:验证my.cnf的server_id是否配置成功

  • SHOW VARIABLES LIKE '%server_id%';

  • SHOW MASTER STATUS;

从数据库配置

1:编辑mysql配置文件:vim /etc/my.cnf

###数据库id,=号后面自己写个id号
server_id=130
###开启mysql的binlog
log-bin=mysql-bin
###指定需要同步主服务器的哪个数据库?
binlog_do_db=zjns

2:重启mysql服务:service mysqld restart 或者 /etc/init.d/mysql restart

3:验证my.cnf的server_id是否配置成功

  • SHOW VARIABLES LIKE '%server_id%';

  • SHOW MASTER STATUS;

开始同步(在从数据库中执行)

1:在从数据库中执行语句,从数据库同步主数据库配置

change master to master_host='主数据库服务器IP地址', master_port=主数据库端口, master_user='主数据库服务器登录账号', master_password='主数据库服务器登录密码',
master_log_file='主数据库服务器二进制执行文件名称', master_log_pos=主数据库服务器二进制执行文件从第几行开始同步;


change master to master_host='***.***.***.***', master_port=3306, master_user='***', master_password='***',
master_log_file='***', master_log_pos=***;

2:开启同步

  • start slave; -- 开启同步
  • stop slave; -- 停止同步

3:查看同步状态

  • show slave status;

* 如果未同步成功,使用 show slave status 命令查看错误信息

* 问题修改完成后,重新查询

验证mysql主从复制

向主数据库中执行一条写操作的语句,查看从数据库中是否存在或者更改

附主从配置,非必须

sync_binlog=1
gtid_mode=on
enforce_gtid_consistency=1
log_slave_updates
binlog_format=row
relay_log=/usr/local/mysql/data/relay.log
relay_log_recovery=1
binlog_gtid_simple_recovery=1
auto_increment_increment=2
auto_increment_offset=1

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP