You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在同一服务器分离MariaDB Galera集群与独立数据库?

分离MariaDB Galera集群数据库与独立数据库的方案

针对你的需求,有两种可行方案,优先推荐运行独立实例的方式,因为配置过滤的方法存在明显局限性:

方案一:通过Galera配置过滤指定数据库(不推荐)

Galera提供了wsrep_ignore_db参数,可以指定不需要同步的数据库名称,但这种方式存在诸多限制:

  • 仅能阻止**DML操作(增删改)**的同步,**DDL操作(建表、改结构)**仍会同步到集群其他节点
  • 若集群其他节点误操作该数据库,仍可能导致数据不一致
  • 版本兼容性存在不确定性,后续升级可能出现问题

如果要尝试这种方式,在该节点的/etc/mysql/mariadb.conf.d/50-server.cnf中添加:

wsrep_ignore_db = wordpress_db

替换wordpress_db为你的WordPress专属数据库名,然后重启MariaDB服务:sudo systemctl restart mariadb

但再次强调,这种方法仅适合临时测试场景,生产环境不建议使用。

方案二:运行第二个独立的MariaDB实例(推荐)

这种方式彻底隔离两个数据库环境,完全避免集群同步影响,步骤如下(针对Ubuntu 20.04/22.04 + MariaDB 10.6):

1. 准备实例资源

  • 复制原配置文件作为新实例的基础配置:
    sudo cp /etc/mysql/mariadb.conf.d/50-server.cnf /etc/mysql/mariadb.conf.d/50-server2.cnf
    
  • 编辑新配置文件/etc/mysql/mariadb.conf.d/50-server2.cnf,修改以下关键参数(避免与集群实例冲突):
    [mysqld]
    port = 3307  # 与集群实例的3306端口区分
    socket = /run/mysqld/mysqld2.sock
    datadir = /var/lib/mysql2
    pid-file = /run/mysqld/mysqld2.pid
    log_error = /var/log/mysql/error2.log
    
  • 创建新的数据目录并设置权限:
    sudo mkdir /var/lib/mysql2
    sudo chown mysql:mysql /var/lib/mysql2
    

2. 初始化新实例

执行初始化命令,生成空的数据库环境:

sudo mysqld --initialize-insecure --user=mysql --datadir=/var/lib/mysql2

--initialize-insecure表示不生成临时root密码,后续自行设置。

3. 创建systemd服务文件

  • 复制原服务文件并修改:
    sudo cp /lib/systemd/system/mariadb.service /lib/systemd/system/mariadb2.service
    
  • 编辑/lib/systemd/system/mariadb2.service,修改以下内容:
    ExecStart=/usr/sbin/mysqld --defaults-file=/etc/mysql/mariadb.conf.d/50-server2.cnf $MYSQLD_OPTS
    PIDFile=/run/mysqld/mysqld2.pid
    
  • 重新加载systemd配置:
    sudo systemctl daemon-reload
    

4. 启动并配置独立实例

  • 启动新服务并设置开机自启:
    sudo systemctl start mariadb2
    sudo systemctl enable mariadb2
    
  • 登录新实例(通过socket连接):
    mysql -u root -S /run/mysqld/mysqld2.sock
    
  • 在新实例中设置root密码、创建WordPress专属数据库和用户:
    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('your_secure_password');
    CREATE DATABASE wp_standalone;
    CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'wp_user_password';
    GRANT ALL PRIVILEGES ON wp_standalone.* TO 'wp_user'@'localhost';
    FLUSH PRIVILEGES;
    

5. 配置WordPress连接独立实例

修改WordPress的wp-config.php文件,更新数据库连接参数:

define('DB_HOST', 'localhost:/run/mysqld/mysqld2.sock'); // 或者用127.0.0.1:3307
define('DB_NAME', 'wp_standalone');
define('DB_USER', 'wp_user');
define('DB_PASSWORD', 'wp_user_password');

注意事项

  • 两个实例的日志、临时文件路径都要分开,避免互相干扰
  • 独立实例不在Galera集群同步范围内,需单独配置备份策略(如定时mysqldump)
  • 监控服务器CPU、内存资源使用,避免两个实例竞争资源导致性能问题

内容的提问来源于stack exchange,提问作者Vakarelov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 03:52:37