mysql5.623GTID主从复制+半同步复制安装与配置
一、 GTID 简介 什么是 GTID GTID(Global Transaction ID) 是对于一个已提交事务的编号,并且是一个全局唯一的编号。 GTID 实际上是由 UUID+TID 组成的。其中 UUID 是一个 MySQL 实例的唯一标识。 TID 代表了该实例上已经提交的事务数量,并且随着事务提交单
一、GTID简介
什么是GTID
GTID(Global Transaction ID)是对于一个已提交事务的编号,并且是一个全局唯一的编号。
GTID实际上是由UUID+TID组成的。其中UUID是一个MySQL实例的唯一标识。TID代表了该实例上已经提交的事务数量,并且随着事务提交单调递增。下面是一个GTID的具体形式
3E11FA47-71CA-11E1-9E33-C80AA9429562:23
更详细的介绍可以参见:官方文档
GTID的作用
那么GTID功能的目的是什么呢?具体归纳主要有以下两点:
1、根据GTID可以知道事务最初是在哪个实例上提交的
2、GTID的存在方便了Replication的Failover
二、介绍半同步复制
半同步复制可以作为默认的异步复制的替代方案,用以提高数据完整性。
使用半同步复制,提交操作只有当一个从服务器已经接收到更新,或者超时后才返回客户端。因此,它可以确保数据存在于主服务器以及至少一个从服务器中(注意,提交操作返回时,从服务器已经接收到更新,但不一定已经应用了该更新)。
可以组合使用不同的复制模式,因此一些从服务器配置为异步复制,而其他从服务器使用半同步复制。这样最终意味着开发人员/DBA能够基于每个从服务器确定合适的数据一致性和性能级别。
以上描述的不同复制模式可以与完全同步复制进行比较,后者使用“两阶段提交”协议同时将数据提交到两个或者更多实例中。同步复制能够确保多个系统之间的一致性,故障时提供更快的故障转移时间,但是会因为在节点之间传递更多的消息导致性能消耗。
三、环境
环境
系统:centos6.5
master IP: 172.19.0.105
slave IP:172.19.0.102
mysql版本:5.6.23
四、mysql安装(两台)
1、采用yum安装依赖包
yum -y install gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* cmake bison
2、创建mysql用户与用户组
groupadd mysql
useradd -r -g mysql mysql
3.解压安装mysql源代码包
tar zxvf mysql-5.6.23.tar.gz
cd mysql-5.6.23
cmake ./ -DCMAKE_INSTALL_PREFIX=/opt/mysql/ -DMYSQL_DATADIR=/opt/mysql/data -DMYSQL_UNIX_ADDR=/opt/mysql/data/mysqld.sock -DWITH_INNOBASE_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_TCP_PORT=3306 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_UNIX_ADDR=/opt/mysql/data/mysql.sock -DMYSQL_USER=mysql -DWITH_DEBUG=0
make && make install
4、赋予相关权限
chown -R mysql:mysql /opt/mysql
/opt/mysql/scripts/mysql_install_db --user=mysql --basedir=/opt/mysql --datadir=/opt/mysql/data
5、mysql配置文件
cp support-files/my-default.cnf /etc/my.cnf #配置文件
cp support-files/mysql.server /etc/init.d/mysql #启动文件
chmod +x /etc/init.d/mysql
mkdir /opt/mysql/logs #创建存放日志文件
chown -R mysql:mysql /opt/mysql/logs #赋予相关权限
chkconfig mysql on #增加开机启动
6、启动 mysql
/etc/init.d/mysql start
7、设置mysql初始密码,123456是密码,你可以设置自己需要的密码
/opt/mysql/bin/mysqladmin -u root password '123456'
8、增加软连接
ln -s /opt/mysql/bin/* /usr/bin/
五、主从模式配置
1、配置master节点 在[mysqld]下增加
log-bin=master-bin
binlog_format = ROW
log_slave_updates=true
gtid-mode=on
enforce-gtid-consistency=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-workers=4 #开启基于库的多线程复制。默认是0,不开启,最大并发数为1024个线程
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
report-port=3306
report-host=MASTER
2、配置slave节点 在[mysqld]下增加把server-id = 1修改成2与master要不一样,否则会报错
server-id = 2
log-bin=mysql-bin
binlog_format = ROW
log_slave_updates=true
gtid-mode=on
enforce-gtid-consistency=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-workers=4 #开启基于库的多线程复制。默认是0,不开启,最大并发数为1024个线程
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
report-port=3306
report-host=SLAVE
3、master与slave配置好重启
/etc/init.d/mysql restart
4、创建复制用户
在主库(master)执行
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'172.19.0.%' IDENTIFIED BY 'repl';
flush privileges;
在主库(master)执行安装相关插入件启动半同步复制
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
SET GLOBAL rpl_semi_sync_master_enabled=1;
SET GLOBAL rpl_semi_sync_master_timeout=1000;
在从库(slave)执行安装相关插入件启动半同步复制
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
SET GLOBAL rpl_semi_sync_slave_enabled=1;
在从库(slave)执行复制连接
CHANGE MASTER TO MASTER_HOST='172.19.0.105',MASTER_USER='repl',MASTER_PASSWORD='repl',master_auto_position=1,master_delay=20;
start slave;
查看主从已经启动gtid功能
在主库查看连接的slave主机
查看从库复制状态
以上说明成功
下面是我修改一些参数配置为了优化,大家可以根据自己环境来修改
主库(master)配置:
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
[client]
port = 3306
socket = /opt/mysql/data/mysql.sock
default-character-set = utf8
################Basic############
[mysqld]
server-id = 1
port = 3306
socket = /opt/mysql/data/mysql.sock
skip-external-locking
skip-name-resolve
default-storage-engine=INNODB
character-set-server=utf8
wait_timeout=500
connect_timeout=20
interactive_timeout=500
back_log=500
event_scheduler=ON
##########binlog##########
expire-logs-days=5
log-bin=master-bin
binlog_format = ROW
log_slave_updates=true
gtid-mode=on
enforce-gtid-consistency=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-workers=2 #开启基于库的多线程复制。默认是0,不开启,最大并发数为1024个线程
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
report-port=3306
report-host=MASTER
#############半同步###########
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000
rpl_semi_sync_master_trace_level=32
rpl_semi_sync_master_wait_no_slave=on
#######################
max_binlog_size=128M
binlog_cache_size=2M
sync_binlog=1
#################slow log ###########
slow-query_log=1
slow-query_log_file=/opt/mysql/logs/mysql.slow
long_query_time=2
####################error log####
log_error=/opt/mysql/logs/error.log
#################per_thread_buffers#############
max_connections=1024
max_user_connections=2000
max_connect_errors=10000
key_buffer_size=64M
max_allowed_packet=128M
table_open_cache=6144
table_definition_cache=4096
sort_buffer_size=512k
read_buffer_size=512k
read_rnd_buffer_size=512k
join_buffer_size=512k
tmp_table_size=64M
max_heap_table_size=64M
query_cache_type=0
query_cache_size=0
bulk_insert_buffer_size=32M
thread_cache_size=64
thread_concurrency=32
thread_stack=256K
################INNODB################
innodb_data_home_dir = /opt/mysql/data
innodb_log_group_home_dir = /opt/mysql/data
innodb_data_file_path = ibdata1:10M:autoextend
innodb_buffer_pool_size=2G
innodb_buffer_pool_instances = 4
innodb_flush_log_at_trx_commit=1
innodb_lock_wait_timeout=10
innodb_file_per_table
innodb_log_files_in_group=3
innodb_support_xa=1
innodb_sync_spin_loops=40
innodb_max_dirty_pages_pct=90
innodb_additional_mem_pool_size=20M
innodb_log_buffer_size=128M
innodb_flush_method=O_DIRECT
innodb_file_format=Barracuda
innodb_io_capacity=2000
log_bin_trust_function_creators=1
innodb_purge_threads=1
innodb_purge_batch_size=32
innodb_old_blocks_pct=75
transaction_isolation=READ-COMMITTED
#innodb_read_io_threads=8
#innodb_write_io_threads=8
[mysqldump]
quick
max_allowed_packet=128M
myisam_max_sort_sort_file_size=2G
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 64M
sort_buffer_size =256K
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
从库(slave)配置:
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
[client]
port = 3306
socket = /opt/mysql/data/mysql.sock
default-character-set = utf8
################Basic############
[mysqld]
server-id = 2
port = 3306
socket = /opt/mysql/data/mysql.sock
skip-external-locking
skip-name-resolve
default-storage-engine=INNODB
character-set-server=utf8
wait_timeout=500
connect_timeout=20
interactive_timeout=500
back_log=500
event_scheduler=ON
##########binlog##########
expire-logs-days=5
log-bin=mysql-bin
binlog_format = ROW
log_slave_updates=true
gtid-mode=on
enforce-gtid-consistency=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-workers=2
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
report-port=3306
report-host=SLAVE
##############半同步#####################
rpl_semi_sync_slave_enabled=1
##################################
max_binlog_size=128M
binlog_cache_size=2M
sync_binlog=1
#################slow log ###########
slow-query_log=1
slow-query_log_file=/opt/mysql/logs/mysql.slow
long_query_time=2
####################error log####
log_error=/opt/mysql/logs/error.log
#################per_thread_buffers#############
max_connections=1024
max_user_connections=2000
max_connect_errors=10000
key_buffer_size=64M
max_allowed_packet=128M
table_open_cache=6144
table_definition_cache=4096
sort_buffer_size=512k
read_buffer_size=512k
read_rnd_buffer_size=512k
join_buffer_size=512k
tmp_table_size=64M
max_heap_table_size=64M
query_cache_type=0
query_cache_size=0
bulk_insert_buffer_size=32M
thread_cache_size=64
thread_concurrency=32
thread_stack=256K
################INNODB################
innodb_data_home_dir = /opt/mysql/data
innodb_log_group_home_dir = /opt/mysql/data
innodb_data_file_path = ibdata1:10M:autoextend
innodb_buffer_pool_size=2G
innodb_buffer_pool_instances = 4
innodb_flush_log_at_trx_commit=1
innodb_lock_wait_timeout=10
innodb_file_per_table
innodb_log_files_in_group=3
innodb_support_xa=1
innodb_sync_spin_loops=40
innodb_max_dirty_pages_pct=90
innodb_additional_mem_pool_size=16M
innodb_log_buffer_size=64M
innodb_flush_method=O_DIRECT
innodb_file_format=Barracuda
innodb_io_capacity=2000
log_bin_trust_function_creators=1
innodb_purge_threads=1
innodb_purge_batch_size=32
innodb_old_blocks_pct=75
transaction_isolation=READ-COMMITTED
#innodb_read_io_threads=8
#innodb_write_io_threads=8
[mysqldump]
quick
max_allowed_packet=128M
myisam_max_sort_sort_file_size=2G
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 64M
sort_buffer_size =256K
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
主从修改配置后,我们重启mysql数据库,在来查看半同步复制
主库查看半同步复制
从库查看半同步复制
上图说明半同步复制成功

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

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

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





Vous ne pourrez peut-être pas installer des ajouts d'invités sur une machine virtuelle dans OracleVirtualBox. Lorsque nous cliquons sur Périphériques> InstallGuestAdditionsCDImage, cela renvoie simplement une erreur comme indiqué ci-dessous : VirtualBox - Erreur : Impossible d'insérer le disque virtuel C : Programmation de fichiersOracleVirtualBoxVBoxGuestAdditions.iso dans la machine Ubuntu Dans cet article, nous comprendrons ce qui se passe lorsque vous Que faire lorsque vous Je ne peux pas installer les ajouts d'invités dans VirtualBox. Impossible d'installer les ajouts d'invités dans VirtualBox Si vous ne pouvez pas l'installer dans Virtua

Lorsque vous constatez qu'un ou plusieurs éléments de votre dossier de synchronisation ne correspondent pas au message d'erreur dans Outlook, cela peut être dû au fait que vous avez mis à jour ou annulé des éléments de réunion. Dans ce cas, vous verrez un message d'erreur indiquant que votre version locale des données est en conflit avec la copie distante. Cette situation se produit généralement dans l'application de bureau Outlook. Un ou plusieurs éléments du dossier que vous avez synchronisé ne correspondent pas. Pour résoudre le conflit, ouvrez les projets et retentez l'opération. Réparer Un ou plusieurs éléments dans les dossiers synchronisés ne correspondent pas à l'erreur Outlook Dans la version de bureau d'Outlook, vous pouvez rencontrer des problèmes lorsque des éléments du calendrier local entrent en conflit avec la copie du serveur. Heureusement, il existe des moyens simples d’aider

Si vous avez téléchargé avec succès le fichier d'installation de Baidu Netdisk, mais que vous ne parvenez pas à l'installer normalement, il se peut qu'il y ait une erreur dans l'intégrité du fichier du logiciel ou qu'il y ait un problème avec les fichiers résiduels et les entrées de registre. prenons-en soin pour les utilisateurs. Présentons l'analyse du problème selon lequel Baidu Netdisk est téléchargé avec succès mais ne peut pas être installé. Analyse du problème du téléchargement réussi de Baidu Netdisk mais qui n'a pas pu être installé 1. Vérifiez l'intégrité du fichier d'installation : Assurez-vous que le fichier d'installation téléchargé est complet et n'est pas endommagé. Vous pouvez le télécharger à nouveau ou essayer de télécharger le fichier d'installation à partir d'une autre source fiable. 2. Désactivez le logiciel antivirus et le pare-feu : Certains logiciels antivirus ou pare-feu peuvent empêcher le bon fonctionnement du programme d'installation. Essayez de désactiver ou de quitter le logiciel antivirus et le pare-feu, puis réexécutez l'installation.

Nous, les utilisateurs, devrions pouvoir comprendre la diversité de certaines fonctions lors de l'utilisation de cette plateforme. Nous savons que les paroles de certaines chansons sont très bien écrites. Parfois, nous l'écoutons même plusieurs fois et sentons que le sens est très profond. Donc, si nous voulons en comprendre le sens, nous voulons le copier directement et l'utiliser comme copywriting. Cependant, si nous voulons l'utiliser, nous le faisons. il vous reste encore besoin d'apprendre à copier des paroles. Je pense que vous n'avez tous aucune expérience de ces opérations, mais il est en effet un peu difficile de les utiliser sur votre téléphone portable. Donc, afin de vous donner une meilleure compréhension, aujourd'hui. l'éditeur est là pour vous aider. Une bonne explication de certaines des expériences d'exploitation ci-dessus. Si vous l'aimez également, venez jeter un œil avec l'éditeur.

L'installation d'applications Android sur Linux a toujours été une préoccupation pour de nombreux utilisateurs. Surtout pour les utilisateurs Linux qui aiment utiliser des applications Android, il est très important de maîtriser comment installer des applications Android sur les systèmes Linux. Bien qu'exécuter des applications Android directement sur Linux ne soit pas aussi simple que sur la plateforme Android, en utilisant des émulateurs ou des outils tiers, nous pouvons toujours profiter avec plaisir des applications Android sur Linux. Ce qui suit explique comment installer des applications Android sur les systèmes Linux.

Comprendre Linux Bashrc : fonction, configuration et utilisation Dans les systèmes Linux, Bashrc (BourneAgainShellruncommands) est un fichier de configuration très important, qui contient diverses commandes et paramètres qui sont automatiquement exécutés au démarrage du système. Le fichier Bashrc se trouve généralement dans le répertoire personnel de l'utilisateur et est un fichier caché. Sa fonction est de personnaliser l'environnement Bashshell pour l'utilisateur. 1. Environnement de configuration des fonctions Bashrc

Si vous avez utilisé Docker, vous devez comprendre les démons, les conteneurs et leurs fonctions. Un démon est un service qui s'exécute en arrière-plan lorsqu'un conteneur est déjà utilisé dans n'importe quel système. Podman est un outil de gestion gratuit permettant de gérer et de créer des conteneurs sans recourir à un démon tel que Docker. Par conséquent, il présente des avantages dans la gestion des conteneurs sans nécessiter de services backend à long terme. De plus, Podman ne nécessite pas d'autorisations au niveau racine pour être utilisé. Ce guide explique en détail comment installer Podman sur Ubuntu24. Pour mettre à jour le système, nous devons d'abord mettre à jour le système et ouvrir le shell du terminal d'Ubuntu24. Pendant les processus d’installation et de mise à niveau, nous devons utiliser la ligne de commande. un simple

Durant leurs études au lycée, certains élèves prennent des notes très claires et précises, prenant plus de notes que d’autres dans la même classe. Pour certains, prendre des notes est un passe-temps, tandis que pour d’autres, c’est une nécessité lorsqu’ils oublient facilement de petites informations sur quelque chose d’important. L'application NTFS de Microsoft est particulièrement utile pour les étudiants qui souhaitent sauvegarder des notes importantes au-delà des cours réguliers. Dans cet article, nous décrirons l'installation des applications Ubuntu sur Ubuntu24. Mise à jour du système Ubuntu Avant d'installer le programme d'installation d'Ubuntu, sur Ubuntu24, nous devons nous assurer que le système nouvellement configuré a été mis à jour. Nous pouvons utiliser le "a" le plus célèbre du système Ubuntu
