以下是在Ubuntu中设置MariaDB复制功能的基本步骤(以一主一从为例):
一、主服务器配置
-
修改配置文件
编辑/etc/mysql/mariadb.conf.d/50-server.cnf,添加:[mysqld] server-id = 1 # 主服务器唯一ID log_bin = /var/log/mysql/mysql-bin.log # 启用二进制日志 binlog_do_db = your_database # 指定同步的数据库(可选)重启服务:
sudo systemctl restart mariadb。 -
创建复制用户
登录MariaDB,执行:CREATE USER 'replicator'@'%' IDENTIFIED BY '密码'; GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%'; FLUSH PRIVILEGES; -
获取二进制日志位置
执行:FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS;记录
File(如mysql-bin.000001)和Position(如123),后续用于从服务器配置。
完成后解锁表:UNLOCK TABLES;。
二、从服务器配置
-
修改配置文件
编辑/etc/mysql/mariadb.conf.d/50-server.cnf,添加:[mysqld] server-id = 2 # 从服务器唯一ID(需与主服务器不同) relay_log = /var/log/mysql/mysql-relay-bin.log log_bin = /var/log/mysql/mysql-bin.log read_only = 1 # 设置为只读(可选,增强安全性)重启服务:
sudo systemctl restart mariadb。 -
配置主从同步
登录MariaDB,执行:CHANGE MASTER TO MASTER_HOST='主服务器IP', MASTER_USER='replicator', MASTER_PASSWORD='密码', MASTER_LOG_FILE='mysql-bin.000001', # 替换为主服务器记录的File值 MASTER_LOG_POS=123; # 替换为主服务器记录的Position值 START SLAVE; -
检查复制状态
执行:SHOW SLAVE STATUS\G确保
Slave_IO_Running和Slave_SQL_Running均为Yes,否则需排查错误。
三、验证复制
在主服务器插入数据,检查从服务器是否同步:
-- 主服务器
USE your_database;
INSERT INTO your_table (column) VALUES ('测试数据');
-- 从服务器
USE your_database;
SELECT * FROM your_table;
若数据一致,则配置成功。
注意事项
- 确保主从服务器时间同步(可使用
ntp服务)。 - 防火墙需开放3306端口(主从通信端口)。
- 生产环境中建议使用复杂密码,并定期备份数据。
参考来源: