在Ubuntu上搭建MySQL集群可以通过多种方式实现,以下是一些常见的方法:
MySQL Cluster是一个分布式数据库解决方案,提供高可用性和高性能。以下是使用NDB Cluster在Ubuntu上搭建MySQL集群的步骤:
在每台服务器上安装MySQL服务器:
sudo apt-get update
sudo apt-get install mysql-server
编辑MySQL配置文件 /etc/mysql/my.cnf
,添加以下内容:
[mysqld]
ndbcluster
socket = /var/run/mysqld/mysqld.sock
connect-to = master:1186
重启MySQL服务:
sudo systemctl restart mysql
安装MySQL集群工具:
sudo apt-get install mysql-cluster-common mysql-cluster-ndb
创建集群:
sudo ndb_mgmd --initial --configdir=/var/lib/mysql-cluster --nodeid=1 --hostname=master
sudo ndb_mgmd --configdir=/var/lib/mysql-cluster --nodeid=2 --hostname=slave1
sudo ndb_mgmd --configdir=/var/lib/mysql-cluster --nodeid=3 --hostname=slave2
创建数据目录并启动集群:
sudo mkdir -p /var/lib/mysql/data
sudo chown mysql:mysql /var/lib/mysql/data
sudo systemctl start ndb_mgmd
sudo systemctl start ndb_mgmd@1
sudo systemctl start ndb_mgmd@2
sudo systemctl start ndb_mgmd@3
在任意一台服务器上连接MySQL集群并执行SQL语句以验证集群是否搭建成功。
MySQL Group Replication是一种基于组的复制技术,支持多主节点。以下是使用Group Replication在Ubuntu上搭建MySQL集群的步骤:
更新包列表并安装MySQL服务器:
sudo apt update
sudo apt install mysql-server
编辑MySQL配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf
,添加以下内容以启用Group Replication:
[mysqld]
server-id 1
gtid_mode ON
enforce_gtid_consistency ON
binlog_checksum NONE
master_info_repository TABLE
relay_log_info_repository TABLE
transaction_write_set_extraction XXHASH64
loose-group_replication_group_name "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeeeee"
loose-group_replication_start_on_boot OFF
loose-group_replication_ssl_mode REQUIRED
loose-group_replication_recovery_use_ssl 1
loose-group_replication_local_address "192.168.1.1:33061"
loose-group_replication_group_seeds "192.168.1.1:33061,192.168.1.2:33061,192.168.1.3:33061"
loose-group_replication_single_primary_mode OFF
loose-group_replication_enforce_update_everywhere_checks ON
重启MySQL服务:
sudo systemctl restart mysql
登录到MySQL并初始化Group Replication:
mysql -u root -p
SET GLOBAL group_replication_bootstrap_group ON ;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group OFF;
在其他节点上重复上述步骤,修改 server-id
和 loose-group_replication_local_address
,并确保 loose-group_replication_group_seeds
包含所有节点的地址。
在每个节点上登录到MySQL并检查Group Replication的状态:
SHOW STATUS LIKE 'group_replication%';
MariaDB Galera Cluster是一种多主节点集群解决方案,适用于需要高数据一致性的场景。以下是使用Galera Cluster在Ubuntu上搭建多主节点的步骤:
在所有节点上安装MariaDB和Galera相关软件:
sudo apt-get update
sudo apt-get install mariadb-server
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xf1656f24c74cd1d8
sudo add-apt-repository 'deb [archamd64,i386,ppc64el] http://ftp.utexas.edu/mariadb/repo/10.1/ubuntu xenial main'
sudo apt-get update
sudo apt-get install mariadb-server
在第一个节点上创建Galera配置文件 /etc/mysql/conf.d/galera.cnf
,并添加以下内容:
[mysqld]
binlog_format row default-storage-engine innodb
innodb_autoinc_lock_mode 2
bind-address 0.0.0.0
wsrep_on on
wsrep_provider /usr/lib/galera/libgalera_smm.so
运行 mysql_secure_installation
脚本进行安全设置。
在第一个节点上初始化Galera集群:
mysql -u root -p
CREATE INSTANCE --clustergalera --user 'root'@'localhost' --password 'password';
在其他节点上使用 galera_new_cluster
命令加入集群:
galera_new_cluster --cluster_address=mysql://root:password@node1_ip:3306 --cluster_name=my_cluster
在所有节点上执行以下命令验证集群状态:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep%'"
如果显示 wsrep_cluster_size: 3
,则表示集群已成功搭建。
以上是在Ubuntu上搭建MySQL集群的几种常见方法,具体选择哪种方法取决于你的业务需求和技术栈。