Rumah pangkalan data tutorial mysql mysql5.623GTID主从复制+半同步复制安装与配置

mysql5.623GTID主从复制+半同步复制安装与配置

Jun 07, 2016 pm 02:56 PM
segerak salinan Pasang Konfigurasi

一、 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可以知道事务最初是在哪个实例上提交的

2GTID的存在方便了ReplicationFailover

 

二、介绍半同步复制

半同步复制可以作为默认的异步复制的替代方案,用以提高数据完整性。

使用半同步复制,提交操作只有当一个从服务器已经接收到更新,或者超时后才返回客户端。因此,它可以确保数据存在于主服务器以及至少一个从服务器中(注意,提交操作返回时,从服务器已经接收到更新,但不一定已经应用了该更新)。

可以组合使用不同的复制模式,因此一些从服务器配置为异步复制,而其他从服务器使用半同步复制。这样最终意味着开发人员/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

5mysql配置文件

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修改成2master要不一样,否则会报错

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

3masterslave配置好重启

/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功能

wKiom1U0meaS6SXLAAL6lQlz5gg529.jpg

在主库查看连接的slave主机

wKiom1U0mfGgZfQJAADVgw5TEZI873.jpg

查看从库复制状态

 

wKioL1U0m5ngKJJcAALYnWsDua8424.jpg

wKioL1U0m92jLN1iAAF43QOMhf8279.jpg

 

以上说明成功

下面是我修改一些参数配置为了优化,大家可以根据自己环境来修改

