Tên máy chủ trong cấu hình bộ định tuyến MySQL là gì?

MySQL Router是MySQL官方提供的一个轻量级中间件,是InnoDB Cluster的一部分,可在应用程序和后端MySQL服务器之间提供透明路由。主要用以解决MySQL主从库集群的高可用、负载均衡、易扩展等问题。Router作为一个流量转发层,位于应用与MySQL服务器之间,其功能类似于LVS。

1. 2为什么要用MySQL Router?

基于组复制(MGR)的机制,当主节点宕机离开集群,剩余的其他节点会基于paxos协议选举一个新的主节点。这里有一个问题,应用程序端如果连接到了主节点,这时主节点宕机离开集群,可用的数据库IP地址发生变化,客户端应用程序这个时候还是会向失败的节点尝试连接,虽然可以修改客户端应用程序的连接配置,但是这种情况基本是不现实的。

1. 3MySQL Router关系图

Tên máy chủ trong cấu hình bộ định tuyến MySQL là gì?

结合MySQL Group Replication和MySQL Shel如下:

Tên máy chủ trong cấu hình bộ định tuyến MySQL là gì?

上图充分说明了MySQL Router在InnoDB集群里面的角色,主要作用是为数据库集群提供一个虚拟IP作为应用程序单一连接点,通过这个单一的连接点实现负载均衡,读写分离,故障转移等数据库高可用方案。

MySQL Router推荐安装在应用程序所在的机器上,原因包括:

  • 通过本地Unix套接字连接,而不是TCP/IP,提升性能
  • 降低网络延迟
  • MySQL实例不需要额外的账号,只需要一个router@198. 51. 100. 45, 而不是myapp@%
  • 提升应用程序服务器的可扩展性

1. 4MySQL Cluster简介

Cluster是这个高可用方案中的一个虚拟节点,它会在MGR的所有成员上创建一个名为MySQL_innodb_cluster_metadata的数据库,存储集群的元数据信息,包括集群信息、集群成员、组复制信息、连接的MySQL Router等信息,以提供MySQL Router查询。它相当于对组复制上的成员做了一层逻辑上的封装,以一个集群的模式展现出来,各节点的状态与对应实例在组复制中成员的状态实时同步,但是集群的节点与组复制的成员只在创建集群时同步,后期组复制的成员变更并不自动同步到集群中,可以在集群中做手动的节点增减,这样使得面向应用端的具体实例实现了更可控更灵活的高可用。

二、环境准备

主机名IP地址角色oratest51172. 16. 9. 51tiểu học52172. 16. 9. 52secondetest61172. 16. 9. 61secondenode4172. 16. 8. Bộ định tuyến 68MySQL

操作系统:CentOS Linux release 7. 2. 1511
MySQL版本:mysql-5. 7. 26-linux-glibc2. 12-x86_64
MySQL Router版本:mysql-router-8. 0. 17-linux-glibc2. 12-x86_64
MySQL Shell版本:mysql-shell-8. 0. 17-linux-glibc2. 12-x86-64bit

三、安装和配置MySQL Router

MySQL Router有两种部署模式:

  • bootstrap模式:支持failover,必须结合InnoDB Cluster使用,在
    [root@node2 mysqlrouter]# cd /data/mysqlrouter/
    [root@node2 mysqlrouter]# sh start.sh
    
    2指定的路径下自动生成安装目录,配置文件里的端口为6446和6447。
  • 简单模式:不支持failover,无需结合InnoDB Cluster使用,一般在主从复制或者主主复制等模式下使用,使用
    [root@node2 mysqlrouter]# cd /data/mysqlrouter/
    [root@node2 mysqlrouter]# sh start.sh
    
    3这个配置文件部署。

3. 1bootstrap模式安装MySQL Router

注意: 使用bootstrap的方式安装MySQL Router的前提条件是MGR已装好,MySQL Shell已装好,InnoDB Cluster已经配置好

3. 1. 1使用yum源的方式安装MySQL Router

# wget -P /software/ https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm
# rpm -Uvh /software/mysql80-community-release-el7-3.noarch.rpm
# yum -y install mysql-router

