Carry の Blog Carry の Blog
首页
  • Nginx
  • Prometheus
  • Iptables
  • Systemd
  • Firewalld
  • Docker
  • Sshd
  • DBA工作笔记
  • MySQL
  • Redis
  • TiDB
  • Elasticsearch
  • Python
  • Shell
  • MySQL8-SOP手册
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carry の Blog

好记性不如烂键盘
首页
  • Nginx
  • Prometheus
  • Iptables
  • Systemd
  • Firewalld
  • Docker
  • Sshd
  • DBA工作笔记
  • MySQL
  • Redis
  • TiDB
  • Elasticsearch
  • Python
  • Shell
  • MySQL8-SOP手册
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • MySQL

    • MySQL8一键安装配置优化
    • MySQL导出CSV格式解决乱码
    • MySQL 角色管理
    • MySQL网络抓包审计
    • MySQL性能压测
    • MySQL配合Consul读写分离
    • Gh-ost重建表,清除表碎片率
    • MySQL MGR配合MySQL-router实现innodb-cluster
    • MySQL 快速分析binlog定位问题
    • MySQL执行计划分析
    • DBA常用SQL和命令整理备查
    • mysqldump实时同步数据
    • MySQL的事务隔离级别
    • MySQL存储过程批量生成数据
    • MySQL insert on duplicate key update,replace into , insert ignore的理解
    • MySQL不同字符集之间的区别和选择
    • MySQL为什么有时候会选错索引
    • MySQL死锁问题
    • MySQL使用SQL语句查重去重
    • MySQLdump逻辑备份
    • MySQL主从跳过异常GITD
    • MySQL8设置slowlog记录所有语句
    • MySQL8快速克隆插件使用指南
    • MySQL8双1设置保障安全
    • MySQL锁
    • innodb cluster安装
      • 1. 部署环境及初始化
      • 安装mysql
      • 利用MySQL Shell构建MGR集群
      • 部署MySQL Router,实现读写分离以及故障自动转移
        • 参数解释
    • MySQL里的left join 和right join以及inner join
    • optimize table和 analyze table的区别
    • MySQL 字段的区分度计算公式
    • MySQLReplicaSet 安装
    • 脚本实现MySQL ReplicaSet 高可用
    • MySQL 的Left join,Right join和Inner join 的区别
    • MySQL45讲学习笔记
  • Redis

  • Keydb

  • TiDB

  • MongoDB

  • Elasticsearch

  • Kafka

  • victoriametrics

  • BigData

  • Sqlserver

  • 数据库
  • MySQL
Carry の Blog
2022-08-13
目录

innodb cluster安装

# 1. 部署环境及初始化

为了简单起见,建议用yum方式标准化安装MySQL Shell、Router

  1. MySQL官方的yum源,需要先下载安装repo包,下载地址:
yum -y install https://dev.mysql.com/get/mysql80-community-release-el7-4.noarch.rpm
1
  1. 用yum安装MySQL相关的软件包了
yum install -y mysql-shell mysql-router
#也可以用rpm包安装
 wget https://downloads.mysql.com/archives/get/p/43/file/mysql-shell-8.0.26-1.el7.x86_64.rpm  
 wget https://downloads.mysql.com/archives/get/p/41/file/mysql-router-community-8.0.26-1.el7.x86_64.rpm

1
2
3
4
5
  1. 网络调整
sudo iptables -I INPUT -s 192.168.01/32 -p tcp -j ACCEPT
sudo iptables -I INPUT -s 192.168.02/32 -p tcp -j ACCEPT
sudo iptables -I INPUT -s 192.168.03/32 -p tcp -j ACCEPT
sudo service iptables save
1
2
3
4
  1. CPU磁盘内存调整
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.d/rc.local

cat /sys/block/sdb/queue/scheduler
echo noop >/sys/block/sdb/queue/scheduler

cpupower frequency-info --governors

cpupower frequency-set --governor performance

cpupower frequency-info --policy
1
2
3
4
5
6
7
8
9
10
11
  1. 运行GreatSQL可能需要依赖jemalloc库,因此请先安装上
yum -y install jemalloc jemalloc-devel

#检查
[root@greatdb]# ldconfig
[root@greatdb]# ldconfig -p | grep libjemalloc
1
2
3
4
5
  1. /etc/hosts绑定IP和主机名防止创建mgr时报错 192.168.01 mytest-dbtest01 192.168.02 mytest-dbtest02 192.168.03 mytest-dbtest03

