温馨提示×

Debian MySQL如何进行集群部署

小樊
51
2025-03-12 20:32:32
栏目: 云计算

在Debian系统上进行MySQL集群部署有多种方法,以下是其中两种常见的方案:

1. MySQL双主复制集群

前提条件

  • 准备两台服务器(物理或虚拟),并确保它们可以互相通信。
  • 在两台服务器上安装相同版本的MySQL(建议使用官方稳定版)。
  • 备份所有重要数据。

搭建过程

  1. 修改配置文件

    • 服务器A(master1)
      [mysqld] server-id = 1 log-bin = mysql-bin binlog-do-db = your_database_name sync_binlog = 1 binlog_format = mixed relay_log = relay-bin relay_log_index = relay-bin.index auto_increment_increment = 2 auto_increment_offset = 1 bind-address = your_server_ip port = your_port_number 
    • 服务器B(master2)
      [mysqld] server-id = 2 log-bin = mysql-bin binlog-do-db = your_database_name sync_binlog = 1 binlog_format = mixed relay_log = relay-bin relay_log_index = relay-bin.index auto_increment_increment = 2 auto_increment_offset = 2 bind-address = your_server_ip port = your_port_number 
  2. 创建复制用户 在两个服务器上的MySQL命令行执行以下SQL命令:

    GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%' IDENTIFIED BY 'strong_password'; FLUSH PRIVILEGES; 
  3. 锁定表并获取二进制日志位置 在服务器A上执行:

    FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS; 

    记录下返回的File和Position值。在服务器B上也执行同样的步骤,但记录服务器B的值时不要忘记先在服务器A上执行UNLOCK TABLES。

  4. 配置复制 在服务器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; 
  5. 启动复制 在两台服务器上分别执行:

    START SLAVE; 
  6. 检查复制状态 在两台服务器上执行以下命令检查复制状态:

    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。

搭建过程

  1. 安装MySQL 在每台服务器上安装MySQL:

    wget https://dev.mysql.com/get/mysql-apt-config_0.8.29-1_all.deb sudo dpkg -i mysql-apt-config_0.8.29-1_all.deb 

    选择所需的MySQL版本进行安装。

  2. 配置MySQL 编辑MySQL配置文件(例如/etc/mysql/my.cnf),确保以下配置:

    [mysqld] ndbcluster ndb-connectstring = 192.168.1.1 
  3. 启动MySQL服务 启动MySQL服务并确保其正常运行:

    sudo systemctl start mysqld sudo systemctl enable mysqld 
  4. 初始化集群 使用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; 
  5. 验证集群 插入数据并验证数据同步:

    INSERT INTO mytable (value) VALUES ('test'); SELECT * FROM mytable; 

    在其他节点上验证数据是否同步。

希望这些步骤能帮助你在Debian系统上成功部署MySQL集群。如果有任何问题,请参考官方文档或相关社区资源。

0