首页 > 数据库 > MySQL > 正文

mysql innodb cluster 创建

2022-07-31 18:43:15
字体:
来源:转载
供稿:网友
        环境准备:
1 下载和安装需要的软件(本人的软件版本--都是mysql Community中的Linux Generic版本)
      mysql-server(mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz)
      mysql-router(mysql-router-8.0.17-linux-glibc2.12-x86_64.tar.xz)
      mysql-shell(mysql-shell-8.0.17-linux-glibc2.12-x86-64bit.tar.gz)
 
     安装(以mysql server为例,其他类似,以下都是Mysql_tar操作系统用户操作):
cd /home/mysql_tar
tar -xvf mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz
ln -s mysql-8.0.17-linux-glibc2.12-x86_64 mysql_install(方便升级)
...mysql-router...
....mysql_shell...
 
      编辑环境变量:
vim /home/mysql_tar/.bash_profile
#FOR MYSQL
MYSQL_HOME=/home/mysql_tar/mysql_install
PATH=$PATH:$MYSQL_HOME/bin
export MYSQL_HOME
#MYSQL SHELL
MYSQL_SHELL_HOME=/home/mysql_tar/mysql_shell
PATH=$PATH:$MYSQL_SHELL_HOME/bin
export MYSQL_SHELL_HOME
 
#MYSQL_ROUTER
MYSQL_ROUTER=/home/mysql_tar/mysql_router
PATH=$PATH:$MYSQL_ROUTER/bin
export MYSQL_ROUTER
 
export PATH
 
准备mysql 配置文件my.cnf
vim /etc/my.cnf
default-authentication-plugin=mysql_native_password
lower_case_table_names=1
datadir=/data_test
socket=/data_test/mysql.sock
log-error=/data_test/mysqld.log
pid-file=/data_test/mysqld.pid
 
创建数据目录文件/data_test(用户和用户组均为mysql_tar)
初始化mysql
cd /home/mysql_tar/mysql_install/bin(环境变量设置正确,该步可有可无)
./mysqld --initialize --user=mysql_tar(初始化mysql系统表空间和其他重要文件,initialize 拼错的话不会报错,只会提示数据目录找不到)
启动Mysql
mysqld_safe --user=mysql_tar &
连接Mysql并且修改root账户密码:
./mysql -u root -S /data_test/mysql.sock -p(也可以通过TCP/IP登陆,这里通过套接字登陆)
mysql>alter user root@localhost identified by 'mjj';
通过mysqlsh登陆mysql、检查环境并创建集群
/home/mysql_tar/mysql_shell/bin/mysqlsh
MySQL SQL > /connect root@mysql_host_a(加粗的是我的命令)
Creating a session to 'root@mysql_host_a'
Please provide the password for 'root@mysql_host_a': *
Save password for 'root@mysql_host_a'? [Y]es/[N]o/Ne[v]er (default No): ~~
MySQL mysql_host_a:33060+ ssl JS > dba.checkInstanceConfiguration();
Validating local MySQL instance listening at port 3306 for use in an InnoDB cluster...**
This instance reports its own address as mysql_host_a:3306
Clients and other cluster members will communicate with it through this address by default. If this is not correct, the report_host MySQL system variable should be changed.
 
Checking whether existing tables comply with Group Replication requirements...
No incompatible tables detected
 
Checking instance configuration...
 
10 可以通过cluster.status();命令查看集群状态
MySQL mysql_host_a:33060+ ssl JS > cluster.status();
{
"clusterName": "mjjcluster",
"defaultReplicaSet": {
"name": "default",
"primary": "mysql_host_a:3306",
"ssl": "REQUIRED",
"status": "OK_NO_TOLERANCE",
"statusText": "Cluster is NOT tolerant to any failures.",
"topology": {
"mysql_host_a:3306": {
"address": "mysql_host_a:3306",
"mode": "R/W",
"readReplicas": {},
"role": "HA",
"status": "ONLINE",
"version": "8.0.17"
}
},
"topologyMode": "Single-Primary"
},
"groupInformationSourceMember": "mysql_host_a:3306"
}
 
11, 其他机子也安装软件和准备环境(dba.checkInstanceConfiguration()通过即可,步骤与主节点类似)
 
加入节点:
MySQL mysql_host_a:33060+ ssl JS > cluster.addInstance('root@mysql_host_b:3306');(本人另一台机子的主机名是mysql_host_b)
Cluster.addInstance: Connection 'root@mysql_host_b:3306' is not valid: unable to resolve the IPv4 address. (ArgumentError)
MySQL mysql_host_a:33060+ ssl JS > cluster.addInstance('root@mysql_host_b:3306');
Please provide the password for 'root@mysql_host_b:3306': ***
Save password for 'root@mysql_host_b:3306'? [Y]es/[N]o/Ne[v]er (default No):
NOTE: The target instance 'mysql_host_b:3306' has not been pre-provisioned (GTID set
is empty). The Shell is unable to decide whether incremental distributed state
recovery can correctly provision it.
The safest and most convenient way to provision a new instance is through
automatic clone provisioning, which will completely overwrite the state of
'mysql_host_b:3306' with a physical snapshot from an existing cluster member.
To use this method by default, set the 'recoveryMethod' option to 'clone'.
 
Waiting for clone to finish...
NOTE: mysql_host_b:3306 is being cloned from mysql_host_a:3306
Stage DROP DATA: Completed
Clone Transfer
FILE COPY ############################################################ 100% Completed
PAGE COPY ############################################################ 100% Completed
REDO COPY ############################################################ 100% Completed
NOTE: mysql_host_b:3306 is shutting down...
 
Waiting for server restart... ready
mysql_host_b:3306 has restarted, waiting for clone to finish...
** Stage RESTART: Completed
Clone process has finished: 58.50 MB transferred in about 1 second (~inf TB/s)
State recovery already finished for 'mysql_host_b:3306'
 
The instance 'mysql_host_b:3306' was successfully added to the cluster.
 
。。。完成了,基本的步骤就这些吧。
主要方法:
dba.configureInstance()
 
dba.createCluster()
 
Cluster.addInstance()----cluster=dba.getCluster()获取cluster变量
 
Cluster.removeInstance()
 
Cluster.rejoinInstance()

(编辑:错新网)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表