mysql实现主从复制的日志是哪种_【mysql】mysql主从复制的实现及其原理(超详细)...

传统的mysql主从复制的实现方法及原理

1、mysql主从复制原理

0fb46efa68244e3dec7bd0db5e6ec911.png

1)master更新数据时,会先将信息写入master服务器的二进制日志,然后根据二进制日志写入真实数据到数据库&表中。

2)然后通过dump thread线程通知slave服务器同步数据。

3)slave收到消息后,触发已经启动的IO线程及sql线程,IO线程通过连接master线程,读取master-info文件获取位置点(pos),master服务器通过dump thread线程将位置点后的内容传给slave的IO线程。IO线程收到数据后,将数据写入到本地的relay-log中。

4)之后sql线程开始工作,先读取relay-log.info,获知上次在relay-log文件中执行的位置,然后在该位置继续向后执行。通过这种方式及可保持主从服务器上的数据完全一致。

2、本实例主从复制实现环境

1)配置环境

master(192.168.1.124):Linux-centos7、mysql5.7

slave(192.168.1.125):Linux-centos7、mysql5.7

2)两台服务器环境一致,非克隆关系

3)桥接网络

4)关闭防火墙及核心防护:

service firewalld stop

systemctl disable firewalld

setenforce 0

sed -i 's/=enforcing/=disabled/g' /etc/selinux/config

3、实现步骤:

1、配置主从服务器my.cof

master服务器:

vi /etc/my.cof

[mysqld]

character_set_server = utf8

log-bin

server-id = 1

slave服务器:

vi /etc/my.cof

[mysqld]

server-id = 2

改完后刷新服务:

service mysqld restart

2、注册从库授权用户

在master上执行:

grant replication slave on *.* to 'pengyuyao'@'%' identified by 'Sanchuang123#';

更新日志

flush logs;

3、全备master数据库

注意:此处的密码为你自定义的数据库密码

1)将master数据库全部导出到all_db.sql

mysqldump -uroot -p'Sanchuang123#' --all-databases > /root/all_db.sql

2)将sql文件传给slave:

scp /root/all_db.sql root@192.168.1.125:/root

3)salve将sql文件导入slave数据库:

mysql -uroot -p'Sanchuang123#'

4、slave配置从库、等级主库及授权用户

1)master上查看正在使用的二进制日志:

show master status;

+----------------------+----------+--------------+------------------+-------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+----------------------+----------+--------------+------------------+-------------------+

| localhost-bin.000002 | 154 | | | |

+----------------------+----------+--------------+------------------+-------------------+

由此获知二进制日志文件名称及pos位置

2)slave配置主库信息:

在这里插入代码片

CHANGE MASTER TO MASTER_HOST='192.168.1.124',

MASTER_USER='pengyuyao',

MASTER_PASSWORD='Sanchuang123#',

MASTER_PORT=3306,

MASTER_LOG_FILE='localhost-bin.000002',

MASTER_LOG_POS=154;

以上设置的信息为:

master的IP地址

授权用户

用户密码

master数据库的监听端口

二进制文件名

pos

5、slave开启IO线程及sql线程

start slave;

查看slave有没有打开:

show slave status \G;

检查IO线程和sql线程是否开启:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

检查slave有没有master.info文件(rpm\yum安装默认/var/lib/mysql):

cat /var/lib/mysql/master.info

到这里没有问题可以确定主从复制已经成功实现了!

7、验证

1)master创建测试文件:

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| performance_schema |

| sys |

+--------------------+

4 rows in set (0.00 sec)

mysql> create database pyy;

2)slave查看是否有该文件:

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| performance_schema |

| pyy |

| sys |

+--------------------+

5 rows in set (0.00 sec)

成功!

标签:主从复制,slave,MASTER,mysql,线程,sql,master,原理

来源: https://blog.csdn.net/qq_48598380/article/details/113061387

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值