mysql 主从不一致的解决办法

操作主数据库

千万不要关闭终端!!!
千万不要关闭终端!!!
千万不要关闭终端!!!
因为要在终端中为所有表加只读锁;如果关闭终端,会自动解除锁。

 1### 登录主数据的 mysql
 2[root@jyzbdb1 app]# mysql -ucopote_admin -p'Copote1258!@%*'
 3
 4### 锁定数据库所有的表
 5mysql> flush tables with read lock;
 6
 7### 记录主库状态
 8mysql> show master status;
 9+------------------+-----------+--------------+------------------+-------------------+
10| File             | Position  | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
11+------------------+-----------+--------------+------------------+-------------------+
12| mysql-bin.001018 | 424012472 |              |                  |                   |
13+------------------+-----------+--------------+------------------+-------------------+

另起一个终端:

1### 备份数据
2[root@jyzbdb1 app]# mysqldump --no-defaults --socket /app/soft/mysql/mysql.sock -ucopote_admin -p'Copote1258!@%*' jygz -R -E > /app/jygz.sql
3
4### 复制到从服务器上
5[root@jyzbdb1 app]# scp jygz.sql root@10.1.150.35:/app/

操作从数据库

 1### 登录从数据的 mysql
 2[root@jyzbdb1 app]# mysql -ucopote_admin -p'Copote1258!@%*'
 3
 4### 停止从数据服务
 5mysql> stop slave;
 6
 7### 进入数据库
 8mysql> use jygz;
 9
10### 还原数据
11mysql> source /app/jygz.sql
12
13### 设置从数据库bin-log日志
14mysql> change master to master_host = '10.1.150.34', master_user = 'backup', master_port=3306, master_password='copote1258!@%*', master_log_file = 'mysql-bin.001018', master_log_pos=424012472;
15
16### 启动从数据服务
17mysql> start slave;
18
19### 查看从数据服务的状态
20mysql> show slave status\G
21### 显示如下内容表示主从同步成功!
22Slave_IO_Running: Yes
23Slave_SQL_Running: Yes

操作主库

1### 解除锁定:
2### 直接关闭操作主数据库的终端,或者在操作主数据库的终端中运行下面的命令:
3mysql> unlock tables;