# 安装mysql

  1. 安装mysql,把my.cnf wget的下载地址替换成新的
python install_mysql8.py install --instance-ports=3366 --innodb-buffer-pool-size=384G
1
  1. 修改root密码
SET SQL_LOG_BIN=0;

alter user 'root'@'localhost' identified by '';

rename user 'root'@'localhost' to 'admin'@'localhost';

SET SQL_LOG_BIN=1;
1
2
3
4
5
6
7
  1. 避免使用root请创建mgr_admin用户
create user `dba_mgr_admin`@`192.168.0%` identified by '';

GRANT all privileges ON *.* TO `dba_mgr_admin`@`192.168.0%` WITH GRANT OPTION;
1
2
3

# 利用MySQL Shell构建MGR集群

  1. 登录第一台mysql
mysqlsh --uri [email protected]:3366
1
  1. 检查配置
dba.configureInstance();
dba.checkInstanceConfiguration('[email protected]:3366');
dba.checkInstanceConfiguration('[email protected]:3366');
1
2
3
  1. 创建集群
var cluster = dba.createCluster('myMGR');
1

如果失败或者报错可以删掉再来

dba.dropMetadataSchema();
1
  1. 添加节点
cluster.addInstance('[email protected]:3366');
1

选择默认克隆模式添加直接回车 重复以上操作添加所有节点

  1. 查看状态以下命令均可查看 首先定义var
var cluster = dba.getCluster()
1

然后执行

cluster.describe();
cluster.status();
cluster.status({extended:1});
1
2
3

# 部署MySQL Router,实现读写分离以及故障自动转移

MySQL Router是一个轻量级的中间件,它采用多端口的方案实现读写分离以及读负载均衡,而且同时支持mysql和mysql x协议。

mysqlrouter初始化 MySQL Router对应的服务器端程序文件是 /usr/bin/mysqlrouter,第一次启动时要先进行初始化

# 参数解释

参数 --bootstrap 表示开始初始化

参数 [email protected]:3366 是MGR集群管理员账号

--user=mysqlrouter 是运行mysqlrouter进程的系统用户名
[root@greatsql]# mysqlrouter --bootstrap [email protected]:3366 --user=mysqlrouter

Please enter MySQL password for mic: <-- 输入密码
# 然后mysqlrouter开始自动进行初始化
# 它会自动读取MGR的元数据信息,自动生成配置文件
1
2
3
4
5

4.2 启动mysqlrouter服务 这就初始化完毕了,按照上面的提示,直接启动 mysqlrouter 服务即可:

[root@greatsql]# systemctl start mysqlrouter


检查
ps -ef | grep -v grep | grep mysqlrouter

netstat -lntp | grep mysqlrouter
1
2
3
4
5
6
7

mysqlrouter 初始化时自动生成的配置文件是 /etc/mysqlrouter/mysqlrouter.conf,主要是关于R/W、RO不同端口的配置

[routing:greatsqlMGR_rw]
bind_address=0.0.0.0
bind_port=6446
destinations=metadata-cache://greatsqlMGR/?role=PRIMARY
routing_strategy=first-available
protocol=classic
1
2
3
4
5
6

可以根据需要自行修改绑定的IP地址和端口。

4.3 确认读写分离效果 现在,用客户端连接到6446(读写)端口,确认连接的是PRIMARY节点:

[root@greatsql]# mysql -h192.168.01 -u dba_mgr_admin -p -P6446

mic@GreatSQL [(none)]>select @@server_uuid;
1
2
3

4.4 关闭ssl避免跟客户端应用不兼容通讯协议

分别登录mysqlrouter 的服务器,更改配置

 sudo vim /etc/mysqlrouter/mysqlrouter.conf

client_ssl_mode=DISABLED
server_ssl_mode=DISABLED
server_ssl_verify=DISABLED
1
2
3
4
5

分别重启mysqlrouter

sudo systemctl restart mysqlrouter.service
1
上次更新: 4/24/2025

← MySQL锁 MySQL里的left join 和right join以及inner join→

最近更新
01
tidb fast ddl
04-04
02
TiDB配置文件调优 原创
04-03
03
如何移除TiDB中的表分区 原创
04-03
更多文章>
Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式