面试题答案
一键面试MariaDB选择性复制技术基本原理
- 基于日志的复制:MariaDB主从复制基于二进制日志(binary log)。主库将数据库的更改操作记录到二进制日志中,从库通过I/O线程连接主库,读取主库的二进制日志,并将其记录到自己的中继日志(relay log)中,然后通过SQL线程将中继日志中的记录应用到从库的数据库,从而实现数据同步。
- 选择性复制核心:选择性复制允许从库只复制主库上特定数据库、表或部分数据。这主要通过在主库和从库上分别配置过滤规则来实现。主库会根据配置决定是否将某些操作记录到二进制日志中,从库则根据配置决定是否应用中继日志中的某些记录。
在主从复制架构下实现选择性复制的配置
- 主库配置
- 关键参数:
binlog_do_db
:指定需要记录到二进制日志的数据库。例如,如果只想记录mydb1
和mydb2
数据库的操作到二进制日志,可以在my.cnf
文件中添加或修改如下配置:[mysqld] binlog_do_db=mydb1 binlog_do_db=mydb2
binlog_ignore_db
:与binlog_do_db
相反,指定不需要记录到二进制日志的数据库。例如,不想记录mydb3
数据库的操作到二进制日志:[mysqld] binlog_ignore_db=mydb3
- 配置文件修改:打开主库的
my.cnf
(或my.ini
,取决于操作系统)配置文件,在[mysqld]
部分添加或修改上述参数,然后重启MariaDB服务使配置生效。
- 关键参数:
- 从库配置
- 关键参数:
replicate_do_db
:指定从库需要复制的数据库。例如,从库只希望复制mydb1
和mydb2
数据库:[mysqld] replicate_do_db=mydb1 replicate_do_db=mydb2
replicate_ignore_db
:指定从库不需要复制的数据库。如从库不想复制mydb3
数据库:[mysqld] replicate_ignore_db=mydb3
replicate_do_table
:用于指定从库需要复制的表,格式为database.table
。例如,只想复制mydb1
数据库中的mytable1
表:[mysqld] replicate_do_table=mydb1.mytable1
replicate_ignore_table
:指定从库不需要复制的表,格式同样为database.table
。
- 配置文件修改:打开从库的
my.cnf
(或my.ini
)配置文件,在[mysqld]
部分添加或修改上述参数,然后重启MariaDB服务。之后在从库上使用CHANGE MASTER TO
语句重新配置主库连接信息(如果之前已配置过),并使用START SLAVE
命令启动从库复制进程。
- 关键参数: