企业运维实战 LAMP架构 第五篇 (mysql配置管理、mysql组复制、mysql路由器)

mysql配置管理

延迟复制

进入slave端的mysql

mysql> stop slave;
mysql> CHANGE MASTER TO MASTER_DELAY = 30;
mysql> start slave;

查看slave状态

mysql> show slave status\G;

主从复制已经打开
在这里插入图片描述可以看到已经设置延迟复制
在这里插入图片描述当有数据需要复制时候,会等待30再复制
在这里插入图片描述

并行复制(MTS)

修改mysql的配置参数
在这里插入图片描述重启mysql

此时查看进程

mysql> show processlist;

在这里插入图片描述

慢查询

首先查询一下慢查询的变量值

mysql> show variables like 'slow%';

将慢查询打开

set global slow_query_log=1;

在这里插入图片描述查询一下多少秒会加入慢查询日志

mysql> show variables like 'long%';

需要十秒
在这里插入图片描述

此时模拟实验

mysql> select sleep(10); #睡眠十秒

去查看满查询日志,可以看到这个日志

cat /data/mysql/server2-slow.log

在这里插入图片描述

mysql组复制

主从复制原理图
在这里插入图片描述
组复制原理图

All servers are set to read-write mode when joining the group.
在这里插入图片描述
在这个mysql所有节点都进行如下设置:

首先先把mysql关闭

/etc/init.d/mysqld stop

清空数据存储目录

rm -fr /data/mysql/

编辑配置文件

vim /etc/my.cnf

[mysqld]

server_id=1   ###根据节点修改
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW

plugin_load_add='group_replication.so'
transaction_write_set_extraction=XXHASH64
group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
group_replication_start_on_boot=off
group_replication_local_address= "server1:33061"   #根据节点修改,必须写主机名,然后设置解析
group_replication_group_seeds= "server1:33061,server2:33061,server3:33061" #根据节点修改,必须写主机名,然后设置解析
group_replication_bootstrap_group=off

group_replication_ip_whitelist="172.25.21.0/24,127.0.0.1/8"
group_replication_single_primary_mode=OFF
group_replication_enforce_update_everywhere_checks=ON

进行无密码的数据库初始化,并且指定用户为mysql

mysqld --initialize-insecure --user=mysql

打开数据库

/etc/init.d/mysqld start

进入数据库

mysql

查看插件是否已经开启

mysql> SHOW PLUGINS;

在这里插入图片描述

mysql> SET SQL_LOG_BIN=0;
mysql> CREATE USER rpl_user@'%' IDENTIFIED BY 'westos';
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='westos' FOR CHANNEL 'group_replication_recovery';

mysql> SET GLOBAL group_replication_bootstrap_group=ON; ##这条命令只需要在一个引导节点输入就行,后面的节点不需要执行,否则各自开启一个新的集群
mysql> START GROUP_REPLICATION; 
mysql> SET GLOBAL group_replication_bootstrap_group=OFF;##这条命令只需要在一个引导节点输入就行,后面的节点不需要执行,否则各自开启一个新的集群

当三台主机都配置完成后,查看集群

SELECT * FROM performance_schema.replication_group_members;

x测试一下:
在随意一台主机写入数据:

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');

在其他主机查看:

SELECT * FROM test.t1;

在这里插入图片描述

MySQL路由器配置

开一个新的虚拟机

安装:

rpm -ivh mysql-router-community-8.0.21-1.el7.x86_64.rpm

配置:

vim /etc/mysqlrouter/mysqlrouter.conf 
[routing:ro]
bind_address = 0.0.0.0
bind_port = 7001
destinations = 172.25.21.1:3306,172.25.21.2:3306,172.25.21.3:3306
routing_strategy = round-robin

[routing:rw]
bind_address = 0.0.0.0
bind_port = 7002
destinations = 172.25.21.1:3306,172.25.21.2:3306,172.25.21.3:3306
routing_strategy = first-available

在数据库创建一个远程连接的用户,由于做了组复制,在一个主机创建,其他主机会自动复制

mysql> grant all on test.* to pwc@'%' identified by '808bass';

在另外一台主机测试

[root@foundation21 mysql]# mysql -h 172.25.21.4 -P 7001 -upwc -p808bass

由于访问的是7001 我们设置的是RR轮寻

可以看到第一次在server1上
在这里插入图片描述

退出后,再次进入

[root@foundation21 mysql]# mysql -h 172.25.21.4 -P 7001 -upwc -p808bass

第二次在server2上
在这里插入图片描述

如果访问7002端口,我们设置的是routing_strategy = first-available

一旦选择了一个主机后,除非这个主机down掉,否则不会更换主机

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pu.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值