问题:
今天使用前端的时候发现数据增加后并没有显现回来,于是乎查看了数据库,发现读数据库和写数据库里面数据不统一
解决:
进入到从库服务器,登陆数据库,执行以下代码
show slave status
查看对应的状态
Slave_IO_Running: Yes
Slave_SQL_Running: No
则表示同步失败
情况一:slave_io_running:no
因为log文件或者pos位置跟主服务器不对应导致的;
解决办法:
修改从服务器与主服务器一致即可
mysql-> slave stop; #关闭服务 mysql-> change master to master_log_file='主服务器的文件', MASTER_LOG_POS=0; mysql-> slave start; #开启服务 mysql-> show slave status\G; #查看状态是否为yes
情况二:slave_sql_running:no
因为执行sql语句时有错误导致,这种错误有很多触发方式
方法一:
关闭服务->跳过一条记录->启动服务->查看是否为yes,否:再次跳过一条记录直到yes为止
mysql-> stop slave; mysql-> SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; mysql-> start slave; mysql-> show slave status\G
方法二:
解决方法二(重新做主从,完全同步):
1、先进入主库进行锁表,注意窗口不要关闭
mysql> flush table with read lock;
2、把数据进行备份
> mysqldump -uroot -p --opt -R 数据库 > /data/bak.sql
3、再新开个窗口,查看主数据库信息
mysql> show master status;
4、在从库上停止slave
mysql> stop slave;
5、导入备份的数据文件
mysql> source /data/bak.sql
6、重置同步
mysql> reset slave;
7、重新设置同步节点
mysql> CHANGE MASTER TO MASTER_HOST='192.168.137.233', MASTER_PORT=3306, MASTER_USER='sync', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000005', MASTER_LOG_POS=1158;
host,port,user,password请根据你的主库设置相应修改,log_file和log_pos根据主库中master status相应修改。
8、开启slave
mysql> start slave;
9、查看slave状态
mysql> show slave status\G;
显示如下信息则表示正常
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
10、对主数据库解锁
mysql> unlock tables;
11、再次在主库中添加或修改数据,看从库数据是否同步