从服务器读取 主服务器的 binlog 日志,进行解析后写入到从服务器的 relay log 中继日志中,再被 sql线程执行命令到数据库中
- Log Dump Thead : master 生成binlog日志的线程
- I/O Thread : 同步master 的binlog日志到slave 的中继日志中
- SQL Thread: 解析SQL入库
默认异步复制:存在问题是多个slave进行复制时,会存在延迟的问题
半同步复制: 当一个slave 将binlog日志写入到 relay log 中继日志中时,就返回给master
全同步复制:存在问题是master 的事务操作慢。
Master
-
连接MySQL 并创建主从复制的用户
create user masterSync;
-
给新建用户赋权
GRANT REPLICATION SLAVE,FILE ON *.* TO 'masterSync'@'%' IDENTIFIED BY 'masterSync';
-
指定服务ID,开启binlog日志记录,在 /etc/my.cnf 中加入如下配置
[mysqld] # 通常设置为ip server-id=135 # 记录到 mysql-bin 文件中 log-bin=mysql-bin # 同步的指定db 与binlog_ignore_db(指定不同步的db) 互斥, binlog-do-db=demo binlog-do-db=db_store
重启MySQL
service mysqld restart
-
通过命令查看Master db状态.
SHOW MASTER STATUS;
Slave
-
指定服务器ID,指定同步的binlog存储位置,在 my.cnf中加入如下配置
server-id=134 relay-log=slave-relay-bin relay-log-index=slave-relay-bin.index read_only=1 # 复制的db replicate_do_db=demo replicate_do_db=db_store
-
重启MySQL
service mysqld restart
-
接入slave的mysql服务,开始复制
change master to master_host='192.168.45.135',master_port=3306,master_user='masterSync',master_password='masterSync',master_log_file='mysql-bin.000006',master_log_pos=462; start slave;
-
查看slave服务器状态
show slave status\G