使用Rotate Master实现MySQL多主复制_MySQL
bitsCN.com
使用Rotate Master实现MySQL多主复制 背景:众所周知,MySQL只支持一对多的主从复制,而不支持多主(multi-master)复制。当然,5.6的GUID功能的出现也带来了multi-master的无限可能,不过这个已经是题外话了。本文主要介绍一种非实时的适用于各版本MySQL的multi-master方法。 内容简介:最初的思路来源于一位国外DBA的blog : http://thenoyes.com/littlenoise/?p=117基本原理就是通过SP记录当前 master-log的name和pos记录到表中,然后读取下一个master记录,
执行stop slave / change master / start slave。以此循环反复。个人对他的方法进行了改进,增加了以下功能:1. master可以根据业务流量设置权重值2. 各个master-slave运行情况的监控3. 各个master可以实时退出多主的架构 具体操作过程:1. 创建保存各个master信息的表 use mysql; CREATE TABLE `rotate_master` ( `id` int(11) NOT NULL AUTO_INCREMENT, `master_host` varchar(255) DEFAULT NULL comment 'master地址', `master_port` int(10) unsigned DEFAULT NULL comment 'master端口' , `master_log_file` varchar(255) DEFAULT NULL ‘上次停止时的master-log文件’, `master_log_pos` int(10) unsigned DEFAULT NULL comment '上次停止时的master-log-pos', `IS_Slave_Running` varchar(10) DEFAULT NULL comment '上次停止时主从是否有异常', `in_use` tinyint(1) DEFAULT '0' comment '是否是当前正在同步的数据行', `weight` int(11) NOT NULL DEFAULT '1' comment '该master的权重,即重复执行多少个时间片', `repeated_times` int(11) NOT NULL DEFAULT '0' comment '当前已经重复执行的时间片数', `LastExecuteTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP comment '上次执行的时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 新增加一个master : insert into `rotate_master`(`master_host`,`master_port`,`master_log_file`,`master_log_pos`,`in_use`,`weight`) values -- 1号master,权重=1,并设置为当前master('192.168.0.1',3307,'mysqlbinlog.000542',4,1,1),-- 2号master,权重=2('192.168.0.2',3306,'mysqlbinlog.000702',64762429,0,2),-- 3号master,权重=5('192.168.0.3',3306,'mysqlbinlog.000646',22157422,0,5) 手工把master 调整到当前的配置项:change master to master_host='192.168.0.1', master_port=3306,master_log_file='mysqlbinlog.000542',master_log_pos=4,master_user='repl',
master_password='repl';start slave; 创建rotate master SP: 注意:代码中用于连接master的用户名和密码是 : repl / repl ,请根据自己的情况修改。 DELIMITER $$ DROP PROCEDURE IF EXISTS `mysql`.`rotate_master`$$ CREATE DEFINER=`root`@`localhost` PROCEDURE `rotate_master`()BEGINDECLARE _info text;DECLARE _master_file varchar(255);DECLARE _master_pos int unsigned;DECLARE _master_host varchar(255);DECLARE _master_port int unsigned;DECLARE _is_slave_running varchar(10);DECLARE _id int; DECLARE _weight int;DECLARE _repeated_times int; select VARIABLE_VALUE from information_schema.GLOBAL_STATUS where VARIABLE_NAME =
'Slave_running' into _is_slave_running;STOP SLAVE; SELECT LOAD_FILE(@@relay_log_info_file) INTO _info;SELECTSUBSTRING_INDEX(SUBSTRING_INDEX(_info, '/n', 3), '/n', -1),SUBSTRING_INDEX(SUBSTRING_INDEX(_info, '/n', 4), '/n', -1)INTO _master_file, _master_pos; UPDATE mysql.rotate_master SET `master_log_file` = _master_file, `master_log_pos` =
_master_pos, id = LAST_INSERT_ID(id), `IS_Slave_Running` = _is_slave_running WHERE
in_use = 1; select weight,repeated_times into _weight,_repeated_times from mysql.rotate_master
where in_use =1; if(_weight

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

In dem Artikel werden mithilfe der Änderungstabelle von MySQL Tabellen, einschließlich Hinzufügen/Löschen von Spalten, Umbenennung von Tabellen/Spalten und Ändern der Spaltendatentypen, erläutert.

In Artikel werden die Konfiguration der SSL/TLS -Verschlüsselung für MySQL, einschließlich der Erzeugung und Überprüfung von Zertifikaten, erläutert. Das Hauptproblem ist die Verwendung der Sicherheitsauswirkungen von selbstsignierten Zertifikaten. [Charakterzahl: 159]

In Artikel werden Strategien zum Umgang mit großen Datensätzen in MySQL erörtert, einschließlich Partitionierung, Sharding, Indexierung und Abfrageoptimierung.

In Artikel werden beliebte MySQL -GUI -Tools wie MySQL Workbench und PhpMyAdmin beschrieben, die ihre Funktionen und ihre Eignung für Anfänger und fortgeschrittene Benutzer vergleichen. [159 Charaktere]

In dem Artikel werden in MySQL die Ablagerung von Tabellen mithilfe der Drop -Tabellenerklärung erörtert, wobei Vorsichtsmaßnahmen und Risiken betont werden. Es wird hervorgehoben, dass die Aktion ohne Backups, die Detaillierung von Wiederherstellungsmethoden und potenzielle Produktionsumfeldgefahren irreversibel ist.

In Artikeln werden ausländische Schlüssel zur Darstellung von Beziehungen in Datenbanken erörtert, die sich auf Best Practices, Datenintegrität und gemeinsame Fallstricke konzentrieren.

In dem Artikel werden in verschiedenen Datenbanken wie PostgreSQL, MySQL und MongoDB Indizes für JSON -Spalten in verschiedenen Datenbanken erstellt, um die Abfrageleistung zu verbessern. Es erläutert die Syntax und die Vorteile der Indizierung spezifischer JSON -Pfade und listet unterstützte Datenbanksysteme auf.

Artikel erläutert die Sicherung von MySQL gegen SQL-Injektions- und Brute-Force-Angriffe unter Verwendung vorbereiteter Aussagen, Eingabevalidierung und starken Kennwortrichtlinien (159 Zeichen).
