MySQL Slave异常关机的处理 (pt-slave-restart)_MySQL
还可以使用percona-toolkit的pt-slave-restart命令。
percona-toolkit-2.2.8-1.noarch.rpm 需要安装一些依赖包。
- yum install perl perl-DBI perl-DBD-MySQL perl-IO-Socket-SSL perl-Time-HiRes
模拟异常关机的处理1.JAVA程序不断写入Master
-
import java.sql.Connection
;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.SQLException;
- publicclassTest{
- publicstatic void main(String[]args)throws ClassNotFoundException,
- SQLException{
- long start=System.currentTimeMillis();
- Class.forName("com.mysql.jdbc.Driver");
- Connection connection=DriverManager.getConnection(
- "jdbc:mysql://192.168.1.70:3306/xx","xx","xx");
- connection.setAutoCommit(true);
- PreparedStatement cmd=connection
- .prepareStatement("insert into test(name) values(?)");
- for(inti=0;i
- cmd.setString(1,"test");
- cmd.executeUpdate();
- }
- connection.commit();
- cmd.close();
- connection.close();
- longend=System.currentTimeMillis();
- System.out.println(end-start);
- }
- }
2.关闭Slave虚拟机
在JAVA程序运行当中,直接强制关闭Slave虚拟机。然后重新启动Slave

启动之后,发现复制出现异常。(Show slave status/G)

这个表除了自增的ID,就是name字段,默认都是test
现在在slave上修改name字段为‘mysql’
update test set name='mysql';
3.使用
pt-slave-restart
命令修复错误。
- [root@mysql2 ~]# pt-slave-restart --user=root --password=xxxxxxx--error-numbers=1062
- 2014-06-16T01:17:47 p=...,u=root mysql2-relay-bin.000003 312116 1062
- 2014-06-16T01:17:47 p=...,u=root mysql2-relay-bin.000003 312373 1062
- 2014-06-16T01:17:47 p=...,u=root mysql2-relay-bin.000003 312630 1062
- 2014-06-16T01:17:47 p=...,u=root mysql2-relay-bin.000003 312887 1062
- 2014-06-16T01:17:48 p=...,u=root mysql2-relay-bin.000003 313144 1062
- 2014-06-16T01:17:48 p=...,u=root mysql2-relay-bin.000003 313401 1062
- 2014-06-16T01:17:48 p=...,u=root mysql2-relay-bin.000003 313658 1062
- 2014-06-16T01:17:48 p=...,u=root mysql2-relay-bin.000003 313915 1062
- 2014-06-16T01:17:48 p=...,u=root mysql2-relay-bin.000003 314172 1062
- 2014-06-16T01:17:48 p=...,u=root mysql2-relay-bin.000003 314429 1062
- 2014-06-16T01:17:48 p=...,u=root mysql2-relay-bin.000003 314686 1062
- 2014-06-16T01:17:48 p=...,u=root mysql2-relay-bin.000003 314943 1062
- 2014-06-16T01:17:48 p=...,u=root mysql2-relay-bin.000003 315200 1594
- Error 1594 is not in --error-numbers.
发现还有1594的错误

重新连接Master
参考:http://www.linuxidc.com/Linux/2014-07/104235.htm

最后查看复制的情况,已经正常运行了。
我们在Master输入的name都是test,而在Slave故障之后,将name都改为了mysql。
一般来说,处理主键重复无外乎两种方式(我能想到的)
1.忽略Master发来的重复的binlog事件
2.使用Master的binlog事件更新slave数据
如果是第一种方式,slave的name应该都是mysql
如果是第二种方式,应该前部分是mysql,后一部分是test
测试结果如下,可以初步表明使用的是第二种方式。
下面302条name为'test'的记录都是异常关机时,已经执行却没有将pos写入文件的那部分数据。
pt-slave-restart将这部分数据的binlog重新执行,所以它们的name为'test’。


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Cet article aborde l'erreur "Implom Open Open Wibrary" de MySQL. Le problème découle de l'incapacité de MySQL à localiser les bibliothèques partagées nécessaires (fichiers .so / .dll). Les solutions impliquent la vérification de l'installation de la bibliothèque via le package du système m

Cet article explore l'optimisation de l'utilisation de la mémoire MySQL dans Docker. Il traite des techniques de surveillance (statistiques Docker, du schéma de performance, des outils externes) et des stratégies de configuration. Il s'agit notamment des limites de mémoire Docker, de l'échange et des CGROUP, à côté

L'article discute de l'utilisation de l'instruction ALTER TABLE de MySQL pour modifier les tables, notamment en ajoutant / abandon les colonnes, en renommant des tables / colonnes et en modifiant les types de données de colonne.

Cet article compare l'installation de MySQL sur Linux directement par rapport à l'utilisation de conteneurs Podman, avec / sans phpmyadmin. Il détaille les étapes d'installation pour chaque méthode, mettant l'accent sur les avantages de Podman isolément, portabilité et reproductibilité, mais aussi

Cet article fournit un aperçu complet de SQLite, une base de données relationnelle autonome et sans serveur. Il détaille les avantages de SQLite (simplicité, portabilité, facilité d'utilisation) et les inconvénients (limitations de concurrence, défis d'évolutivité). C

L'article discute de la configuration du cryptage SSL / TLS pour MySQL, y compris la génération et la vérification de certificat. Le problème principal est d'utiliser les implications de sécurité des certificats auto-signés. [Compte de caractère: 159]

Ce guide démontre l'installation et la gestion de plusieurs versions MySQL sur MacOS à l'aide de Homebrew. Il met l'accent sur l'utilisation de Homebrew pour isoler les installations, empêchant les conflits. L'article détaille l'installation, les services de démarrage / d'arrêt et le meilleur PRA

L'article traite des outils de GUI MySQL populaires comme MySQL Workbench et PhpMyAdmin, en comparant leurs fonctionnalités et leur pertinence pour les débutants et les utilisateurs avancés. [159 caractères]
