搭建MySQL集群-注意版本
系统环境采样
(来自其他机器,直接copy过来的,在安装的机器上,按照步骤查看即可,当然这些还不够实际,后续补充)
检查系统内是否有其他mysql rpm -qa | grep mysql 是否存在mysql用户和用户组 grep mysql /etc/group 查看linux系统版本 [root@fp-web-112 src]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) 内存基本页大小 [root@fp-web-112 src]# getconf PAGE_SIZE 4096 //4m //内核版本 [root@fp-web-112 src]# uname -a Linux fp-web-112 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux 查看linux是32位还是64位(下载包的时候要注意) [root@fp-web-112 src]# getconf LONG_BIT 64 查看系统负载磁盘和分区 [root@fp-web-112 src]# cat /proc/loadavg 0.32 0.26 0.14 1/581 51903 查看挂载情况(以后可能会面临磁盘空间问题) [root@fp-web-112 src]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 96G 22G 75G 23% / devtmpfs 7.9G 0 7.9G 0% /dev tmpfs 7.9G 0 7.9G 0% /dev/shm tmpfs 7.9G 532K 7.9G 1% /run tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup /dev/sda1 497M 109M 388M 22% /boot tmpfs 1.6G 0 1.6G 0% /run/user/0 //查看内存空闲,运行时间异常,或者机器混装大量应用这个时候就需要注意 [root@fp-web-112 src]# free -g total used free shared buff/cache available Mem: 15 0 2 0 12 14 Swap: 37 0 37 [root@fp-web-112 src]# fdisk -l //信息比较多忽略. //查看磁盘文件格式 [root@fp-web-112 src]# lsblk -f NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 xfs 301c75d3-73ce-4342-befa-c8f1f788bcdf /boot └─sda2 LVM2_member dJcKYm-10WN-Vsy8-n11y-B8wY-vsFt-N76qpy ├─centos-root xfs c73e2c36-261b-4f51-9131-4faf79d86a7d / └─centos-swap swap b28efdea-e1a7-425d-bca0-23eac0dd22e0 [SWAP] sdb ├─sdb1 ├─sdb2 └─sdb5 swap 849e0cfd-13a3-4acf-98c3-793ddd0ccd30 [SWAP] sr0 loop0 xfs 4f434d0b-6292-44f1-af05-ed40c74ba683 └─docker-253:0-402851692-pool loop1 └─docker-253:0-402851692-pool //打开文件数量 [root@fp-web-112 src]# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 64052 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 64052 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited // linux资源限制配置文件 [root@fp-web-112 src]# cat /etc/security/limits.conf
1.搭建环境
mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64.tar.gz
操作系统centos 7.9
下载地址链接:http://mirrors.sohu.com/mysql/MySQL-Cluster-7.5/
2.集群内的各个节点的规划
节点(用途) |
IP地址(主机名) |
管理节点 |
192.168.0.18 |
SQL节点1 |
192.168.0.16 |
SQL节点2 |
1192.168.0.17 |
3.管理节点配置步骤(192.168.0.18)
通过rz命令上传到Linux上 /usr/local下
[root@mysql-mnm-node ~]# tar zxvf mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64.tar.gz ##解压
[root@mysql-mnm-node ~]# mv mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64 /usr/local/ ## 解压后的目录移动到/usr/local/下,
[root@mysql-mnm-node ~]#cd /usr/local/mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64
[root@mysql-mnm-node ~]#cp bin/ndb_mgm* /usr/local/bin ###复制所有的ndb 到 /usr/local/bin 下
[root@mysql-mnm-node ~]#cd /usr/local/bin
[root@mysql-mnm-node ~]#chmod +x ndb_mgm* ####可以执行命令最好放入到环境变量中,这样可以直接执行命令
[root@mysql-mnm-node ~]#mkdir /var/lib/mysql-cluster ###创建数据目录
####创建config.ini 配置文件
[root@mysql-mnm-node ~]#vi /var/lib/mysql-cluster/config.ini
[ndbd default] NoOfReplicas=2 DataMemory=512M IndexMemory=18M [ndb_mgmd] HostName=192.168.0.18 DataDir=/var/lib/mysql-cluster [ndbd] HostName=192.168.0.16 DataDir=/var/lib/mysql-cluster [ndbd] HostName=192.168.0.17 DataDir=/var/lib/mysql-cluster [mysqld]
[root@mysql-mnm-node ~]#/usr/local/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial ###使用配置文件初始化管理节点
[root@mysql-mnm-node ~]# /usr/local/mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64/bin/ndb_mgm ###执行下面的命令验证下
ndb_mgm> show
4.集群sql节点配置步骤(在192.168.0.16和192.168.0.17执行相同步骤)
通过rz命令上传到Linux上,通过 tar zxvf mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64.tar.gz 解压
解压后的目录移动到/usr/local/下,目录名称改为mysql
[root@mysql-sql-node ~]# mv mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64 /usr/local/mysql
[root@mysql-sql-node ~]#groupadd mysql
[root@mysql-sql-node ~]#useradd -g mysql -s /sbin/nologin mysql
[root@mysql-sql-node ~]#mkdir /var/lib/mysql-cluster
[root@mysql-sql-node ~]#chown root:mysql /var/lib/mysql-cluster/
[root@mysql-sql-node ~]#yum -y install libaio
[root@mysql-sql-node ~]#cd /usr/local/mysql/bin/
[root@mysql-sql-node ~]#./mysqld --initialize ####初始化会建立相关的一些必要的表,如果不进行初始化安装创建,则mysql你都进不去
[root@mysql-sql-node ~]#cd /usr/local/mysql/
[root@mysql-sql-node ~]#chown -R root .
[root@mysql-sql-node ~]#chown -R mysql data
[root@mysql-sql-node ~]#chgrp -R mysql .
[root@mysql-sql-node ~]#cp support-files/mysql.server /etc/rc.d/init.d/
[root@mysql-sql-node ~]#chmod +x /etc/rc.d/init.d/mysql.server
[root@mysql-sql-node ~]#chkconfig --add mysql.server
[root@mysql-sql-node ~]#vim /etc/my.cnf
[mysqld] [mysql_cluster] |
[root@mysql-sql-node ~]#/usr/local/mysql/bin/ndbd --initial
[root@mysql-sql-node ~]#/etc/init.d/mysql.server start ####启动mysql服务
[root@db-sql-node2 ~]# echo export PATH=$PATH:/usr/local/mysql/bin >> /etc/profile && source /etc/profile ####把mysql/bin目录添加到环境变量
报错解决:
mysql(ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2))。 2.重启mysql 3.进去mysql修改root密码 |
开始测试:
mysql> create database aa;
mysql> use aa
mysql> CREATE TABLE ctest2 (i INT) ENGINE=NDB; //这里必须指定数据库表的引擎为NDB,否则同步失败,只有这样子,这两台机器才能共享数据库的数据结构
mysql> INSERT INTO ctest2 () VALUES (1);
mysql> SELECT * FROM ctest2;
±-----+
| i |
±-----+
| 1 |
±-----+
现在到另外一个数据节点查看下aa数据库是否同步过来了.
#/usr/local/mysql/bin/mysql -u root -p
mysql> show databases;
±-------------------+
| Database |
±-------------------+
| information_schema |
| aa |
| bb |
| mysql |
| ndb_3_fs |
| test |
±-------------------+
mysql> use aa
mysql> select * from ctest2;
从上面可以看到数据已经同步了,mysql集群环境已经搭建完成.
报错解决:
1.用navicat连接不成功需要报错代码1130原因是被连接的数据不允许使用 192.168.1.13访问,只允许是用 localhost;
进入mysql mysql -u root -p 执行线面的sql语句就解决了。
mysql>use mysql;
mysql>select ‘host’ from user where user=‘root’;
mysql>update user set host = ‘%’ where user =‘root’;
mysql>flush privileges;
mysql>select ‘host’ from user where user=‘root’;
2.处理导入数据库表报错问题在my.cnf的[mysqld]里面加入这句,
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’
3.建数据库表需要指定NDB
CREATE TABLE ctest2 (i INT) ENGINE=NDB; //这里必须指定数据库表的引擎为NDB,否则同步失败
4.启动和关闭
启动mysql集群。启动顺序为:管理节点→数据节点→SQL节点。
管理操作
1.在(192.168.0.18)启动管理节点(关闭命令:ndb_mgm -e shutdown)
[root@dns-server ~]# /usr/local/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini ##-f指定配置文件
2.在(192.168.0.16和192.168.0.17)启动ndbd和MySQL(关闭命令:/etc/init.d/mysql.server stop)
[root@db-sql-node2 ~]# /usr/local/mysql/bin/ndbd
[root@db-sql-node2 ~]# /etc/init.d/mysql.server start
3.在管理节点(192.168.0.18)查看状态
/usr/local/mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64/bin/ndb_mgm
ndb_mgm> show
4.在db-sql-node1(192.168.0.17)登陆mysql创建数据库和表,在db-sql-node2(192.168.0.16)上验证同步结果
(如果使用sql创建表,命令为:CREATE TABLE student (age INT) ENGINE=NDBCLUSTER)
5.关闭时只需要关闭管理节点,后面的数据节点会同时被关闭
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?