主从复制
Mysql主服务器:192.168.182.173
mysql从服务器: 192.168.182.174
配置主服务器
1.vim /etc/my.cnf修改配置文件
server-id=1 #配置server-id,让主服务器有唯一ID号
log-bin=mysql-bin #打开Mysql日志,日志格式为二进制
skip-name-resolve #关闭名称解析,(非必须)
2.show master status查看主服务器二进制日志状态
3.创建复制账号
grant replication slave on *.* to 'slave'@'192.168.182.174'identified by 'magedu';
配置从服务器
1.修改配置文件
vim /etc/my.cnf
server-id=2 #配置server-id,让从服务器有唯一ID号
relay_log = mysql-relay-bin #打开Mysql日志,日志格式为二进制
read_only = 1 #设置只读权限
log_bin = mysql-bin #开启从服务器二进制日志
log_slave_updates = 1 #使得更新的数据写进二进制日志中
2.启动从服务器复制线程
让slave连接master,并开始重做master二进制日志中的事件。
CHANGE MASTER TO MASTER_HOST='192.168.222.128',
MASTER_USER='slave',
MASTER_PASSWORD='magedu',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=245;
执行start slave;# 启动复制线程。
3.查看从服务器状态
SHOW SLAVE STATUS\G
主从复制原理:
从节点上的I/O 进程连接主节点,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;
主节点接收到来自从节点的I/O请求后,通过负责复制的I/O进程根据请求信息读取指定日志指定位置之后的日志信息,返回给从节点。返回信息中除了日志所包含的信息之外,还包括本次返回的信息的bin-log file 的以及bin-log position;从节点的I/O进程接收到内容后,将接收到的日志内容更新到本机的relay log中,并将读取到的binary log文件名和位置保存到master-info 文件中,以便在下一次读取的时候能够清楚的告诉Master“我需要从某个bin-log 的哪个位置开始往后的日志内容,请发给我”
Slave 的 SQL线程检测到relay-log 中新增加了内容后,会将relay-log的内容解析成在祝节点上实际执行过的操作,并在本数据库中执行。