7 - MySQL主从同步|主从同步模式

发布时间:2024年01月12日

MySQL主从同步

主从同步介绍

存储数据的服务结构
主服务器: 接收客户端访问连接
从服务器:自动同步主服务器数据

主从同步工作过程

在这里插入图片描述
在这里插入图片描述
启动binlog日志

  • Slave
    • Slave_IO :复制master主机 binlog日志文件里的SQL命令到本机的relay-log文件里
    • Slave_SQL:执行本机relay-log文件里的SQL语句,实现与Master数据一致

主从同步结构模式

一主一从同步结构 :存储数据的服务结构,能够实现数据的自动同步(也就是数据备份)
一主多从同步结构
主从从同步结构 (给一主一从服务器的从服务器也配置一台从服务器)
主主同步结构 (两台服务器 彼此是对方的主服务器 同时还是对方的从服务器)

配置主从同步

一主一从同步结构

  • 配置主服务器
  1. 启动binlog日志
vim /etc/my.cnf
[mysqld]
server_id=51
log_bin=master51  # 日志默认存储在数据库目录下
--------
systemctl restart mysqld
  1. 授权用户
mysql -uroot -p密码
# replication slave 让用户有复制命令的权限
mysql> grant replication slave on *.* to repluser@"%" identified by "密码"
  1. 查看binlog日志信息
# 
mysql> show master status;

在这里插入图片描述

  • 配置从服务器
  1. 设置server_id 服务器编号 并重启服务
vim /etc/my.cnf
[mysqld]
server_id=52

systemctl restart mysqld
  1. 确保与主服务器数据一致
  2. 指定主库信息
mysql -uroot -p密码
mysql > change master to master_host="192.168.4.51",master_user="repluser",master_password="密码",master_log_file="master51.000001",master_log_pos=441 # 和主一样
  1. 启动slave程序
mysql> start slave;
  1. 查看状态信息(io线程和SQL线程必须同时是yes状态)
mysql> show slave status

在这里插入图片描述

一主多从同步结构

一台主 两台从
在从服务器做如下服务:

  1. 设置server_id 服务器编号 并重启服务
vim /etc/my.cnf
[mysqld]
server_id=53

systemctl restart mysqld
  1. 确保与主服务器数据一致
    第一步 在主服务器 对db1库做完全备份 然后吧备份文件拷贝给53
# --master-data 做完全备份数据时,在备份文件里记录使用的日志名和偏移量
mysqldump -uroot -pxxx --master-data -B db1 > /root/db1.sql
scp /root/db1.sql 192.168.4.53:/opt/

第二步 主机53使用备份文件恢复数据

]# mysql -uroot -pxxx < /opt/db1.sql
]# mysql -uroot -pxxx -e 'show databases'
]# mysql -uroot -pxxx -e 'select count(*) from db1.t1'
  1. 指定主库信息
# 在备份文件里查看日志名和偏移量
grep master51 /opt/db1.sql
#显示如下信息
CHANGE MASTER TO MASTER_LOG_FILE='master51.000001',MASTER_LOG_POS=2000;
mysql -uroot -p密码
mysql > change master to master_host="192.168.4.51",master_user="repluser",master_password="密码",master_log_file="master51.000001",master_log_pos=20000 # 和主一样
  1. 启动slave程序
mysql> start slave;
  1. 查看状态信息(io线程和SQL线程必须同时是yes状态)
mysql> show slave status

测试主从

# 在主服务器上插入新数据
mysql> insert into db1.t1 values(999)
# 2台从服务器可以看到一样的数据
] # mysql -uroot -pxxx -e 'select * from db1.t1'

主从从同步结构

在这里插入图片描述

把数据库服务器 53 54 55 配置为主从从结构
就是给一主一从中的从服务器也配置从服务器
环境准备:把53主机恢复为独立的数据库服务器 54 55 配置主从从同步

[root@hotst53 ~]# cd /var/lib/mysql
[root@hotst53 ~]# rm -rf master.info
[root@hotst53 ~]# rm -rf relay-log.info
[root@hotst53 ~]# ls host53-relay-bin.*
[root@hotst53 ~]# rm -rf *-relay-bin.*
[root@hotst53 ~]# systemctl restart mysqld
mysql > show slave status \G
Empty set
mysql > drop database db1;

具体配置如下
第一步 配置主数据库服务器 53

1.启用binlog日志
vim /etc/my.cnf
[mysqld]
server_id=53
log_bin=master53

systemctl restart mysqld
2.用户授权
mysql> grant replication slave on *.* to repluser@"%" identified by "123qqq...A";
3.查看日志信息
mysql> show master status;

第二步 配置主机54 因为同时是2中角色,所以2种角色都要有

vim /etc/my.cnf
[mysqld]
server_id=54
log_bin=master54
log_slave_updates # 允许级联复制 54主机把自己主服务器的数据拷贝给自己的从服务器
:wq
systemctl restart mysqld
2.用户授权
mysql> grant replication slave on *.* to repluser@'%' identified by "123qqq..a";
3.指定主机服务器地址 日志名 偏移量
mysql> change master to master_host="192.168.4.53",master_user="repluser",master_password="123..." master_log_file="master53.000001",master_log_pos=441;
mysql> start slave;
mysql> show slave status \G

第三步 配置主机 55 (做54的从服务器)

1指定server_id 并重启mysql服务
vim /etc/my.cnf
[mysqld]
server_id=55
:wq
systemctl restart mysqld
2指定主服务器信息
mysql> change master to master_host="192.168.4.54",master_user="repluser",master_password="xxx",master_log_file="master54.000001",master_log_pos=441
3启动slave进程
4查看状态

验证结果 : 在53创建的数据 54 55都能看到

主主同步结构

两台数据库服务器分别做彼此的从服务器和主服务器 2台服务器2种角色的配置都要有
第一步 配置68 配置69

vim /etc/my.cnf
[mysqld]
server_id=68
log_bin=master68
:wq
systemctl restart mysald
mysql> show master status
69主机mysql> grant replication slave on *.* to repluser@"%" identified by "111";
69主机mysql> change master to master_host="192.168.4.68",master_user="repluser",master_password="xxx",master_log_file="master68.000001",master_log_pos=441;
mysql>

主从同步模式

主从同步结构模式复制模式

文章来源:https://blog.csdn.net/shengweiit/article/details/135495687
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。