主从复制原理
主节点线程:
dump thread:为每个slave的I/O thread启动一个dump线程,用于向从节点发送binary log events
从节点线程:
I/O thread:向master请求二进制日志事件,并保存到中继日志中。
SQL thread:从中继日志中读取日志事件,在本地完成重放。
与复制功能相关的文件(从节点上):
master.info:用于保存slave连接至master时的相关信息。
relay-log.info:保存当前slave节点上已经复制的当前二进制日志和本地relay log日志的对应关系。
主从复制特点:异步复制、主从复制数据不一致比较常见。
配置过程:
master配置:
修改配置文件:
在/etc/my.cnf中添加以下内容
[mysqld] 配置文件中必须分组,没有此项启动服务会报不识别此变量错误
log_bin 启用二进制日志
server_id=# 设置主从拓扑,主从ID必须唯一,默认server_id=1
log-basename=master 可选项,设置datadir中日志名称,确保不依赖主机名
添加复制账号并授权:
GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'HOST' IDENTIFIED BY 'replpass';
slave配置:
修改配置文件:
在/etc/my.cnf中添加以下内容
[mysqld]
server_id=#
read_only=ON 设置数据库只读
relay_log=relay-log relay log的文件名,默认值hostname-relay-bin
relay_log_index=relay-log.index 默认值hostname-relay-bin.index
说明:修改完配置文件重新启动数据库
使用master创建的复制账号连接到主节点,并启动复制线程
mysql> CHANGE MASTER TO MASTER_HOST='host',
MASTER_USER='repluser',
MASTER_PASSWORD='replpass',
MASTER_LOG_FILE=' mariadb-bin.xxxxxx',
MASTER_LOG_POS=#; 从备份文件中获取
mysql> START SLAVE [IO_THREAD|SQL_THREAD];
相关官网
https://mariadb.com/kb/en/library/setting-up-replication/
https://dev.mysql.com/doc/refman/5.5/en/replication-configuration.html