主库(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数据库,在来查看半同步复制

主库查看半同步复制

wKioL1U0nHeADXQuAAFQYIFbUSE789.jpg

从库查看半同步复制

wKiom1U0mynAmHcVAAD9TZ7rmwE168.jpg

wKioL1U0nJDwQ7lpAACZYJN_OPs582.jpg

上图说明半同步复制成功

 

 

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Tidak dapat memasang tambahan tetamu dalam VirtualBox Tidak dapat memasang tambahan tetamu dalam VirtualBox Mar 10, 2024 am 09:34 AM

Anda mungkin tidak dapat memasang tambahan tetamu pada mesin maya dalam OracleVirtualBox. Apabila kita mengklik pada Devices>InstallGuestAdditionsCDImage, ia hanya membuang ralat seperti yang ditunjukkan di bawah: VirtualBox - Ralat: Tidak dapat memasukkan cakera maya C: Programming FilesOracleVirtualBoxVBoxGuestAdditions.iso ke dalam mesin ubuntu Dalam siaran ini kita akan memahami apa yang berlaku apabila anda Apa yang perlu dilakukan apabila anda tidak boleh memasang tambahan tetamu dalam VirtualBox. Tidak dapat memasang tambahan tetamu dalam VirtualBox Jika anda tidak boleh memasangnya dalam Virtua

Satu atau lebih item dalam folder yang anda segerakkan tidak sepadan dengan ralat Outlook Satu atau lebih item dalam folder yang anda segerakkan tidak sepadan dengan ralat Outlook Mar 18, 2024 am 09:46 AM

Apabila anda mendapati bahawa satu atau lebih item dalam folder penyegerakan anda tidak sepadan dengan mesej ralat dalam Outlook, ini mungkin disebabkan anda mengemas kini atau membatalkan item mesyuarat. Dalam kes ini, anda akan melihat mesej ralat yang mengatakan bahawa versi tempatan anda data bercanggah dengan salinan jauh. Keadaan ini biasanya berlaku dalam aplikasi desktop Outlook. Satu atau lebih item dalam folder yang anda segerakkan tidak sepadan. Untuk menyelesaikan konflik, buka projek dan cuba operasi semula. Betulkan Satu atau lebih item dalam folder yang disegerakkan tidak sepadan dengan ralat Outlook Dalam versi desktop Outlook, anda mungkin menghadapi masalah apabila item kalendar tempatan bercanggah dengan salinan pelayan. Nasib baik, walaupun, terdapat beberapa cara mudah untuk membantu

Apakah yang perlu saya lakukan jika Baidu Netdisk berjaya dimuat turun tetapi tidak boleh dipasang? Apakah yang perlu saya lakukan jika Baidu Netdisk berjaya dimuat turun tetapi tidak boleh dipasang? Mar 13, 2024 pm 10:22 PM

Jika anda telah berjaya memuat turun fail pemasangan Baidu Netdisk, tetapi tidak dapat memasangnya seperti biasa, mungkin terdapat ralat dalam integriti fail perisian atau terdapat masalah dengan baki fail dan entri pendaftaran Biarkan tapak ini mengambil jaga ia untuk pengguna Mari perkenalkan analisis masalah yang Baidu Netdisk berjaya dimuat turun tetapi tidak boleh dipasang. Analisis masalah yang berjaya dimuat turun oleh Baidu Netdisk tetapi tidak dapat dipasang 1. Semak integriti fail pemasangan: Pastikan fail pemasangan yang dimuat turun lengkap dan tidak rosak. Anda boleh memuat turunnya semula atau cuba memuat turun fail pemasangan daripada sumber lain yang dipercayai. 2. Matikan perisian anti-virus dan tembok api: Sesetengah perisian anti-virus atau program tembok api mungkin menghalang program pemasangan daripada berjalan dengan betul. Cuba lumpuhkan atau keluar dari perisian anti-virus dan tembok api, kemudian jalankan semula pemasangan

Bagaimana untuk menyalin lirik dari QQ Music Bagaimana untuk menyalin lirik Bagaimana untuk menyalin lirik dari QQ Music Bagaimana untuk menyalin lirik Mar 12, 2024 pm 08:22 PM

Kami pengguna seharusnya dapat memahami kepelbagaian beberapa fungsi apabila menggunakan platform ini Kami tahu bahawa lirik beberapa lagu ditulis dengan sangat baik. Kadang-kadang kita mendengarnya beberapa kali dan merasakan maknanya sangat mendalam, jadi jika kita ingin memahami maksudnya, kita ingin menyalinnya secara langsung dan menggunakannya sebagai copywriting masih perlu Anda hanya perlu belajar bagaimana untuk menyalin lirik Saya percaya bahawa semua orang sudah biasa dengan operasi ini, tetapi ia memang agak sukar untuk beroperasi pada telefon bimbit Jadi untuk memberi anda pemahaman yang lebih baik, hari ini editor ada di sini untuk membantu anda. Penjelasan yang baik tentang beberapa pengalaman operasi di atas. ,

Bagaimana untuk memasang apl Android pada Linux? Bagaimana untuk memasang apl Android pada Linux? Mar 19, 2024 am 11:15 AM

Memasang aplikasi Android di Linux sentiasa menjadi kebimbangan ramai pengguna Terutamanya bagi pengguna Linux yang suka menggunakan aplikasi Android, adalah sangat penting untuk menguasai cara memasang aplikasi Android pada sistem Linux. Walaupun menjalankan aplikasi Android secara langsung pada Linux tidak semudah pada platform Android, dengan menggunakan emulator atau alatan pihak ketiga, kami masih boleh menikmati aplikasi Android di Linux dengan gembira. Berikut akan memperkenalkan cara memasang aplikasi Android pada sistem Linux.

Fahami Linux Bashrc: fungsi, konfigurasi dan penggunaan Fahami Linux Bashrc: fungsi, konfigurasi dan penggunaan Mar 20, 2024 pm 03:30 PM

Memahami Linux Bashrc: Fungsi, Konfigurasi dan Penggunaan Dalam sistem Linux, Bashrc (BourneAgainShellruncommands) ialah fail konfigurasi yang sangat penting, yang mengandungi pelbagai arahan dan tetapan yang dijalankan secara automatik apabila sistem dimulakan. Fail Bashrc biasanya terletak dalam direktori rumah pengguna dan merupakan fail tersembunyi Fungsinya adalah untuk menyesuaikan persekitaran Bashshell untuk pengguna. 1. Persekitaran tetapan fungsi Bashrc

Bagaimana untuk memasang Podman pada Ubuntu 24.04 Bagaimana untuk memasang Podman pada Ubuntu 24.04 Mar 22, 2024 am 11:26 AM

Jika anda telah menggunakan Docker, anda mesti memahami daemon, bekas dan fungsinya. Daemon ialah perkhidmatan yang berjalan di latar belakang apabila bekas sudah digunakan dalam mana-mana sistem. Podman ialah alat pengurusan percuma untuk mengurus dan mencipta bekas tanpa bergantung pada mana-mana daemon seperti Docker. Oleh itu, ia mempunyai kelebihan dalam menguruskan kontena tanpa memerlukan perkhidmatan backend jangka panjang. Selain itu, Podman tidak memerlukan kebenaran peringkat akar untuk digunakan. Panduan ini membincangkan secara terperinci cara memasang Podman pada Ubuntu24. Untuk mengemas kini sistem, kami perlu mengemas kini sistem terlebih dahulu dan membuka shell Terminal Ubuntu24. Semasa kedua-dua proses pemasangan dan peningkatan, kita perlu menggunakan baris arahan. yang mudah

Cara Memasang dan Menjalankan Apl Nota Ubuntu pada Ubuntu 24.04 Cara Memasang dan Menjalankan Apl Nota Ubuntu pada Ubuntu 24.04 Mar 22, 2024 pm 04:40 PM

Semasa belajar di sekolah menengah, sesetengah pelajar mengambil nota yang sangat jelas dan tepat, mengambil lebih banyak nota daripada yang lain dalam kelas yang sama. Bagi sesetengah orang, mencatat nota adalah hobi, manakala bagi yang lain, ia adalah satu keperluan apabila mereka mudah melupakan maklumat kecil tentang apa-apa perkara penting. Aplikasi NTFS Microsoft amat berguna untuk pelajar yang ingin menyimpan nota penting di luar kuliah biasa. Dalam artikel ini, kami akan menerangkan pemasangan aplikasi Ubuntu pada Ubuntu24. Mengemas kini Sistem Ubuntu Sebelum memasang pemasang Ubuntu, pada Ubuntu24 kita perlu memastikan bahawa sistem yang baru dikonfigurasikan telah dikemas kini. Kita boleh menggunakan "a" yang paling terkenal dalam sistem Ubuntu

See all articles