生产中我们总是会遇到一些问题,比如备库的某张表同步失败,但是从库一直在写数据,该怎解决?
好,下面就说一下我在工作中碰到这个中情况的时候的处理办法。
使用实验环境来模拟当时情况,情景再现
环境:
master:192.168.56.21
slave:192.168.56.22
库:ai
同步失败的表:lmj
1,备库删除表
mysql> drop table lmj;
Query OK, 0 rows affected (0.01 sec)
关闭从库
mysql> stop slave;
Query OK, 0 rows affected (0.01 sec)
从库关闭服务
/etc/init.d/mysqld stop
从库加上一个参数replicate_ignore_table参数,过滤掉这张表
vim /etc/my.cnf
replicate_ignore_table=ai.lmj
从库重新启动
/etc/init.d/mysqld start
2,主库mysqldump这张表
[root@mysql1 bak]# /data/mysql/bin/mysqldump -uroot -proot --master-data=2 ai lmj >lmj.sql
Warning: Using a password on the command line interface can be insecure.
scp传输到备库
[root@mysql1 bak]# scp lmj.sql 192.168.56.22://root/bak/
lmj.sql 100% 1935 1.9KB/s 00:00
[root@mysql1 bak]#
3,从库导入数据
[root@mysql2 bak]# mysql -uroot -proot ai <lmj.sql
找到备份的时候的file位置和pos位置
[root@mysql2 bak]# more lmj.sql
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000048', MASTER_LOG_POS=1529;
4,备库开启slave,应用到备份的点。
mysql> start slave until MASTER_LOG_FILE='mysql-bin.000048', MASTER_LOG_POS=1529;
Query OK, 0 rows affected (0.01 sec)
5,主库lmj表插入数据,模拟生产环境
root@localhost:ai 10:00:40>insert into lmj values(4);
Query OK, 1 row affected (0.01 sec)
root@localhost:ai 10:00:40>insert into lmj values(5);
Query OK, 1 row affected (0.01 sec)
6,从库关闭mysql服务
/etc/init.d/mysqld stop
把参数注释掉
vim /etc/my.cnf
####replicate_ignore_table=ai.lmj
从库开启mysql服务
/etc/init.d/mysqld start
7,备库开启主从
start slave;
检查数据
mysql> select * from lmj;
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
ok,问题解决。这个技能是必须的,因为在工作中经常会发生备库某张表同步失败的情况。
好,下面就说一下我在工作中碰到这个中情况的时候的处理办法。
使用实验环境来模拟当时情况,情景再现
环境:
master:192.168.56.21
slave:192.168.56.22
库:ai
同步失败的表:lmj
1,备库删除表
mysql> drop table lmj;
Query OK, 0 rows affected (0.01 sec)
关闭从库
mysql> stop slave;
Query OK, 0 rows affected (0.01 sec)
从库关闭服务
/etc/init.d/mysqld stop
从库加上一个参数replicate_ignore_table参数,过滤掉这张表
vim /etc/my.cnf
replicate_ignore_table=ai.lmj
从库重新启动
/etc/init.d/mysqld start
2,主库mysqldump这张表
[root@mysql1 bak]# /data/mysql/bin/mysqldump -uroot -proot --master-data=2 ai lmj >lmj.sql
Warning: Using a password on the command line interface can be insecure.
scp传输到备库
[root@mysql1 bak]# scp lmj.sql 192.168.56.22://root/bak/
lmj.sql 100% 1935 1.9KB/s 00:00
[root@mysql1 bak]#
3,从库导入数据
[root@mysql2 bak]# mysql -uroot -proot ai <lmj.sql
找到备份的时候的file位置和pos位置
[root@mysql2 bak]# more lmj.sql
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000048', MASTER_LOG_POS=1529;
4,备库开启slave,应用到备份的点。
mysql> start slave until MASTER_LOG_FILE='mysql-bin.000048', MASTER_LOG_POS=1529;
Query OK, 0 rows affected (0.01 sec)
5,主库lmj表插入数据,模拟生产环境
root@localhost:ai 10:00:40>insert into lmj values(4);
Query OK, 1 row affected (0.01 sec)
root@localhost:ai 10:00:40>insert into lmj values(5);
Query OK, 1 row affected (0.01 sec)
6,从库关闭mysql服务
/etc/init.d/mysqld stop
把参数注释掉
vim /etc/my.cnf
####replicate_ignore_table=ai.lmj
从库开启mysql服务
/etc/init.d/mysqld start
7,备库开启主从
start slave;
检查数据
mysql> select * from lmj;
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
ok,问题解决。这个技能是必须的,因为在工作中经常会发生备库某张表同步失败的情况。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31447263/viewspace-2149029/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31447263/viewspace-2149029/