数据库第四次作业

数据库第四次作业

MGR
MySQL Group Replication(MGR)是MySQL官方在5.7.17版本引进的一个数据库高可用与
高扩展的解决方案,以插件形式提供,实现了分布式下数据的最终一致性,总结MGR特点如
下:
高一致性:基于分布式paxos协议实现组复制,保证数据一致性;
高容错性:自动检测机制,只要不是大多数节点都宕机就可以继续工作,内置防脑裂保护机
制;
高扩展性:节点的增加与移除会自动更新组成员信息,新节点加入后,自动从其他节点同步增
量数据,直到与其他节点数据一致;
高灵活性:提供单主模式和多主模式,单主模式在主库宕机后能够自动选主,所有写入都在主
节点进行,多主模式支持多节点写入

1,准备 三台机器

修改主机名

hostnamectl set-hostname mgr01

修改/etc/hosts

vim /etc/hosts
192.168.240.131 mgr01

关闭和禁用防火墙

systemctl stop firewalld.service 
systemctl disable firewalld.service

关闭和禁用SELinux

vim /etc/selinux/config 
SELINUX=permissive
setenforce 0

生成密钥对

ssh-keygen

传输密钥对

ssh-copy-id mgr01
ssh-copy-id mgr02
ssh-copy-id mgr03

验证免密登陆

ssh mgr03

重启

init 0

删除原有数据库

yum remove mysql-server -y
rm -rf /etc/my.cnf.d/
rm -rf /var/lib/mysql/
rm -rf /var/log/mysql/

安装数据库:每个机器都做

mount /dev/sr0 /mnt
yum install mysql-server -y
systemctl start mysqld
systemctl stop mysqld

二,第一个服务器:(主服务器)

编写配置文件:

cd /etc/my.cnf.d/
vim mysql-server.cnf 

追加内容:

disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"

#server_id确保每个机器不一样  
server_id=1
gtid_mode=ON
enforce_gtid_consistency=ON

log_bin=binlog
log_slave_updates=ON
binlog_format=ROW
master_info_repository=TABLE
relay_log_info_repository=TABLE
transaction_write_set_extraction=XXHASH64

plugin_load_add='group_replication.so'

#uuid确保每个机器都一样,可以用uuidgen生成
group_replication_group_name="8e1969ec-3ae3-4bd1-b80f-6de58b837ff5"
group_replication_start_on_boot=off

#当前主机的主机名和复制组端口,建议用主机名
group_replication_local_address= "mgr01:33061"
group_replication_group_seeds= "mgr01:33061,mgr02:33061,mgr03:33061"
group_replication_bootstrap_group=off

启动数据库服务

[root@mgr01 ~]# systemctl start mysqld
[root@mgr01 ~]# mysql -uroot -p
mysql> use mysql;

创建复制组的用户

mysql> SET SQL_LOG_BIN=0;
mysql> CREATE USER rpl_user@'%' IDENTIFIED BY 'Test@1234';
mysql> GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
mysql> GRANT BACKUP_ADMIN ON *.* TO rpl_user@'%';
mysql> FLUSH PRIVILEGES;
mysql> SET SQL_LOG_BIN=1;

复制用户凭据到复制组通道

CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='Test@1234' FOR CHANNEL 'group_replication_recovery';

查看复制组插件是否装载

SHOW PLUGINS;

如果有以下内容则表示已装载

 group_replication           | ACTIVE   | GROUP REPLICATION  | group_replication.so | GPL   

启动复制组

SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION USER='rpl_user', PASSWORD='Test@1234';
SET GLOBAL group_replication_bootstrap_group=OFF;

查看复制组

 SELECT * FROM performance_schema.replication_group_members;
 +---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
| group_replication_applier | a49b5c8f-fd44-11eb-a9e2-000c29707010 | mgr01       |        3306 | ONLINE       | PRIMARY     | 8.0.21         |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
1 row in set (0.00 sec)

三,添加第二台的相关配置

复制第一台服务器的mysql配置

[root@mgr02 ~]# cd /etc/my.cnf.d/
[root@mgr02 my.cnf.d]# rm -rf mysql-server.cnf 
[root@mgr02 my.cnf.d]# scp mgr01:/etc/my.cnf.d/mysql-server.cnf 
只需要编辑以下两个相关配置:
server_id=2
group_replication_local_address= "mgr02:33061"

启动mysql服务器

[root@mgr02 my.cnf.d]# systemctl start mysqld

连接服务器

[root@mgr02 my.cnf.d]# mysql -uroot -p

切换数据库

mysql> use mysql;

#创建复制组用户

SET SQL_LOG_BIN=0;
CREATE USER rpl_user@'%' IDENTIFIED BY 'Test@1234';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
GRANT BACKUP_ADMIN ON *.* TO rpl_user@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;

#复制用户凭据到复制组通道

mysql> CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='Test@1234' FOR CHANNEL 'group_replication_recovery';

#查看复制组插件是否装载

mysql> SHOW PLUGINS;

如果有以下内容则表示已装载
group_replication | ACTIVE | GROUP REPLICATION | group_replication.so | GPL

#启动复制组

mysql> START GROUP_REPLICATION USER='rpl_user', PASSWORD='Test@1234';

#查看复制组

mysql> SELECT * FROM performance_schema.replication_group_members;

+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
| group_replication_applier | a49b5c8f-fd44-11eb-a9e2-000c29707010 | mgr01       |        3306 | ONLINE       | PRIMARY     | 8.0.21         |
| group_replication_applier | a9eed5dc-fd44-11eb-aec2-000c29de2f00 | mgr02       |        3306 | ONLINE       | SECONDARY   | 8.0.21         |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
2 rows in set (0.00 sec)

第三台和第二台服务器的配置是一样的

如果需要停止复制组,则使用:

mysql> stop GROUP_REPLICATION
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值