3. 1. 2查看MySQL Router的默认配置

[root@node4 yum.repos.d]# mysqlrouter --help
MySQL Router  Ver 8.0.16 for Linux on x86_64 (MySQL Community - GPL)
Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Configuration read from the following files in the given order (enclosed
in parentheses means not available for reading):
  /etc/mysqlrouter/mysqlrouter.conf
  (/root/.mysqlrouter.conf)
Plugins Path:
  /usr/lib64/mysqlrouter

Default Log Directory:
  /var/log/mysqlrouter

Default Persistent Data Directory:
  /var/lib/mysqlrouter

Default Runtime State Directory:
  /run/mysqlrouter

通过mysqlrouter --help可以看到默认的一些路径:
- 配置文件:/etc/mysqlrouter/mysqlrouter. conf
- 插件路径:/usr/lib64/mysqlrouter
- 日志路径:/var/log/mysqlrouter
- 持久化数据路径:/var/lib/mysqlrouter
- 运行时状态路径:/run/mysqlrouter
如果在mysqlrouter命令行使用--config或-c选项传入用户定义的配置文件,则不会加载默认配置文件。

3. 1. 3初始化MySQL Router,地址填primary的地址

[root@node4 tmp]# mysqlrouter --bootstrap [email protected]:3306 --directory /data/mysqlrouter --conf-use-sockets --user=root
Please enter MySQL password for root: 
WARNING: The MySQL server does not have SSL configured and metadata used by the router may be transmitted unencrypted.
# Bootstrapping MySQL Router instance at '/data/mysqlrouter'...

- Checking for old Router accounts
  - No prior Router accounts found
- Creating mysql account mysql_router1_zhi3m2uhudci@'%' for cluster management
- Storing account in keyring
- Adjusting permissions of generated files
- Creating configuration /data/mysqlrouter/mysqlrouter.conf

# MySQL Router configured for the InnoDB cluster 'st'    #InnoDB集群名

After this MySQL Router has been started with the generated configuration

    $ mysqlrouter -c /data/mysqlrouter/mysqlrouter.conf

the cluster 'st' can be reached by connecting to:

## MySQL Classic protocol

- Read/Write Connections: localhost:6446, /data/mysqlrouter/mysql.sock
- Read/Only Connections:  localhost:6447, /data/mysqlrouter/mysqlro.sock

## MySQL X protocol

- Read/Write Connections: localhost:64460, /data/mysqlrouter/mysqlx.sock
- Read/Only Connections:  localhost:64470, /data/mysqlrouter/mysqlxro.sock

--bootstrap:引导并配置Router以便与MySQL InnoDB集群一起运行。

3. 1. 4编辑配置文件,一般只需要配置bootstrap_server_addresses这一行即可

# File automatically generated during MySQL Router bootstrap
[DEFAULT]
user=root
logging_folder=/data/mysqlrouter/log
runtime_folder=/data/mysqlrouter/run
data_folder=/data/mysqlrouter/data
keyring_path=/data/mysqlrouter/data/keyring
master_key_path=/data/mysqlrouter/mysqlrouter.key
connect_timeout=15
read_timeout=30
#dynamic_state=/data/mysqlrouter/data/state.json

[logger]
level = INFO

[metadata_cache:st]
router_id=14
bootstrap_server_addresses=mysql://oratest51:3306,mysql://oratest52:3306,mysql://test61:3306
user=mysql_router14_ebhje7bsnckc
metadata_cluster=st
ttl=300
use_gr_notifications=0

[routing:st_default_rw]
bind_address=0.0.0.0
bind_port=6446
socket=/data/mysqlrouter/mysql.sock
destinations=metadata-cache://st/default?role=PRIMARY
routing_strategy=first-available
protocol=classic

[routing:st_default_ro]
bind_address=0.0.0.0
bind_port=6447
socket=/data/mysqlrouter/mysqlro.sock
destinations=metadata-cache://st/default?role=SECONDARY
routing_strategy=round-robin-with-fallback
protocol=classic

