mysql(传统主从复制,jtid的半同步复制,数据库的组复制)

本文深入探讨了MySQL数据库的复制机制,包括异步、半同步和全同步复制的特点与配置方法,以及如何通过GTID实现更稳定的组复制。通过详细步骤,指导读者如何在多个服务器间搭建主从及组复制环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库的复制:
复制机制,二进制复制
原理:master mysql-bin00000往日志中写东西 slave上:在mysql-bin-rely中形成中继日志 SQL 回放中介日志内容 slave再把操作做一遍 IO线程与master同步生成中继日志 SQL:负责回放

主从复制分为,异步复制,半同步复制,全同步复制
jtid包括默认为异步复制,半同步复制,全同步复制 比较稳定 当作事物来处理

数据库的异步复制,效率高,不稳定
半同步复制,稳定
组复制,十分稳定(如果有都有,没有都没有)

主从同步复制的方式:默认是异步的
异步的是:master只需要完成自己的数据库操作,至于slave是否收到二进制文件
:原理,依靠二进制日志

安装,数据库软件包我们用5.7.24包

基于jtid的
主从复制默认异步复制
可以设置为半同步复制
master(server1)
打开mysql:

INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master.so’;

SELECT PLUGIN_NAME, PLUGIN_STATUS
FROM INFORMATION_SCHEMA.PLUGINS
WHERE PLUGIN_NAME LIKE ‘%semi%’;

SET GLOBAL rpl_semi_sync_master_enabled =1

SHOW VARIABLES LIKE ‘rpl_semi_sync’;
半同步复制超过等待时间变为异步复制

use westos
mysql> insert into usertb values (‘user4’,‘123’);
Query OK, 1 row affected (10.02 sec)
mysql> insert into usertb values (‘user5’,‘123’);
Query OK, 1 row affected (0.03 sec)

slave(server2)
配置配置文件
vim /etc/my.conf

gtid_mode=ON
enforce-gtid-consistency=true
打开mysql:
INSTALL PLUGIN rpl_semi_sync_slave SONAME ‘semisync_slave.so’;

SELECT PLUGIN_NAME, PLUGIN_STATUS
FROM INFORMATION_SCHEMA.PLUGINS
WHERE PLUGIN_NAME LIKE ‘%semi%’;

SET GLOBAL rpl_semi_sync_slave_enabled =1
STOP SLAVE IO_THREAD;
START SLAVE IO_THREAD;

SHOW VARIABLES LIKE ‘rpl_semi_sync’;

#STOP SLAVE IO_THREAD;

在这里插入图片描述

在这里插入图片描述

修改配置文件

在这里插入图片描述

在这里插入图片描述
初始化数据库;
cat /var/log/mysqld.log | grep password看初始密码

mysql_secure_installation初始化安装

mysql -uroot -pGAOjiahao+123

在这里插入图片描述
安装master的插件

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
server2 一样的步骤,修改配置文件

在这里插入图片描述

重启数据库
在这里插入图片描述

初始化完成后登陆
在这里插入图片描述

安装slave插件
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
建立主备数据库
传统的主从复制
server1
主数据库

vim /etc/my.cnf
cat /var/log/mysqld.log | grep password看初始密码

mysql_secure_installation初始化安装

mysql -uroot -pGAOjiahao+123

CREATE USER ‘repl’@‘172.25.19.%’ IDENTIFIED BY ‘GAOjiahao+123’;

GRANT REPLICATION SLAVE ON . TO ‘repl’@‘172.25.19.%’;

flush privileges;

creat database westos;

use westos;

create table usertb (
-> username varchar(10) not null,
-> passwd varchar(20) not null);

use westos;
insert into usertb values(‘user1’,‘123’);
select * from usertb;

server2
备数据库

CHANGE MASTER TO
-> MASTER_HOST=‘172.25.19.1’,
-> MASTER_USER=‘repl’,
-> MASTER_PASSWORD=‘GAOjiahao+123’,
-> MASTER_LOG_FILE=‘mysql-bin.000002’,
-> MASTER_LOG_POS=1894;

show slave status\G

show databases;

select * from westos.usertb;

在这里插入图片描述

在这里插入图片描述

初始化数据库步骤
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

登陆数据库
在这里插入图片描述

在这里插入图片描述

在数据库中插入数据

在这里插入图片描述

登陆server2的数据库
在这里插入图片描述

设置主配置数据库为server1
在这里插入图片描述

两个线程都为yes

在这里插入图片描述

可以看见主数据库的文件同步过来

在这里插入图片描述

###################全同步也就是组复制#############

大家都是master,谁插入的谁是主master,这个主master会等待所有的节点返回确认信号,master(因为master节点一直在等待)才开始工作

