MySQL主从复制
2024-01-02 19:44:03
MySQL主从复制的工作原理
主开启二进制日志
从开启中继日志(binlog)
1.数据更新写入二进制日志
2.开启io线程向主请求二进制日志事件
3.主为每个io线程开启dump线程向从发送二进制日志事件
4.从保存二进制日志事件到中继日志
5.从开启SQL线程读取中继日志中的二进制事件并解析成sql语句进行重放/逐一执行。
MySQL的复制类型
1)STATEMENT:基于语句的复制(mysql默认采用基于语句的复制,执行效率高)
2)ROW:基于行的复制。
3)MIXED:混合类型的复制(默认采用基于语句复制,一旦发现无法精确复制时,就会采用基于行复制。
搭建 MySQL主从复制
实验准备
1台主数据库,两台从数据库
主:192.168.116.60
从1:192.168.116.70
从2:192.168.116.80
1、Mysql主从服务器时间同步
systemctl status ntpd #检查ntpd服务是否开启
systemctl enable --now ntpd #设置永久并立即开启ntpd服务
vim /etc/ntp.conf
将第8行注释,并复制到下一行
restrict default nomodify #客户端不可以修改时间参数,但可以同步时间服务器
server ntp.aliyun.com iburst #阿里云的服务器
systemctl restart ntpd #重启ntpd服务
netstat -lntup | grep ntpd #查看ntpd端口
date #查看当前时间
ntpq -p #查看当前ntp服务器状态
切到从服务器里
ntpdate 192.168.116.60 #跟主服务器做同步
crontab -e #创建计划任务
*/30 * * * * /usr/sbin/ntpdate 192.168.116.60 &> /dev/null
crontab -l #检查计划任务
?
?2、做主从复制
----主服务器的mysql配置-----
vim /etc/my.cnf
server-id=1
log-bin=mysql_bin #添加,主服务器开启二进制日志
binlog_format=mixed #设置复制类型
配置完后重启
systemctl restart mysqld
给服务器做授权
grant replication slave on *.* to 'myslave'@'192.168.116.%' identified by '123456';
flush privileges;
show master status\G #查看当前状态
?----从服务器的mysql配置----
vim /etc/my.cnf
server-id = 2
relay-log=relay-log-bin
relay-log-index=relay-log-bin.index
------------------------------------------------
server-id = 2 #修改,注意id与主的不同,两个从的id也要不同
relay-log=relay-log-bin #开启中继日志,从主服务器上同步日志文件记录到本地
relay-log-index=relay-log-bin.index #定义中继日志文件的位置和名称,一般和relay-log在同一目录
systemctl restart mysqld #重启mysqld服务
mysql
change master to master_host='192.168.116.60',master_port=3306,master_user='myslave',master_password='123456',master_log_file='mysql_bin.000001',master_log_pos=1053;
?
文章来源:https://blog.csdn.net/HanYuHao11/article/details/135343012
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!