mysql主从复制
主从复制的原理
从上图所示,我们可以看出mysql主从复制的基础在于Binary log(二进制日志文件),Master会将所有的操作以”事件”的形式存入Binary log中,在Slave中会有两个线程,一个是I/O线程,一个是SQL线程,Slave会通过I/O线程与Master保持通讯,即观察Binary log的变化。一旦发生了变化,它会将变化的部分写入Relay log(中继日志)中,Slave在通过SQL线程回去读取Relay log,并解析完成该操作。从而实现了主从复制。
配置操作
前提(>两台数据库的版本最好保持一致)
- 主数据库:64.188.4.26
- 从数据库:192.200.193.26
master配置
找到master的配置文件my.cnf,在[mysqld]的部分插入如下两行代码
重启mysql服务
service mysqld restart
<创建slave的账号,进入到mysql会话,然后输入以下代码,创建用户账号
mysql > CREATE USER 'slave192'@'192.200.193.26' IDENTIFIED BY 'slavepassword'; mysql > GRANT REPLICATION SLAVE ON *.* TO 'slave192'@'192.200.193.26'; mysql > flush privileges;
- 查看master状态,请记住File和Position,后面配置Slave有需要用到
slave配置
修改my.cnf,在[mysqld]添加server-id,记住这里的server-id与master的server-id和其他的slave不同。
[mysqld] server-id=2
重启mysql
service mysqld restart
- 打开mysql会话,执行同步的语句
mysql> CHANGE MASTER TO
-> MASTER_HOST='192.200.193.26',
-> MASTER_USER='slave192',
-> MASTER_PASSWORD='slavepassword',
-> MASTER_LOG_FILE='mysql-bin.000002',
-> MASTER_LOG_POS=7670474
启动slave同步
mysql> start slave
查看状态
如图,红色圈圈的显示为yes,即代表配置成功.
配置的额外参数
我们可以指定数据库进行主从配置,binlog-ignore-db
不同步哪一个数据库, binlog-do-db
只同步某个数据库