MySQL主从配置

发布于 2023-07-11  444 次阅读


MySQL主从配置

这里只是做了一个记录,因为因为一些原因停掉从库导致log走远了,主在我自己看的懂

数据库备份

先锁表和把数据库设置为仅读避免备份和恢复的节点不通

-- 加锁
FLUSH TABLES WITH READ LOCK;
SET GLOBAL read_only = ON;
-- 恢复数据后获取binlog日志点
show master status;
-- 创建完从库后解除锁
SET GLOBAL read_only = OFF;
UNLOCK TABLES;
-- 备份数据
mysqldump -u root -p --databases db1 db2 --single-transaction --routines --triggers --events --hex-blob > /back/backup.sql
-- 配合上面的锁在锁内进行
mysql -u root -p < /path/to/backup.sql

创建主从配置

CHANGE MASTER TO MASTER_HOST='192.168.0.250', MASTER_USER='slave', MASTER_PASSWORD='slavepassword', MASTER_LOG_FILE='binlog.000009',MASTER_LOG_POS=157;

主要参数说明

  • MASTER_HOST :master节点得host,一般为ip
  • MASTER_USER:master节点得用户
  • MASTER_PASSWORD:master节点密码
  • MASTER_LOG_FILEMASTER_LOG_FILE是 MySQL 主从复制中的一个参数,用于指示主数据库当前正在写入的二进制日志文件名。在 MySQL 主从复制过程中,主数据库会将写入的更新操作记录在二进制日志(Binary Log)中,并通过主从复制机制将这些操作传递给从数据库进行复制。每个二进制日志文件都有一个唯一的文件名,通常以数字序列或日期时间作为文件名的一部分,例如 mysql-bin.000001mysql-bin.000002 等。 当建立主从复制关系时,从数据库会连接到主数据库并请求从哪个二进制日志文件开始复制。主数据库会返回一个包含 MASTER_LOG_FILEMASTER_LOG_POS 值的参数信息,其中MASTER_LOG_FILE 就是表示当前活动的二进制日志文件的文件名。从数据库接收到 MASTER_LOG_FILE 后,会从该文件开始读取二进制日志的内容,并应用到自己的数据库中,以实现与主数据库的数据同步。
  • MASTER_LOG_POSMASTER_LOG_POS 是 MySQL 主从复制中的一个参数,它表示主数据库二进制日志的位置(position)。主数据库会将写入的更新操作记录在二进制日志中,并通过主从复制机制将这些操作传递给从数据库,使得从数据库能够与主数据库保持一致。

MASTER_PASSWORD:建议新建一个专门用来同步得用户指定相应得ip比较好

MASTER_LOG_FILEMASTER_LOG_POS参数来源

show master status;

image-20230711141203855

创建完成后使用命令查看部署情况

show slave status;

image-20230711152303383

主要查看这两个参数,都为yes表示创建成功

主从出现问题

出现问题后一般就在查看从库状态里面包含有

根据异常提示去对应得表里面可以找到问题出现得原因,后续再遇到了更新

Slave_SQL_Running: No 问题分析

1.程序可能在slave上进行了写操作

2.也可能是slave机器重启后,事务回滚造成的.

备机上每写一次,主机master的pos都会变一次,有时候同步没成功,就会导致主从机pos值不一样,这时候有两种解决方法,一种是跳过这个错误,一种是手动同步pos值


解决办法一:跳过这个错误  
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;就是跳过一次的意思  

解决办法  
stop slave ;  
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;  
start slave;  
stop slave;  
change master to
master_host='192.168.0.250',master_user='slave',master_password='slavepassword.',
master_log_file='mysql-bin.000049',master_log_pos=310706;
start slave;  
show slave status;  

找到问题后重新创建主从步骤

# 停止  
stop slave;    
# 重置   
reset slave;  
# 创建  
CHANGE MASTER TO MASTER_HOST='192.168.0.250', MASTER_USER='slave', MASTER_PASSWORD='slavepassword', MASTER_LOG_FILE='mysql-bin.000041',MASTER_LOG_POS=115774283;  
# 启动  
start slave;  
# 查看状态  
show slave status; 
知道的越多 不知道的越多
最后更新于 2024-09-24