面试题答案
一键面试MariaDB多源复制常见应用场景
- 数据整合:从多个不同数据源(如不同业务线的数据库)将数据汇聚到一个汇总数据库中,便于统一分析和报表生成。例如,电商企业中,订单数据库、用户数据库和商品数据库的数据可通过多源复制整合到数据分析数据库。
- 异地灾备:当存在多个异地数据中心时,每个数据中心可能有本地产生的数据,通过多源复制可以将多个异地数据中心的数据复制到灾备中心,确保数据的安全性和容灾能力。
- 微服务架构数据同步:在微服务架构下,不同的微服务可能有自己独立的数据库,为了保持数据一致性或进行数据汇总,可利用多源复制将各微服务数据库的数据同步到特定数据库。
MariaDB多源复制基本配置步骤
- 配置主库:
- 在每个主库的
my.cnf
文件中设置唯一的server-id
,例如:
- 在每个主库的
[mysqld]
server-id = 1
- 启用二进制日志,添加如下配置:
log-bin=mysql-bin
- 重启MariaDB服务使配置生效。
2. 配置从库:
- 在从库的my.cnf
文件中设置唯一的server-id
,如:
[mysqld]
server-id = 2
- 重启MariaDB服务。
3. 设置复制用户:在每个主库上创建用于从库复制的用户,例如:
CREATE USER'replication_user'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO'replication_user'@'%';
FLUSH PRIVILEGES;
- 获取主库状态:在每个主库上执行
SHOW MASTER STATUS;
,记录下File
和Position
的值。 - 配置从库复制:在从库上针对每个主库执行以下命令配置复制:
CHANGE MASTER TO
MASTER_HOST='master1_host',
MASTER_USER='replication_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='master1_log_file',
MASTER_LOG_POS=master1_log_position
FOR CHANNEL'master1_channel';
CHANGE MASTER TO
MASTER_HOST='master2_host',
MASTER_USER='replication_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='master2_log_file',
MASTER_LOG_POS=master2_log_position
FOR CHANNEL'master2_channel';
- 启动多源复制:在从库上执行
START SLAVE FOR CHANNEL'master1_channel';
和START SLAVE FOR CHANNEL'master2_channel';
启动多源复制。 - 检查复制状态:执行
SHOW SLAVE STATUS FOR CHANNEL'master1_channel'\G;
和SHOW SLAVE STATUS FOR CHANNEL'master2_channel'\G;
确保Slave_IO_Running
和Slave_SQL_Running
都为Yes
,且Seconds_Behind_Master
为0或接近0。