虽然图上一共有7步,可以简化一下帮助记忆和理解:
Master上进行改、写操作;
MySQL把修改数据写进binlog;
Slave发起IO thread,把master上新的binlog拉取到本地中继日志中;
重放中继日志,让在master上面的修改、新增操作在Slave本机上重新运行一遍;
Slave按照正常的操作也会把操作写进本地的binlog。
本人有阿里云、腾讯云各一台屌丝机,因此用来试验,为保护隐私,把ip已经替换了,但不影响操作。
主机 | ip | 端口 | 版本 | 主从 |
---|---|---|---|---|
阿里云 | 192.168.1.100 | 3306 | MySQL5.7.14 | Master |
腾讯云 | 192.168.1.200 | 3306 | MySQL5.7.18 | Slave |
在/etc/my.cnf中的mysqld选项下编辑,然后重启
[mysqld] log-bin=mysql-bin server-id=1003306
/etc/init.d/mysql restart
mysql> CREATE USER 'repl'@'%.mydomain.com' IDENTIFIED BY 'slave; mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.200';
使用mysqldump导出所有数据库数据,另外备份文件中会记录当前的binlog文件和position。
#防止DDL、写操作 mysql>FLUSH TABLES WITH READ LOCK; shell>mysqldump -uroot -p --single-transaction --master-data=2 -A>back.sql
也通过以下方式可以查看:
root@localhost [mysql]>show master status; +------------------+----------+--------------+------------------+-------------------+ (北联网教程,专业提供视频软件下载)
……