管理节点 | mysql-mgm | 192.168.1.150 |
数据节点 1 | mysql-data01 | 192.168.1.151 |
数据节点 2 | mysql-data02 | 192.168.1.152 |
SQL 节点 1 | mysql-01 | 192.168.1.153 |
SQL 节点 2 | mysql-02 | 192.168.1.154 |
软件下载地址:
1、初始化系统
# 每个节点都操作
#systemctl disable firewalld #
# vi /etc/selinux/config
SELINUX=disabled |
# hostnamectl set-hostname xxx
# cd/usr/local/src/
# tar -zxf mysql-cluster-gpl-7.6.2-linux-glibc2.12-x86_64.tar.gz
# mv mysql-cluster-gpl-7.6.2-linux-glibc2.12-x86_64 /usr/local/mysql
# reboot
2、配置管理节点
# mkdir /var/lib/mysql-cluster
# vi /var/lib/mysql-cluster/config.ini
[ndbd default] # Options affecting ndbd processes on all data nodes: NoOfReplicas=2 # Number of replicas DataMemory=80M # How much memory to allocate for data storage IndexMemory=18M # How much memory to allocate for index storage #ServerPort=2202 # This the default value; however, you can use any
[ndb_mgmd] # Management process options: NodeId=1 HostName=192.168.1.150 # Hostname or IP address of MGM node DataDir=/var/lib/mysql-cluster # Directory for MGM node log files
[ndbd] HostName=192.168.1.151 # Hostname or IP address NodeId=2 # Node ID for this data node DataDir=/usr/local/mysql/data # Directory for this data node's data files
[ndbd] # Options for data node "B": HostName=192.168.1.152 # Hostname or IP address NodeId=3 # Node ID for this data node DataDir=/usr/local/mysql/data # Directory for this data node's data files
[mysqld] # SQL node options: NodeId=4 HostName=192.168.1.153 # Hostname or IP address # (additional mysqld connections can be # specified for this node for various # purposes such as running ndb_restore)
[mysqld] NodeId=5 HostName=192.168.1.154 |
# cp /usr/local/mysql/bin/ndb_mgm* /usr/local/bin/
# chmod +x /usr/local/bin/ndb_mgm*
3、配置数据节点
# groupadd mysql && useradd -g mysql mysql
# vi /etc/my.cnf
[mysqld] basedir=/usr/local/mysql datadir=/usr/local/mysql/data socket=/usr/local/mysql/sock/mysql.sock user=mysql symbolic-links=0 ndbcluster ndb-connectstring=192.168.1.150
[mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
[mysql_cluster] ndb-connectstring=192.168.1.150 |
# mkdir /usr/local/mysql/sock
# cd /usr/local/mysql
# bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql--datadir=/usr/local/mysql/data
# chown -R mysql.mysql /usr/local/mysql
4、配置 SQL 节点
# groupadd mysql && useradd -g mysql mysql
# vi /etc/my.cnf
[client] socket=/usr/local/mysql/sock/mysql.sock
[mysqld] ndbcluster datadir=/usr/local/mysql/data socket=/usr/local/mysql/sock/mysql.sock ndb-connectstring=192.168.1.150
[mysql_cluster] ndb-connectstring=192.168.1.150 |
# mkdir /usr/local/mysql/sock
# cd /usr/local/mysql
# bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql--datadir=/usr/local/mysql/data
# chown-R mysql.mysql /usr/local/mysql
# cp mysql/support-files/mysql.server /etc/rc.d/init.d/
# chmod +x /etc/rc.d/init.d/mysql.server
# chkconfig --add mysql.server
5、Cluster 启动
# 启动管理节点,首次启动需要+ --initial
# ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial
# 启动数据节点,首次启动需要+ --initial
# /usr/local/mysql/bin/ndbd --initial
# 启动 SQL 节点
# /usr/local/mysql/bin/mysqld_safe --user=mysql &
# 查看集群状态
# 管理节点上操作:
[root@mysql-mgm ~]# ndb_mgm
-- NDB Cluster -- Management Client -- ndb_mgm> show Connected to Management Server at: localhost:1186 Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=2 @192.168.1.151 (mysql-5.7.18 ndb-7.6.2, Nodegroup: 0, *) id=3 @192.168.1.152 (mysql-5.7.18 ndb-7.6.2, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.1.150 (mysql-5.7.18 ndb-7.6.2)
[mysqld(API)] 2 node(s) id=4 @192.168.1.153 (mysql-5.7.18 ndb-7.6.2) id=5 @192.168.1.154 (mysql-5.7.18 ndb-7.6.2) |
6、测试
# 先将 SQL 节点的数据库密码修改为相同的
# ln -s /usr/local/mysql/bin/mysql /usr/local/bin/
# /usr/local/mysql/bin/mysql_secure_installation
# SQL 节点 1 上新建库,并插入数据
# mysql -uroot -p
mysql> create database aa;
mysql> use aa;
mysql> create table student(id int(10) primary key auto_increment,name varchar(30),age tinyint(2)) engine=ndb; # 数据库表的引擎必须为 NDB,不然就同步失败了 可以用 show create table 表名; 来查看引擎
mysql> insert into student (id,name,age) value(321281,"mzh",18);
mysql> quit Bye |
# SQL 节点 2 查看是否同步
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | aa | | mysql | | ndbinfo | | performance_schema | | sys | +--------------------+ 6 rows in set (0.00 sec)
mysql> use aa;
mysql> show tables; +--------------+ | Tables_in_aa | +--------------+ | student | +--------------+ 1 row in set (0.01 sec)
mysql> select * from student; +--------+------+------+ | id | name | age | +--------+------+------+ | 321281 | mzh | 18 | +--------+------+------+ 1 row in set (4.27 sec) |
# 做到这里,已经看到可以同步了。然后我们再模拟 SQL 节点1 宕机了,在SQL 2 上插入新的数据,再SQL 1 开机,查看数据是否会同步。
# 在SQL 1上操作:
# /etc/rc.d/init.d/mysql.server stop
# ps -ef| grep mysql
# 在 SQL 2 操作:
mysql> insert into student (id,name,age) value(12121,"hp",19);
mysql> select * from student;
+--------+------+------+ | id | name | age | +--------+------+------+ | 12121 | hp | 19 | | 321281 | mzh | 18 | +--------+------+------+ 2 rows in set (0.00 sec) |
# 再在 SQL1 上查看是否同步
# /etc/rc.d/init.d/mysql.server start
mysql> select * from student;
+--------+------+------+ | id | name | age | +--------+------+------+ | 12121 | hp | 19 | | 321281 | mzh | 18 | +--------+------+------+ 2 rows in set (0.00 sec) |
7、Cluster 关闭
# 管理节点操作:
# ndb_mgm -e shutdown
Connected to Management Server at: localhost:1186 3 NDB Cluster node(s) have shutdown. Disconnecting to allow management server to shutdown. |
# SQL 节点操作:
# /etc/rc.d/init.d/mysql.server stop
Over ~