MySQL Cluster实验记录
1、YUM方式安装MySQL Cluster
1.1 YUM方式安装MySQL Cluster
系统资源及组件规划:
节点名称 | 系统名称 | CPU/内存 | 网卡 | 磁盘 | IP地址 | OS |
---|---|---|---|---|---|---|
MGMTNode | master | 2C/4G | ens33 | 64G | 192.168.0.10 | CentOS7 |
SQLNode1 | sqlnode1 | 2C/4G | ens33 | 64G | 192.168.0.11 | CentOS7 |
SQLNode2 | sqlnode2 | 2C/4G | ens33 | 64G | 192.168.0.12 | CentOS7 |
DATANode1 | datanode1 | 2C/4G | ens33 | 64G | 192.168.0.13 | CentOS7 |
DATANode2 | datanode2 | 2C/4G | ens33 | 64G | 192.168.0.14 | CentOS7 |
安装基本软件:
yum -y install vim lrzsz wget net-tools bash-completion yum-utils
设置NTP:
yum -y install chrony
systemctl start chronyd
systemctl enable chronyd
systemctl status chronyd
chronyc sources
设置SELinux、防火墙:
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
设置YUM源:
wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum -y install mysql80-community-release-el7-3.noarch.rpm
yum repolist enabled | grep "mysql.*-community.*"
yum-config-manager --enable mysql-cluster-8.0-community
yum repolist enabled | grep "mysql.*-community.*"
安装MySQL Cluster组件及依赖包:
管理节点:
yum -y install perl perl-Class-MethodMaker perl-DBI libaio numactl
yum -y install mysql-cluster-community-management-server mysql-cluster-community-client
SQL节点:
yum -y install mysql-cluster-community-server
数据节点:
yum -y install mysql-cluster-community-data-node mysql-cluster-community-client
在管理节点上创建目录:
mkdir /etc/mysql-cluster
mkdir /var/lib/mysql
在管理节点上编辑MySQL Cluster配置文件:
cat > /etc/mysql-cluster/config.ini << EOF
[ndbd default]
noofreplicas=2
[ndb_mgmd]
nodeid=10
hostname=192.168.0.10
datadir=/var/lib/mysql
[mysqld]
nodeid=11
hostname=192.168.0.11
[mysqld]
nodeid=12
hostname=192.168.0.12
[ndbd]
nodeid=13
hostname=192.168.0.13
datadir=/var/lib/mysql
[ndbd]
nodeid=14
hostname=192.168.0.14
datadir=/var/lib/mysql
EOF
在SQL节点上编辑MySQL Cluster配置文件:
cat > /etc/my.cnf << EOF
[mysqld]
ndbcluster
ndb-connectstring=192.168.0.10
user=mysql
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
EOF
在SQL节点上启动MySQL:
systemctl start mysqld
systemctl status mysqld
在SQL节点上登录MySQL并设置密码:
grep 'temporary password' /var/log/mysqld.log
mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'PassWord8.0!';
在SQL节点上关闭MySQL,集群初始化时,重新启动:
systemctl stop mysqld
在数据节点上创建目录:
mkdir /var/lib/mysql
在数据节点上编辑MySQL Cluster配置文件:
cat > /etc/my.cnf << EOF
[mysql_cluster]
ndb-connectstring=192.168.0.10
EOF
1.2 MySQL Cluster初始化/启动
初始化/启动顺序:管理服务器->存储节点->SQL节点
在管理节点上初始化/启动管理节点:
ndb_mgmd -f /etc/mysql-cluster/config.ini --initial
–initial仅在初始化过程中使用
在数据节点上初始化/启动数据节点:
ndbd --initial
–initial仅在初始化过程中使用
在SQL节点上启动MySQL:
systemctl start mysqld
systemctl status mysqld
在管理节点上查看MySQL Cluster状态:
ndb_mgm -e show
在任意SQL节点上创建数据库和表:
CREATE DATABASE db;
CREATE TABLE db.tb (
id int NOT NULL,
name varchar(255) NULL,
PRIMARY KEY (id)
) ENGINE=ndb;
在任意SQL节点上插入数据:
INSERT INTO db.tb (id,name) VALUES (1,'MySQL');
在任意SQL节点上查看数据库、表和数据:
SHOW DATABASES;
DESCRIBE db.tb;
SELECT * FROM db.tb;
1.3 MySQL Cluster数据备份与恢复
MySQL Cluster数据备份:
在管理节点上备份数据:
ndb_mgm
start backup
在数据节点上查看备份文件:
ll /var/lib/mysql/BACKUP/BACKUP-1
在任意SQL节点上删除表:
DROP TABLE db.tb;
MySQL Cluster数据恢复:
在管理节点上关闭管理和数据节点:
ndb_mgm
shutdown
在SQL节点上关闭MySQL:
systemctl stop mysqld
在管理节点上修改MySQL Cluster配置文件:
echo [mysqld] >> /etc/mysql-cluster/config.ini
echo [mysqld] >> /etc/mysql-cluster/config.ini
在管理节点上重新加载管理节点:
ndb_mgmd -f /etc/mysql-cluster/config.ini --reload
在数据节点上启动数据节点:
ndbd --initial
在SQL节点上启动MySQL:
systemctl start mysqld
systemctl status mysqld
在任意数据节点恢复表格式,此处数据节点ID为13:
ndb_restore -n13 -b1 -m -r --backup_path=/var/lib/mysql/BACKUP/BACKUP-1
在数据节点恢复数据,此处数据节点ID为13:
ndb_restore -n13 -b1 -r --backup_path=/var/lib/mysql/BACKUP/BACKUP-1
在数据节点恢复数据,此处数据节点ID为14:
ndb_restore -n14 -b1 -r --backup_path=/var/lib/mysql/BACKUP/BACKUP-1
在任意SQL节点上查看数据库、表和数据:
SHOW DATABASES;
DESCRIBE db.tb;
SELECT * FROM db.tb;
1.4 关闭MySQL Cluster
关闭顺序:SQL节点->管理节点
在SQL节点上关闭MySQL:
systemctl stop mysqld
在管理节点上关闭管理和数据节点:
ndb_mgm
shutdown
2、二进制方式安装MySQL Cluster
2.1 二进制方式安装MySQL Cluster
系统资源及组件规划:
节点名称 | 系统名称 | CPU/内存 | 网卡 | 磁盘 | IP地址 | OS |
---|---|---|---|---|---|---|
MGMTNode | master | 2C/4G | ens33 | 64G | 192.168.0.10 | CentOS7 |
SQLNode1 | sqlnode1 | 2C/4G | ens33 | 64G | 192.168.0.11 | CentOS7 |
SQLNode2 | sqlnode2 | 2C/4G | ens33 | 64G | 192.168.0.12 | CentOS7 |
DATANode1 | datanode1 | 2C/4G | ens33 | 64G | 192.168.0.13 | CentOS7 |
DATANode2 | datanode2 | 2C/4G | ens33 | 64G | 192.168.0.14 | CentOS7 |
安装基本软件:
yum -y install vim lrzsz wget net-tools bash-completion
设置NTP:
yum -y install chrony
systemctl start chronyd
systemctl enable chronyd
systemctl status chronyd
chronyc sources
设置SELinux、防火墙:
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
在所有节点上下载并解压缩MySQL Cluster安装包:
下载地址:https://downloads.mysql.com/archives/cluster/
tar -xf mysql-cluster-8.0.21-linux-glibc2.12-x86_64.tar.gz
mv mysql-cluster-8.0.21-linux-glibc2.12-x86_64 /usr/local/mysql
设置环境变量:
echo PATH=$PATH:/usr/local/mysql/bin/ >> /etc/profile
source /etc/profile
在管理节点上创建目录:
mkdir /usr/local/mysql/mysql-cluster
在管理节点上编辑MySQL Cluster配置文件:
cat > /usr/local/mysql/config.ini << EOF
[ndbd default]
noofreplicas=2
[ndb_mgmd]
nodeid=10
hostname=192.168.0.10
datadir=/usr/local/mysql/mysql-cluster
[mysqld]
nodeid=11
hostname=192.168.0.11
[mysqld]
nodeid=12
hostname=192.168.0.12
[ndbd]
nodeid=13
hostname=192.168.0.13
datadir=/usr/local/mysql/data
[ndbd]
nodeid=14
hostname=192.168.0.14
datadir=/usr/local/mysql/data
EOF
在SQL节点上创建MySQL用户和组:
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
在SQL节点上创建MySQL数据目录:
mkdir /usr/local/mysql/data
mkdir /usr/local/mysql/logs
在SQL节点上设置MySQL目录属主、属组及权限:
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql/data
chown -R mysql:mysql /usr/local/mysql/logs
在SQL节点上编辑MySQL Cluster配置文件:
cat > /etc/my.cnf << EOF
[mysqld]
ndbcluster
ndb-connectstring=192.168.0.10
user=mysql
symbolic-links=0
socket=/tmp/mysql.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
pid-file=/usr/local/mysql/mysqld.pid
log-error=/usr/local/mysql/logs/mysqld.log
EOF
在SQL节点上初始化MySQL:
mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
在SQL节点上配置systemd管理MySQL:
cat > /usr/lib/systemd/system/mysqld.service << EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
EOF
在SQL节点上启动MySQL:
systemctl start mysqld
systemctl status mysqld
在SQL节点上登录MySQL并设置密码:
grep 'temporary password' /usr/local/mysql/logs/mysqld.log
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'PassWord8.0!';
在SQL节点上关闭MySQL,集群初始化时,重新启动:
systemctl stop mysqld
在数据节点上创建目录:
mkdir /usr/local/mysql/data
在数据节点上编辑MySQL Cluster配置文件:
cat > /etc/my.cnf << EOF
[mysql_cluster]
ndb-connectstring=192.168.0.10
EOF
2.2 MySQL Cluster初始化/启动
初始化/启动顺序:管理服务器->存储节点->SQL节点
在管理节点上初始化/启动管理节点:
ndb_mgmd -f /usr/local/mysql/config.ini --initial
–initial仅在初始化过程中使用
在数据节点上初始化/启动数据节点:
ndbd --initial
–initial仅在初始化过程中使用
在SQL节点上启动MySQL:
systemctl start mysqld
systemctl status mysqld
在管理节点上查看MySQL Cluster状态:
ndb_mgm -e show
在任意SQL节点上创建数据库和表:
CREATE DATABASE db;
CREATE TABLE db.tb (
id int NOT NULL,
name varchar(255) NULL,
PRIMARY KEY (id)
) ENGINE=ndbcluster;
在任意SQL节点上插入数据:
INSERT INTO db.tb (id,name) VALUES (1,'MySQL');
在任意SQL节点上查看数据库、表和数据:
SHOW DATABASES;
DESCRIBE db.tb;
SELECT * FROM db.tb;
2.3 MySQL Cluster数据备份与恢复
MySQL Cluster数据备份:
在管理节点上备份数据:
ndb_mgm
start backup
在数据节点上查看备份文件:
ll /usr/local/mysql/data/BACKUP/BACKUP-1
在任意SQL节点上删除表:
DROP TABLE db.tb;
MySQL Cluster数据恢复:
在管理节点上关闭管理和数据节点:
ndb_mgm
shutdown
在SQL节点上关闭MySQL:
systemctl stop mysqld
在管理节点上修改MySQL Cluster配置文件:
echo [mysqld] >> /usr/local/mysql/config.ini
echo [mysqld] >> /usr/local/mysql/config.ini
在管理节点上重新加载管理节点:
ndb_mgmd -f /usr/local/mysql/config.ini --reload
在数据节点上启动数据节点:
ndbd --initial
在SQL节点上启动MySQL:
systemctl start mysqld
systemctl status mysqld
在任意数据节点恢复表格式,此处数据节点ID为13:
ndb_restore -n13 -b1 -m -r --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-1
在数据节点恢复数据,此处数据节点ID为13:
ndb_restore -n13 -b1 -r --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-1
在数据节点恢复数据,此处数据节点ID为14:
ndb_restore -n14 -b1 -r --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-1
在任意SQL节点上查看数据库、表和数据:
SHOW DATABASES;
DESCRIBE db.tb;
SELECT * FROM db.tb;
2.4 关闭MySQL Cluster
关闭顺序:SQL节点->管理节点
在SQL节点上关闭MySQL:
systemctl stop mysqld
在管理节点上关闭管理和数据节点:
ndb_mgm
shutdown