在Debian系统上进行MySQL集群部署有多种方法,以下是其中两种常见的方案:
1. MySQL双主复制集群
前提条件
- 准备两台服务器(物理或虚拟),并确保它们可以互相通信。
- 在两台服务器上安装相同版本的MySQL(建议使用官方稳定版)。
- 备份所有重要数据。
搭建过程
修改配置文件
- 服务器A(master1):
[mysqld]server-id = 1log-bin = mysql-binbinlog-do-db = your_database_namesync_binlog = 1binlog_format = mixedrelay_log = relay-binrelay_log_index = relay-bin.indexauto_increment_increment = 2auto_increment_offset = 1bind-address = your_server_ipport = your_port_number
- 服务器B(master2):
[mysqld]server-id = 2log-bin = mysql-binbinlog-do-db = your_database_namesync_binlog = 1binlog_format = mixedrelay_log = relay-binrelay_log_index = relay-bin.indexauto_increment_increment = 2auto_increment_offset = 2bind-address = your_server_ipport = your_port_number
- 服务器A(master1):
创建复制用户在两个服务器上的MySQL命令行执行以下SQL命令:
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%' IDENTIFIED BY 'strong_password';FLUSH PRIVILEGES;
锁定表并获取二进制日志位置在服务器A上执行:
FLUSH TABLES WITH READ LOCK;SHOW MASTER STATUS;
记录下返回的File和Position值。在服务器B上也执行同样的步骤,但记录服务器B的值时不要忘记先在服务器A上执行UNLOCK TABLES。
配置复制在服务器B上设置复制服务器A的数据:
CHANGE MASTER TO MASTER_HOST='master1_ip_address',MASTER_USER='replication_user',MASTER_PASSWORD='strong_password',MASTER_LOG_FILE='master1_binlog_file',MASTER_LOG_POS=master1_binlog_position;
启动复制在两台服务器上分别执行:
START SLAVE;
检查复制状态在两台服务器上执行以下命令检查复制状态:
SHOW SLAVE STATUS \G;
确认以下两个字段的值为Yes:
- Slave_IO_Running: Yes
- Slave_SQL_Running: Yes
2. MySQL InnoDB Cluster
前提条件
- 每台服务器上安装MySQL 5.7.17或更高版本。
- 安装MySQL Router和MySQL Shell。
搭建过程
安装MySQL在每台服务器上安装MySQL:
wget https://dev.mysql.com/get/mysql-apt-config_0.8.29-1_all.debsudo dpkg -i mysql-apt-config_0.8.29-1_all.deb
选择所需的MySQL版本进行安装。
配置MySQL编辑MySQL配置文件(例如
/etc/mysql/my.cnf
),确保以下配置:[mysqld]ndbclusterndb-connectstring = 192.168.1.1
启动MySQL服务启动MySQL服务并确保其正常运行:
sudo systemctl start mysqldsudo systemctl enable mysqld
初始化集群使用MySQL Shell初始化集群:
mysqlsh --defaults-file=/etc/mysql/my.cnf --user=mysql
在MySQL Shell中执行以下命令:
CREATE TABLESPACE myspace DATAFILE '/var/lib/mysql/data/mydatabase.dat' ENGINE=NDB;USE mysql;CREATE TABLE mytable ( id INT AUTO_INCREMENT PRIMARY KEY, value VARCHAR(255)) ENGINE=NDB TABLESPACE myspace;
验证集群插入数据并验证数据同步:
INSERT INTO mytable (value) VALUES ('test');SELECT * FROM mytable;
在其他节点上验证数据是否同步。
希望这些步骤能帮助你在Debian系统上成功部署MySQL集群。如果有任何问题,请参考官方文档或相关社区资源。