mysql主从同步io_Mysql主从同步

以192.168.99.109(主)和192.168.99.110(从)两机测试

一,主服务器

① 设置主服务器防火墙

以win10为列:

设置->网络和Internet->windows防火墙->高级设置->入站规则&出站规则(分别新建)->新建规则

->端口->TCP & 特定本地端口 3306->允许链接->名称mysqlport->完成

②配置my.ini或my.conf --- 既mysql配置文件

;实时同步配置log-bin=C:/mysql/loges

;本机id(通常以本机ip尾数命名,所有主从不能存在相同)

server-id=109;需要备份的数据库名,如果备份多个数据库,重复设置这个选项 即可(此次以test数据库为例)

binlog-do-db =test

;以下参数虽然不知道是什么,但是参考了很多资料有填写的

;这个参数一定要加上,否则不会给更新的记录些到二进制文件 里log-slave-updates=1;每次事务提交时MySQL都会把log buffer的数据写入logfile,并且flush(刷到磁盘)中去

innodb_flush_log_at_trx_commit=1;跳过错误,继续执行复制操作(可选)

slave-skip-errors=1;主服务器最重要的设置是sync_binlog,使每次提交事务时把二进制日志内容同步到磁盘,即使服务器崩溃也会

sync_binlog=1binlog_checksum=crc32

;混合模式复制

binlog_format=MIXED

;binlog过期清理时间

expire_logs_days=7;binlog每个日志文件大小

max_binlog_size=20M

;禁止域名解析,根据日志错误决定是否打开此项,本人报错因此打开了

;skip-name-resolve

③ 重启sql server

④ mysql命令行

1.创建slave等级用户( grant replication slave ,replication client on *.* to '用户名'@'slave从ip,%为通配符表示任意'identified by "密码"; )

mysql> grant replication slave ,replication client on *.* to 'rep'@'192.168.99.%'identified by "111";

2. 清空日志索引文件

mysql>  reset slave;

1. 锁表,锁定数据库为只读,确保数据一致性

mysql>flush tables with read lock;

2. 查看主机状态

mysql> show master status;

记录下file字段,和position字段(我的值为:file->loges.000004   pos->154)

4.前去配置从服务器

5.最后开锁

mysql> unlock tables;

二,从服务器

①按照之前一样设置防火墙

②配置配置my.ini或my.conf

server-id=110

log-bin="C:/mysql/loges"

sync_binlog=1

replicate-do-db=testreplicate-wild-do-table=test.%slave-skip-errors=allslave-net-timeout=60;混合模式复制

binlog_format=MIXED

;binlog过期清理时间

xpire_logs_days=7;binlog每个日志文件大小

max_binlog_size=20M

;skip-name-resolve

③重启sql server

④ mysql命令行

mysql> reset slave;

mysql> stop slave;

以下分别为:主机ip,用户,密码,之前查询的master status->file & position

mysql> CHANGE MASTER TO

->MASTER_HOST='192.168.99.109',

->MASTER_USER='rep',

->MASTER_PASSWORD='111',

->MASTER_LOG_FILE='loges.000004',

->MASTER_LOG_POS=154;

mysql>start slave;

mysql> show slave status;

打印slave状态

其中Slave_IO_Runing和Slave_SQL_Runing状态均为YES则开启同步成功

*Slave_IO_Runing:connecting 可能情况主从服务器ping不通,可能是change master to参数有误(其他未遇到过)

三 ,如果不能同步,则分别查看主从服务器sql日志,进行排错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL 主从复制是一种非常重要且常用的数据同步方式,对于数据库管理员来说,保证主从同步的正常运行对于数据库的可靠性和稳定性都是非常重要的。当我们在使用 MySQL 主从同步时,如果发现 slave_io_running:no 的情况,那么意味着 MySQL 从服务器的 IO 线程停止了工作。 IO 线程是 MySQL 主从复制中非常重要的一个组件,它的作用是从主服务器上读取二进制数据,并将其传输到从服务器上。如果 IO 线程出现问题,那么意味着从服务器无法从主服务器获取新的数据,从而导致从服务器无法同步主服务器的数据。 在出现 slave_io_running:no 的情况时,我们需要立即查找 IO 线程出现问题的原因,并进行解决。以下是常见的 IO 线程故障原因及对应解决方案: 1. 网络问题。如果主服务器和从服务器之间的网络出现了问题,那么 IO 线程就无法正常工作。我们可以通过检查网络连接以及网络质量来解决这个问题。 2. DNS 解析错误。如果主服务器和从服务器之间使用的是主机名进行通信,那么可能出现 DNS 解析错误的情况。我们需要检查主机名是否正确,以及 DNS 解析是否正常。 3. 权限问题。如果从服务器的用户权限不正确,那么也可能会导致 IO 线程无法正常工作。我们需要检查从服务器的用户权限是否足够,以及是否正确配置了主从服务器之间的连接信息。 4. 数据库配置问题。如果从服务器的数据库配置不正确,那么也可能会导致 IO 线程无法正常工作。我们需要检查从服务器的数据库配置是否正确,并根据需要进行更改。 总的来说,当出现 slave_io_running:no 的情况时,我们需要立即对问题进行排查和解决,以便尽快恢复 MySQL 主从同步的正常运行。在排查问题过程中,我们需要充分了解 MySQL 主从复制的工作原理,熟悉常见的故障原因,并加强对 MySQL 数据库的日常维护和管理工作,以提高数据库的可靠性和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值