注意:/etc/my.cnf文件里面写的uuid跟各个master的uuid都有不一样

修改配置文件
在这里插入图片描述

[root@meng1 mnt]# cat /var/lib/mysql/auto.cnf
[auto]
server-uuid=a4b91867-b023-11e9-928e-525400a8fe0b
[root@meng1 mnt]# vim /etc/my.cnf

35 server_id=1 #server2是2,meng3是3,依次类推
36 gtid_mode=ON
37 enforce_gtid_consistency=ON
38 master_info_repository=TABLE
39 relay_log_info_repository=TABLE
40 binlog_checksum=NONE
41 log_slave_updates=ON
42 log_bin=binlog
43 binlog_format=ROW
44
45
46 transaction_write_set_extraction=XXHASH64
47 loose-group_replication_group_name=“4b91867-b023-11e9-928e-525400a8fe0b”
48 loose-group_replication_start_on_boot=off
49 loose-group_replication_local_address= “172.25.19.1:33061” #server2是2,server3是3,依次类推
50 loose-group_replication_group_seeds= “172.25.19.1:33061,172.25.19.2:33061,172.2 5.11.3:33061”
51 loose-group_replication_bootstrap_group=off
52 loose-group_replication_ip_whitelist=“127.0.0.1,172.25.19.0/24”
53 loose-group_replication_enforce_update_everywhere_checks=ON
54 loose-group_replication_single_primary_mode=OFF

在这里插入图片描述
systemctl start mysqld

server2,server3 装上mysql
在这里插入图片描述

修改配置文件

在这里插入图片描述

systemctl start mysqld

在这里插入图片描述

删去原来的库文件
注意先要关闭库,再删

在这里插入图片描述

初始库
[ grep password /var/log/mysqld.log
mysql -uroot -p
在这里插入图片描述
server1上:
mysql> show databases;
±-------------------+
| Database |
±-------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
±-------------------+
4 rows in set (0.00 sec)

mysql> set sql_log_bin=0;

mysql> create user rpl_user@’ %’ identified by ‘GAOjiahao+123’;

mysql> GRANT REPLICATION SLAVE ON . TO rpl_user@’%’;

mysql> FLUSH PRIVILEGES;

mysql> set sql_log_bin=1;

mysql> CHANGE MASTER TO MASTER_USER=‘rpl_user’,MASTER_PASSWORD=‘GAOjiahao+123’ FOR CHANNEL ‘group_replication_recovery’;

mysql> INSTALL PLUGIN group_replication SONAME ‘group_replication.so’;

mysql> show plugins;

mysql> SET GLOBAL group_replication_bootstrap_group=ON;只在开启节点作

mysql> SET GLOBAL group_replication_allow_local_disjoint_gtids_join=on;只在开启节点作

mysql> START GROUP_REPLICATION;开启组

mysql> SET GLOBAL group_replication_bootstrap_group=OFF;

mysql> SELECT * FROM performance_schema.replication_group_members;

mysql> create database test;

mysql> use test

mysql> CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 TEXT NOT NULL);

mysql> INSERT INTO t1 VALUES (1, ‘Luis’);

mysql> select * from t1;

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

修改server2为文件

在这里插入图片描述

停库删库

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

初始库
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

如果不删库可以将库停下,用这个命令mysqldump --all-databases --single-transaction --routines --events --host=127.0.0.1 --port=3306 --user=root --password=Wsp+123ld > dbdump.db
scp dbdump.db server2:/mnt

mysql -p < dbdump.db
将主库文件输出到文件中,,再发给从库,,,从库将文件倒入库文件就好

在这里插入图片描述

在这里插入图片描述
CHANGE MASTER TO MASTER_USER=‘rpl_user’,MASTER_PASSWORD=‘Wsp+123ld’ FOR CHANNEL ‘group_replication_recovery’;以主用户身份加入数据库组

INSTALL PLUGIN group_replication SONAME ‘group_replication.so’;
如果没有组复制的插件:

有时候报错,说硬件有问题:
ERROR 1030 (HY000): Got error 1 from storage engine

此时退出数据库,重启一下服务:

[ systemctl restart mysqld
在这里插入图片描述

mysql -uroot -pWsp+123ld

查看插件,重启组复制服务

mysql> START GROUP_REPLICATION;
Query OK, 0 rows affected (5.92 sec)

mysql> SELECT * FROM performance_schema.replication_group_members;

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

CHANGE MASTER TO MASTER_USER=‘rpl_user’,MASTER_PASSWORD=‘Wsp+123ld’ FOR CHANNEL ‘group_replication_recovery’;以主用户身份加入数据库组

在这里插入图片描述

查看组员状态
在这里插入图片描述

有成员

在这里插入图片描述

server1建立数据

在这里插入图片描述

server3上能同步

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值