Mysql之主从复制

什么是主从复制?

主从复制其实是binlog日志的复制。生产环境中一台服务器充当mysql(Master)服务的角色,接受来自用户的内容更新,其他一台或多台服务器充当mysql(slave)的服务角色,接收master服务器上的binlog文件的日志内容,执行sql语句解析,更新到本身的服务器上,从而实现与master服务器数据的一致。

主从复制过程原理

1.当slave服务器执行start slave时,主从复制便开始,此时,slave服务器的IO线程通过master服务器上的授权用户请求连接master服务器
2.当连接成功之后,master服务器上的负责复制的IO线程则会读取指定binlog日志文件指定位置之后的binlog日志信息,然后返回给slave服务器上的IO线程。此时返回的信息包括新的binlog日志内容以及master服务器记录的binlog文件名称和新的binlog日志中指定的下一个更新点位置。
3.slave服务器上的IO线程读取到master服务器IO线程发送的日志内容和位置点后,会将日志内容追加写入到本身的relay log文件中,然后将新的binlog文件名和位置点记录到master-info文件中(此文件是为了slave服务器连接master服务器时告诉master服务器要复制的binlog日志文件名和位置点)。
4.最后,slave服务器上的sql线程监测到本地relay log新增加的内容后,把内容解析成SQL语句并执行,最后把最新的中继日志文件名和位置点记录进relay-log.info配置文件中。

Mysql之主从复制

主从复制实现过程

首先确保从库要先有主库的全量备份。
主库(master)
1.启用binlog日志文件
[mysqld]
server_id=9
log_bin=master
binlog_format=’mixed’

2.用户授权:给从库添加连接时使用的用户名
mysql> grant replication slave on . to [email protected]’10.0.0.%’ identified by ‘123456’;

3.查看binlog日志信息
mysql> show master status;
+—————-+———-+————–+——————+——————-+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+—————-+———-+————–+——————+——————-+
| master.000001 | 154 | | | |
+—————-+———-+————–+——————+——————-+

从库(slave)
1.指定server_id
[mysqld]
server_id=10

2.测试授权用户
[[email protected] mysql]# mysql -urepluser -p123456 -h 10.0.0.9

3.查看是否为从库
mysql> show slave status;

4.管理员本机登陆指定主库信息
mysql> change master to master_host=’10.0.0.9’,master_user=’repluser’,master_password=’123456’,master_log_file=’master.000001’,master_log_pos=154;

5.开启
mysql> start slave;

6.查看
mysql> show slave status\G;