Rumah  >  Artikel  >  pangkalan data  >  Ringkasan dan susunan MySQL berdasarkan pembinaan tuan-hamba GTID

Ringkasan dan susunan MySQL berdasarkan pembinaan tuan-hamba GTID

WBOY
WBOYke hadapan
2022-08-26 11:56:332458semak imbas

Pembelajaran yang disyorkan: tutorial video mysql

Gunakan xtarbackup untuk menyegerakkan data, kemudian tetapkan master dan slave berdasarkan GTID.

1. Gunakan xtarbackup untuk membuat sandaran pangkalan data

1.1 Kelebihan

Gunakan xtarbackup untuk penyediaan awal master dan slave kerana xtarbackup membuat sandaran dan memulihkan data dengan sangat cepat, terutamanya sesuai untuk jumlah data Ia mempunyai sandaran pangkalan data yang besar, dan pemasangannya sangat mudah, dan penggunaannya juga sangat mudah.... (Bala, bala, saya tidak boleh mengada-ada).

1.2 Pemasangan

Pilih versi khusus mengikut situasi khusus anda. Hanya ikuti beberapa langkah ini untuk memasangnya. Bukankah ia sangat mudah...

# rpm -Uvh https://www.percona.com/redir/downloads/percona-release/redhat/percona-release-0.1-3.noarch.rpm
# yum list | grep percona
# yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL 
# rpm -Uvh ftp://rpmfind.net/linux/epel/6/x86_64/libev-4.03-3.el6.x86_64.rpm
# yum install percona-xtrabackup –y

1.3 Gunakan

1.3.1 Sandaran biasa

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 /data/backupMysql/

1.3 .2 sandaran tar

(1), sandaran ke setempat

# 不压缩
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=tar /data/backupMysql/>/data/mysql.tar

# 压缩
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=tar /data/backupMysql/ | gzip >/data/mysql.tar.gz

(2), sandaran ke jauh

# 不压缩
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=tar /data/backupMysql/ | ssh root@192.168.1.7 \ "cat - >/data/mysql.tar

# 压缩
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=tar /data/backupMysql/ | | ssh root@192.168.1.7 \ "gzip >/data/mysql.tar.gz

(3), kaedah penyahmampatan

# 未经过压缩的文件解压
tar xvf mysql.tar -C /data

# 压缩过的文件解压
tar zxvf mysql.tar.gz -C /data

1.3.3 sandaran xbstream

(1), sandaran ke setempat

# 不压缩
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=xbstream /data/backupMysql/>/data/mysql.xbstream

# 压缩
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=xbstream --compress /data/backupMysql/ >/data/mysql_compress.xbstream

(2), sandaran perlu dilakukan dari jauh

# 不压缩
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=xbstream /data/backupMysql/| ssh root@192.168.1.7 "xbstream -x -C /backup/stream"

# 压缩
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=xbstream --compress /data/backupMysql/ | ssh root@192.168.1.7 "xbstream -x -C /backup/stream"

(3), kaedah penyahmampatan

#### 未压缩的
xbstream -x < mysql.xbstream -C /data

#### 压缩过的
# 1、先解压xbstream
xbstream -x < mysql_compress.xbstream -C /data
# 2、再解压qp压缩格式
for bf in `find . -iname "*\.qp"`; do qpress -d $bf $(dirname $bf) && rm $bf; done

注:如果xtrabackup版本大于2.1.4,可以直接通过以下方式解压第二步。
innobackupex --decompress /data

1.3.4 Pulihkan

Mula-mula nyahmampat pakej termampat sandaran asal ke direktori, dan kemudian laksanakan pernyataan berikut untuk memulihkan.

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --copy-back /var/lib/mysql/backup/

Nota: Anda boleh menggunakan alat skrin belah semasa sandaran, penyahmampatan dan pemulihan saya suka menggunakan skrin.

2. Penyegerakan data berdasarkan GTID

2.1 Konsep GTID

  • 1. Pengecam transaksi global: pengecam transaksi global.
  • 2. GTID sepadan dengan satu transaksi dan merupakan ID unik di peringkat global.
  • 3. GTID hanya dilaksanakan sekali pada pelayan untuk mengelakkan kekeliruan data atau ketidakkonsistenan tuan-hamba yang disebabkan oleh pelaksanaan berulang.
  • 4. GTID digunakan untuk menggantikan kaedah replikasi tradisional dan MASTER_LOG_FILE MASTER_LOG_POS tidak lagi digunakan untuk mendayakan replikasi. Sebaliknya, gunakan MASTER_AUTO_POSTION=1 untuk mula menyalin.
  • 5. Ia disokong bermula dari MySQL-5.6.5 dan akan dipertingkatkan selepas MySQL-5.6.10.
  • 6. Di bahagian hamba tradisional, binlog tidak perlu dihidupkan, tetapi dalam GTID, binlog di bahagian hamba mesti dihidupkan untuk merekodkan GTID yang dilaksanakan (wajib).

2.2 Komposisi GTID

GTID = source_id:transaction_id source_id: digunakan untuk mengenal pasti pelayan asal, iaitu server_uuid unik pelayan mysql Memandangkan GTID akan diluluskan kepada hamba, ia juga boleh digunakan Difahami sebagai ID sumber.

