MySQL主从复制实战

Mysql主从复制原理

从库生成两个线程,一个I/O线程,一个SQL线程;

i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中;
主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog;

SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致;
(此部分内容来源:https://www.cnblogs.com/Aiapple/p/5792939.html

Mysql主从复制应用场景

如果有一个SQL语句插入数据时需要锁表,但同时还需要查询,这就可以用到读写分离。主库负责写,从库负责读。

必要配置

步骤

master-server:

1.修改my.cnf

log-bin = mysql-bin
server-id = 1

2.重启mysql,创建用于同步的账号

grant replication slave on *.* to '<your_account>'@'%' identified by '<your_password>';
flush privileges;

3.获得binlog名和偏移量

show master status;

你会得到形如下面的信息

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000100 |      640 | blog         |         |
+------------------+----------+--------------+------------------+
slave-server:

1.修改my.cnf

server-id = 2

2.开始同步

change master to master_host='<your master server ip>',master_user='<your_account>',master_password='<your_password>',master_log_file='<bin-log name>',master_log_pos=<position>;

start slave;

show slave status; #查看同步状态
注:从库必须得先创建和主库一样的表结构
提交