MySQL主从复制搭(主:linux,从:windows)

前言

今天实操了下搭建mysql的主从复制,特此记录下,便于以后回顾。

主从复制原理详解

详情参见 MySQL主从复制原理

步骤

详细步骤可以参见 MySQL主从复制(linux主+windows从)

踩坑总结

  • 一般对于正式环境来讲,需要保证主从mysql的版本一致。但是不一致,也是可以的。这里我linux服务器上面使用的是mysql-5.7.36 ,windows上面使用的是 mysql-8.0.26

  • mysql配置文件里面的[mysqld]表示其包含的设置是针对MySQL服务器起作用的,不能删除,由于我windows上把一般配置和主从复制的配置分开了,所以导致主从的在[mysqld] 前面,导致不生效;

  • 一开始数据同步没有问题,但是过一段时间之后却发现不能同步数据了。
    解决:
    通过 show slave status; 查看信息发现 Slave_SQL_Running = “NO” (下图是成功时的状态)
    在这里插入图片描述
    经查导致原因可能是自己重启了本地的mysql服务,或者其他原因导致,一般是事务回滚造成的。
    这里要额外讲一下 Slave 的两个关键进程,数据同步缺一不可:

  • Slave_SQL_Running,负责与主机的io通信;

  • Slave_IO_Running,负责自己的slave mysql进程。

    解决方法一:

    stop slave;    //停止slave
    SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;  //跳过slave上的1个错误
    start slave;   //启动slave
    

    解决方法二:
    首先停掉Slave服务:slave stop
    到主服务器上查看主机状态:
    记录File和Position对应的值
    在这里插入图片描述
    然后到slave服务器上执行手动同步:

    change master to
    master_host='master的ip',
    master_user='用户名',
    master_password='密码',
    master_port=3306, 
    master_log_file='mysql-bin.000001', //master的binlog
    master_log_pos=8857; //postion
    
    //启动slave即可
    start slave;	
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
WindowsLinuxMySQL主从复制的步骤类似,但是需要注意一些操作系统差异和MySQL配置差异。下面是基本的建步骤: 1. 安装MySQL服务器 在Windows上可以下载MySQLWindows版安装包,直接安装即可。在Linux上可以使用apt、yum等包管理器安装MySQL,或者从官网下载源码编译安装。 2. 配置库 在库的my.cnf配置文件中添加以下配置: ``` [mysqld] server-id=1 log-bin=mysql-bin binlog-do-db=your_database_name ``` 其中,server-id表示库的唯一编号,log-bin表示开启二进制日志,binlog-do-db表示只记录指定数据库的变更,your_database_name需要替换为实际的数据库名。 3. 配置从库 在从库的my.cnf配置文件中添加以下配置: ``` [mysqld] server-id=2 ``` 4. 在库中创建复制用户 在库中执行以下命令创建复制用户: ``` CREATE USER 'slave'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%'; ``` 其中,password需要替换为实际的密码。 5. 查看库状态 在库中执行以下命令查看当前的二进制日志文件名和位置: ``` SHOW MASTER STATUS; ``` 将输出类似于以下的信息: ``` +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 107 | your_database_name | | +------------------+----------+--------------+------------------+ ``` 需要记录下File和Position的值,后面在从库中会用到。 6. 配置从库复制信息 在从库中执行以下命令配置库的连接信息和复制起点: ``` CHANGE MASTER TO MASTER_HOST='master_host_name', MASTER_USER='slave', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107; ``` 其中,master_host_name需要替换为库的IP地址或机名,password为复制用户的密码,mysql-bin.000001和107为上一步中获取的库状态信息。 7. 启动从库复制进程 在从库中执行以下命令启动复制进程: ``` START SLAVE; ``` 8. 验证复制状态 在从库中执行以下命令查看复制状态: ``` SHOW SLAVE STATUS; ``` 如果复制状态正常,会输出类似于以下的信息: ``` Slave_IO_State: Waiting for master to send event Master_Host: master_host_name Master_User: slave Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 107 Relay_Log_File: slave-relay-bin.000001 Relay_Log_Pos: 4 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes ``` 其中,Slave_IO_Running和Slave_SQL_Running都应该为Yes,表示复制进程正常运行。 以上是简要的主从复制建过程,需要根据实际情况进行适当的调整和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值