transaction_id: Ia ialah nombor jujukan transaksi yang telah diserahkan pada pelayan semasa Ia biasanya merupakan jujukan meningkat sendiri bermula dari 1. Satu nilai sepadan dengan satu transaksi.

Contoh: 3E11FA47-71CA-11E1-9E33-C80AA9429562:23 Rentetan pertama ialah server_uuid pelayan, iaitu, 3E11FA47-71CA-11E1-9E33-C80AA29429 berikut 🎜>

2.3 Prinsip GTID

1 Apabila transaksi dilaksanakan dan diserahkan di bahagian perpustakaan utama, GTID dijana dan direkodkan dalam binlog bersama-sama.

2. Selepas binlog dipindahkan ke hamba dan disimpan dalam relaylog hamba, baca nilai GTID dan tetapkan pembolehubah gtid_next, yang memberitahu hamba nilai GTID seterusnya untuk dilaksanakan.

3. Benang sql memperoleh GTID daripada log geganti, dan kemudian membandingkan binlog pada bahagian hamba untuk melihat sama ada GTID wujud.

4. Jika terdapat rekod, ini bermakna transaksi GTID telah dilaksanakan, dan hamba akan mengabaikannya.

5. Jika tiada rekod, hamba akan melaksanakan transaksi GTID dan merekodkan GTID ke binlognya sendiri Sebelum membaca dan melaksanakan transaksi, ia akan terlebih dahulu menyemak bahawa sesi lain memegang GTID untuk memastikannya ia tidak dilaksanakan berulang kali.

6. Semasa proses penghuraian, ia akan dinilai sama ada terdapat kunci utama. Jika tidak, gunakan indeks sekunder Jika tidak, gunakan semua imbasan.

2.4 Kelebihan GTID

    1. Pelaksanaan failover yang lebih mudah, tidak perlu mencari log_file dan log_pos seperti sebelum ini.
  • 2. Lebih mudah untuk membina replikasi tuan-hamba.
  • 3. Lebih selamat daripada penyalinan tradisional.
  • 4. GTID adalah berterusan tanpa lubang, memastikan ketekalan data dan kehilangan sifar.
2.5 Proses pembinaan khusus

Untuk konfigurasi GTID, ubah suai terutamanya beberapa parameter penting yang berkaitan dengan ciri GTID dalam fail konfigurasi Versi mysql disyorkan untuk menjadi mysql-5.6. 5 atau ke atas.

2.5.1 Buka Gtid induk

Konfigurasi utama adalah seperti berikut:

[mysqld]
#GTID:
server_id=135                #服务器id
gtid_mode=on                 #开启gtid模式
enforce_gtid_consistency=on  #强制gtid一致性,开启后对于特定create table不被支持

#binlog
log_bin=master-binlog
log-slave-updates=1    
binlog_format=row            #强烈建议,其他格式可能造成数据不一致

#relay log
skip_slave_start=1
2.5.2 Lakukan sandaran data pada induk

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=tar /data/backupMysql/ | | ssh root@192.168.1.7 \ "gzip >/data/mysql.tar.gz
2.5.3 Nyahmampat data yang disandarkan

tar zxvf /data/mysql.tar.gz -C /data/baskup
2.5.4 Konfigurasikan fail konfigurasi hamba

[mysqld]
#GTID:
gtid_mode=on
enforce_gtid_consistency=on
server_id=143

#binlog
log-bin=slave-binlog
log-slave-updates=1
binlog_format=row      #强烈建议,其他格式可能造成数据不一致

#relay log
skip_slave_start=1
2.5.5 Pulihkan data

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --copy-back /data/backup
2.5.6 Dapatkan nod GTID

more /data/backup/2018-02-08_15-03-18/xtrabackup_binlog_info
2.5.7 Konfigurasikan tuan-hamba

(1), beri kuasa pada tuan

grant replication slave on *.* to slaveuser@&#39;192.168.1.7&#39;  identified by "c2xhdmV1c2Vy";

(2), konfigurasikan pada hamba

stop slave;
SET GLOBAL gtid_purged="c5b5ffe7-ce66-11e7-9a19-00163e00013d:1-515758";
CHANGE MASTER TO MASTER_HOST=&#39;192.168.1.6&#39;,MASTER_PORT=3306,MASTER_USER=&#39;slaveuser&#39;,MASTER_PASSWORD=&#39;c2xhdmV1c2Vy&#39;,MASTER_AUTO_POSITION=1;
start slave;

2.6 已运行经典复制mysql服务器转向GTID复制

  • a、按本文2.5.2描述配置参数文件;
  • b、所有服务器设置global.read_only参数,等待主从服务器同步完毕;  mysql> SET @@global.read_only = ON;
  • c、依次重启主从服务器;
  • d、使用change master 更新主从配置;mysql> CHANGE MASTER TO > MASTER_HOST = host,  > MASTER_PORT = port, > MASTER_USER = user,   > MASTER_PASSWORD = password,   > MASTER_AUTO_POSITION = 1;
  • e、从库开启复制  mysql> START SLAVE; f、验证主从复制

推荐学习:mysql视频教程

Atas ialah kandungan terperinci Ringkasan dan susunan MySQL berdasarkan pembinaan tuan-hamba GTID. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:jb51.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam