mysql 主从同步master主数据库无法写入

mysql 5.7 环境,两台数据库服务器设定主从同步,从数据库设定全局只读(如果不设定只读偶尔同步失败或人为修改数据导致两库内容不一会很麻烦),一般情况没有什么问题,有天从数据库查询量增加,导致未及时接收主数据库过来的数据,反而导致主数据库不能写入,前台效果就是户不能修改数据,但处理这个很简单:

show slave status

显示下面错误

Last_Error: Slave SQL thread retried transaction 10 time(s) in vain, giving up. Consider raising the value of the slave_transaction_retries variable.

解决办法:

stop slave;  -- 执行后等一下再执行 start 好些,只是个人感觉,实际好像没有用
start slave;
show slave status\G;

上述master等待行为都发生在rpl_semi_sync_master_wait_no_slave=ON(默认值)情况下。如果rpl_semi_sync_master_wait_no_slave设置为OFF时,连接master的slave的数量少于rpl_semi_sync_master_wait_for_slave_count设置的值,master不会等待超时,立刻自动降为异步复制模式。
set global rpl_semi_sync_master_wait_no_slave=OFF;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL主从同步有两种方式:基于语句的复制和基于行的复制。无论使用哪种方式,都需要进行以下几个步骤: 1. 在服务器上开启二进制日志功能 2. 在服务器上创建一个用于从服务器连接的用户,并赋予该用户复制权限 3. 在从服务器上配置服务器的相关信息,并启动从服务器的复制进程 以下是基于语句的复制的具体命令行操作: 1. 在服务器上开启二进制日志功能 ``` vim /etc/my.cnf ``` 在 [mysqld] 段中添加如下配置: ``` log-bin=mysql-bin binlog-format=statement ``` 保存并退出,重启 MySQL 服务使配置生效。 2. 在服务器上创建一个用于从服务器连接的用户,并赋予该用户复制权限 ``` CREATE USER 'replica'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%'; FLUSH PRIVILEGES; ``` 注意:在 MySQL 8.0 版本及以上,需要将 REPLICATION SLAVE 改为 REPLICATION SLAVE PROXY。 3. 在从服务器上配置服务器的相关信息,并启动从服务器的复制进程 ``` vim /etc/my.cnf ``` 在 [mysqld] 段中添加如下配置: ``` server-id=2 relay-log=mysql-relay-bin log_slave_updates=1 read_only=1 ``` 其中,server-id 是从服务器的唯一标识符,可以设置为任意整数;relay-log 是从服务器用于存储复制事件的日志文件;log_slave_updates=1 表示从服务器将接收到的变更事件也写入自己的二进制日志文件中;read_only=1 表示从服务器只能读取数据,不能写入数据。 保存并退出,重启 MySQL 服务使配置生效后,执行以下命令启动从服务器的复制进程: ``` CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='replica', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=100; START SLAVE; ``` 其中,MASTER_HOST 是服务器的 IP 地址;MASTER_USER 和 MASTER_PASSWORD 是在服务器上创建的用于从服务器连接的用户和密码;MASTER_LOG_FILE 和 MASTER_LOG_POS 分别是服务器当前二进制日志文件的名称和位置,可以通过在服务器上执行 SHOW MASTER STATUS 命令获取。 至此,基于语句的复制的主从同步已经完成。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值