mysql主从同步 node.js分布式解决数据库同步问题的各种坑点分析.

1.实现步骤图利用mysql主从同步实现

   1.写入则从一个主库写入并同步到从库

   2.查询则采用mysql集合均衡查询

   3.接下里实现两个线程的监听读写

  2.mysql实现linux主从同步

     1.linux找到当前文件

     

 2.修改文件设置唯一id

  # 开启二进制日志
	log_bin=master_bin
# 设置当前节点全局唯一ID
	server-id=7

 

解决:mysql密码错误去宝塔或者命令重新设置    没报错忽略

 

重启mysql服务
systemctl start mysql.service (启动服务)
systemctl stop mysql.service (停止服务)
systemctl restart mysql.service (重新启动服务)
查看从二进制日志的文件和位置开始进行复制
mysql> show master status;

 3. show master status;记住这两个

 4.创建有复制权限的用户账号


mysql> create user dafu @'192.168.198.%' identified by '123456;
mysql> grant replication slave on *.* to dafu@'192.168.198.%';


user 后面是用户名 

by后面是密码到时候会用

@'192.168.198.%' 代表满足192.168.198.任何ip都可以












参考

创建有复制权限的用户账号
create user repluser @'192.168.198.%' identified by 'qazxsw@123';
mysql> grant replication slave on *.* to repluser@'192.168.198.%';

5.从节点配置点

	#为当前节点设置一个全局惟的ID号
	server_id=17
	#开启二进制日志
	log-bin=slave_log
	#设置从数据库只读(对root用户无效)
	read_only=ON
	#relay log的文件路径
	relay_log=relay-log
	#默认值hostname-relay-bin.index
	relay_log_index=relay-log.index

6.使用有复制权限的用户账号连接至主服务器,并启动复制线程

mysql> change master to master_host='父ip',master_user='上面创建得用户名',master_password='上面创建的密码',master_log_file='master_bin.000001',MASTER_LOG_POS=1620;

mysql> START SLAVE; #启动必须有;号
mysql> SHOW SLAVE STATUS\G; 查看slave信息

7.检查是否为yes这两个

 1.解决slaveIO_running第一个为no问题

 

 解决: 检查主服务器和从服务器 server-id是否一样  show variables like 'server_id'; 

先关闭 stop slave; 

一样重新设置 set global server_id = 2; 分开不一样

start slave;  开启

然后在查询 SHOW SLAVE STATUS\G; 查看slave信息则为两个yes

 2.解决slave_Sql_running第二个为no问题

  代表主数据库重启mysql服务,或者重启linux电脑或者Navicat用界面化改了数据库字段导致断开

导致拿到file和position改了与当前绑定不一样了

 解决:

       1.stop slave;  关闭slave

       2.主服务器show master status; 拿到file和position

       3. 重新设置file和position

mysql> change master to master_host='192.168.198.7',master_user='repluser',master_password='qazxsw@123',master_log_file='master_bin.000001',MASTER_LOG_POS=1620;

     4.start slave; 开启服务

     5.在查询则为两个yes  SHOW SLAVE STATUS\G;

      3.解决两个yes但是过了一会或者很久数据不同步但是都为yes

   1.分析为卡住了服务器日志不准时

    解决:

       1.stop slave;  关闭slave

        2.start slave; 开启服务

    重启就行

        4.解决第一个no断开之后很久没重连日志没刷新报错

主库执行  刷新日志然后  flush logs; 

然后在重新绑定 file和position 执行第二个问题逻辑

6.测试在主数据库创建一个数据库,在从库查看是否同步

mysql> create database testdatabase;
mysql> show databases;

7.  主从配置完了若需要取消主从复制先停止从库复制进程

	stop slave;
	reset slave all;

 注意:

千万不要用Navicat直接改数据或者改字段这个是作者遇到的大坑或直接断开主库连接为第二个no。

推荐用代码执行增删改查

或者linux sql命令来操作都可以不会断开

如果能用手敲麻换一个赞那也不错哈 谢谢哈哈

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大福ya

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值