Rootop 服务器运维与web架构

innodb cluster入门配置

innodb cluster是基于mysql组复制,比主从复制要可靠。从mysql-5.7.17开始有这个功能。

mysqlrouter会配置两个端口,一个读写,一个只读,写入数据必须通过读写端口进行,然后集群会自己同步数据到只读服务器。

服务器信息:

主机名      IP地址              作用
node1 192.168.10.21    mysql-router
node2 192.168.10.22   读写实例
node3 192.168.10.23   只读实例1
node4 192.168.10.24   只读实例2

innodb cluster至少3个节点,1台读写,2台只读。

从mysql官网下载以下二进制软件包:
mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
mysql-shell-1.0.9-linux-glibc2.12-x86-64bit.tar.gz
mysql-router-2.1.3-linux-glibc2.12-x86-64bit.tar.gz

(一)配置主机名及hosts映射

1、配置主机名
依次为node1、node2、node3、node4 过程略

2、配置4台机器的hosts文件

192.168.10.21 node1
192.168.10.22 node2
192.168.10.23 node3
192.168.10.24 node4

3、关闭selinux和iptables(firewalld)

(二)初始化node2、node3、node4,3台机器操作一样
1、安装mysql,过程略。。。
注意:集群中mysql密码必须一致,否则创建集群会失败,因为这个问题,卡了我2天进度。
2、解压mysql-shell,初始化本地mysql为集群节点。

[root@node2 ~]# tar zxvf mysql-shell-1.0.9-linux-glibc2.12-x86-64bit.tar.gz

进入mysql-shell命令行
[root@node2 ~]# mysql-shell-1.0.9-linux-glibc2.12-x86-64bit/bin/mysqlsh
默认会用js配置方法去配置innodb cluster集群,支持sql语法,不过网上没找到资料,只有js配置方法。
mysql-js> dba.configureLocalInstance();
mysql-js> \q  # 这是退出mysql-shell命令行
mysql-js> \h  # 这是查看帮助,可以执行什么命令。

重启mysql服务生效。
配置另外2台机器。

(三)创建集群
配置完2、3、4后,我用node2节点创建集群。
node1执行:

[root@node1 ~]# mysql-shell-1.0.9-linux-glibc2.12-x86-64bit/bin/mysqlsh
mysql-js> shell.connect('root@node2:3306');
Please provide the password for 'root@node2:3306':
Creating a Session to 'root@node2:3306'
Classic Session successfully established. No default schema selected.
mysql-js>
mysql-js> dba.createCluster('st'); #创建一个名字为st的集群。
mysql-js> dba.help(); # 此命令可以看dba支持的函数
mysql-js> dba.getCluster();
<Cluster:st>
可以看到创建的集群

# 添加node3,node4节点
mysql-js> var cluster = dba.getCluster(); # 如果getCluster不加参数,默认取第一个集群。
mysql-js> cluster.addInstance('root@node3:3306');
会提示输入mysql密码
mysql-js> cluster.addInstance('root@node4:3306');
会提示输入mysql密码

# 查看集群状态
mysql-js> cluster.status();
{
    "clusterName": "st",
    "defaultReplicaSet": {
        "name": "default",
        "primary": "node2:3306",
        "status": "OK",
        "statusText": "Cluster is ONLINE and can tolerate up to ONE failure.",
        "topology": {
            "node2:3306": {
                "address": "node2:3306",
                "mode": "R/W",
                "readReplicas": {},
                "role": "HA",
                "status": "ONLINE"
            },
            "node3:3306": {
                "address": "node3:3306",
                "mode": "R/O",
                "readReplicas": {},
                "role": "HA",
                "status": "ONLINE"
            },
            "node4:3306": {
                "address": "node4:3306",
                "mode": "R/O",
                "readReplicas": {},
                "role": "HA",
                "status": "ONLINE"
            }
        }
    }
}

(四)配置mysql-router
[root@node1 ~]# tar zxvf mysql-router-2.1.3-linux-glibc2.12-x86-64bit.tar.gz
[root@node1 ~]# mv mysql-router-2.1.3-linux-glibc2.12-x86-64bit /usr/local/
[root@node1 ~]# cd /usr/local/mysql-router/

[root@node1 mysql-router]# mkdir config   # 配置文件文件夹
[root@node1 mysql-router]# mkdir logs      # 日志文件夹

# 创建配置文件
[root@node1 mysql-router]# vi config/default.conf

[DEFAULT]
logging_folder = /usr/local/mysql-router/logs
plugin_folder = /usr/local/mysql-router/lib/mysqlrouter
runtime_folder = /usr/local/mysql-router/run

[logger]
level = INFO

[routing:read_write]
bind_address = 192.168.10.21
bind_port = 7001
mode = read-write
destinations = 192.168.10.22:3306
max_connections = 65535
max_connect_errors = 1000
client_connect_timeout = 3

[routing:read_only]
bind_address = 192.168.10.21
bind_port = 7002
mode = read-only
destinations = 192.168.10.23:3306,192.168.10.24:3306
max_connections = 65535
max_connect_errors = 100
client_connect_timeout = 3

[keepalive]
interval = 60

# 启动mysql router

nohup /usr/local/mysql-router/bin/mysqlrouter -c /usr/local/mysql-router/config/default.conf > /usr/local/mysql-router/nohup.out &

测试略。

PS:
innodb cluster 只支持innodb引擎,如果有其它引擎的表导入,会报错。
可以看看官方开发人员视频:http://lefred.be/content/mysql-innodb-cluster-mysql-shell-starter-guide/

原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/3826.html

作者:Venus

专注于 服务器运维与web架构 E-mail:venus#rootop.org

评论已关闭。