[routing:st_default_x_rw]
bind_address=0.0.0.0
bind_port=64460
socket=/data/mysqlrouter/mysqlx.sock
destinations=metadata-cache://st/default?role=PRIMARY
routing_strategy=first-available
protocol=x

[routing:st_default_x_ro]
bind_address=0.0.0.0
bind_port=64470
socket=/data/mysqlrouter/mysqlxro.sock
destinations=metadata-cache://st/default?role=SECONDARY
routing_strategy=round-robin-with-fallback
protocol=x

3. 1. 5启动MySQL Router

[root@node2 mysqlrouter]# cd /data/mysqlrouter/
[root@node2 mysqlrouter]# sh start.sh

启动过程较慢,日志里可以看到启动信息

3. 1. 6测试连接MySQL Router

默认情况下,使用6446作为RW端口,使用6447作为RO端口

# mysql -uroot -p123456 -h172.16.8.68 -P6446
# mysql -uroot -p123456 -h172.16.8.68 -P6447
# netstat -ntlp |grep mysqlrouter

3. 2简单模式安装MySQL Router

3. 2. 1下载软件包并上传到服务器

________số 8

3. 2. 2解压到指定目录

[root@node4 etc]# tar -Jxvf /software/mysql-router-8.0.17-linux-glibc2.12-x86_64.tar.xz -C /usr/local/
[root@node4 etc]# cd /usr/local
[root@node4 etc]# mv mysql-router-8.0.17-linux-glibc2.12-x86_64/ mysqlrouter

3. 2. 3设置环境变量

[root@node2 mysqlrouter]# cd /data/mysqlrouter/
[root@node2 mysqlrouter]# sh start.sh
0

3. 2. 4编辑配置文件

[root@node2 mysqlrouter]# cd /data/mysqlrouter/
[root@node2 mysqlrouter]# sh start.sh
1

/usr/local/mysqlrouter/share/doc/mysqlrouter/sample_mysqlrouter. conf这个是MySQL Router的参照配置文件,所以这里先把模板复制出来。

mysql router默认会寻找安装目录下的"mysqlrouter. conf"和家目录下的". mysqlrouter. conf"。也可以在二进制程序mysqlrouter命令下使用"-c"或者"--config"手动指定配置文件。

Làm cách nào để thiết lập cấu hình bộ định tuyến MySQL?

Bộ định tuyến MySQL là gì?.
Thiết lập Bộ định tuyến MySQL để định tuyến máy chủ độc lập
Bước 1. Đang tải xuống gói?.
Bước 2. Giải nén gói. .
Giới thiệu về tập tin cấu hình bộ định tuyến…
phần ghi nhật ký. Đặt mức ghi nhật ký [FATAL, ERROR, WARNING, DEBUG và INFO]. .
Bước 3. Chuẩn bị một tệp cấu hình đơn giản (sample-router. ini)

Mật khẩu cho cấu hình bộ định tuyến MySQL là gì?

Tên người dùng mặc định cho bộ định tuyến MySQL của bạn là root. Mật khẩu mặc định là (trống) . Nhập tên người dùng và mật khẩu, nhấn "Enter" và bây giờ bạn sẽ thấy bảng điều khiển của bộ định tuyến.

Bộ định tuyến MySQL là gì?

Bộ định tuyến MySQL là một phần của Cụm InnoDB và là phần mềm trung gian nhẹ cung cấp định tuyến minh bạch giữa ứng dụng của bạn và Máy chủ MySQL phía sau . Nó được sử dụng cho nhiều trường hợp sử dụng khác nhau, chẳng hạn như cung cấp tính sẵn sàng cao và khả năng mở rộng bằng cách định tuyến lưu lượng cơ sở dữ liệu đến các máy chủ MySQL back-end phù hợp.

Cấu hình máy chủ trong MySQL là gì?

Máy chủ MySQL, mysqld, có nhiều tùy chọn lệnh và biến hệ thống có thể được đặt khi khởi động để định cấu hình hoạt động của nó . Để xác định tùy chọn lệnh mặc định và các giá trị biến hệ thống được máy chủ sử dụng, hãy thực hiện lệnh này. $> mysqld --verbose --help.