《深入浅出MySQL:数据库开发、优化与管理维护(2nd)》第31章之MySQL异步复制搭建学习笔记
2017-01-15 22:17
786 查看
MySQL的复制原理大致如下:
(1)首先,MySQL主库在事务提交时会把数据变更作为事件Events记录在二进制日志文件Binlog中;MySQL主库上的sync_binlog参数控制Binlog日志刷新到磁盘。
(2)主库推送二进制日志文件Binlog中的事件到从库的中继日志Relay Log,之后从库根据中继日志Relay Log重做数据变更操作,通过逻辑复制以此来达到主库和从库的数据一致。
MySQL通过3个线程来完成主从库间的数据复制:其中Binlog Dump线程跑在主库上,I/O线程和SQL线程跑在从库上。当在从库上启动复制(start slave)时,首先创建I/O线程连接主库,主库随后创建Binlog Dump线程读取数据库事件并发送给I/O线程,I/O线程获取到事件数据后更新到从库的中继日志Relay Log中去,之后从库上的SQL线程读取中继日志Relay
Log中更新的数据库事件并应用。如下图所示。
以数据库单主单从来说,目前我测试过的数据库的版本是5.7.17,在数据库binlog都已开启且无错误的情况下,下面的SQL中的ip可以根据自己的情况来做相应的修改
主库执行下面的SQL
grant replication slave on *.* to 'rep1'@'%' identified by 'rep1';
grant replication slave on *.* to 'rep1'@'192.168.1.6' identified by 'rep1';这条SQL我在执行后从库频繁报账户拒绝登录的问题。使用上面的SQL就不会出现问题。
flush privileges;
show grants for 'rep1'@'%';
查看主库上当前的二进制日志名和偏移量值
show master status;
从库执行下面的语句
CHANGE MASTER TO
MASTER_HOST='192.168.1.6',
MASTER_PORT=3306,
MASTER_USER='rep1',
MASTER_PASSWORD='rep1',
MASTER_LOG_FILE='mysql-bin-log.000003',
MASTER_LOG_POS=154;
MASTER_LOG_FILE和MASTER_LOG_POS显示show master status显示的值。
启动slave线程
start slave;
查看从库状态
show slave status \G
Slave_IO_Running和Slave_SQL_Running如果都为Yes且Last_IO_Errno后无错误说明,说明主从异步复制搭建成功。
接下来自己可以在主库上执行几条SQL建库、建表、CRUD相关操作,看看从库上是否有相关数据。
(1)首先,MySQL主库在事务提交时会把数据变更作为事件Events记录在二进制日志文件Binlog中;MySQL主库上的sync_binlog参数控制Binlog日志刷新到磁盘。
(2)主库推送二进制日志文件Binlog中的事件到从库的中继日志Relay Log,之后从库根据中继日志Relay Log重做数据变更操作,通过逻辑复制以此来达到主库和从库的数据一致。
MySQL通过3个线程来完成主从库间的数据复制:其中Binlog Dump线程跑在主库上,I/O线程和SQL线程跑在从库上。当在从库上启动复制(start slave)时,首先创建I/O线程连接主库,主库随后创建Binlog Dump线程读取数据库事件并发送给I/O线程,I/O线程获取到事件数据后更新到从库的中继日志Relay Log中去,之后从库上的SQL线程读取中继日志Relay
Log中更新的数据库事件并应用。如下图所示。
以数据库单主单从来说,目前我测试过的数据库的版本是5.7.17,在数据库binlog都已开启且无错误的情况下,下面的SQL中的ip可以根据自己的情况来做相应的修改
主库执行下面的SQL
grant replication slave on *.* to 'rep1'@'%' identified by 'rep1';
grant replication slave on *.* to 'rep1'@'192.168.1.6' identified by 'rep1';这条SQL我在执行后从库频繁报账户拒绝登录的问题。使用上面的SQL就不会出现问题。
flush privileges;
show grants for 'rep1'@'%';
查看主库上当前的二进制日志名和偏移量值
show master status;
从库执行下面的语句
CHANGE MASTER TO
MASTER_HOST='192.168.1.6',
MASTER_PORT=3306,
MASTER_USER='rep1',
MASTER_PASSWORD='rep1',
MASTER_LOG_FILE='mysql-bin-log.000003',
MASTER_LOG_POS=154;
MASTER_LOG_FILE和MASTER_LOG_POS显示show master status显示的值。
启动slave线程
start slave;
查看从库状态
show slave status \G
Slave_IO_Running和Slave_SQL_Running如果都为Yes且Last_IO_Errno后无错误说明,说明主从异步复制搭建成功。
接下来自己可以在主库上执行几条SQL建库、建表、CRUD相关操作,看看从库上是否有相关数据。
相关文章推荐
- 《深入浅出MySQL:数据库开发、优化与管理维护(2nd)》第31章之MySQL半同步复制搭建学习笔记
- 读《深入浅出MySQL:数据库开发、优化与管理维护》,学习了第一章
- 深入浅出MySQL开发优化和管理维护学习笔记之MySQL日志文件
- 《深入浅出MySQL--数据库开发、优化与管理维护》读书笔记--开发篇
- innoDB锁问题-《深入浅出Mysql--数据库开发、优化与管理维护》
- 深入浅出MySQL++数据库开发、优化与管理维护(第2版)pdf
- 深入浅出MySQL 数据库开发、优化与管理维护(第2版) -- 读书笔记 -- 基础篇
- mysql学习笔记之管理和维护篇(二)
- mysql 学习笔记5-- 数据库优化
- PHP学习笔记之1--开发环境搭建IIS +PHP +Mysql
- MYSQL优化之数据库结构优化-学习笔记(3)
- 【数据库学习笔记】MySQL_01_概述,操作库,操作表,管理数据
- mysql学习笔记之十六(数据库维护)
- MySQL 数据库设计 笔记与总结(4)维护优化
- 六、数据库优化(上)——Mysql主从复制搭建
- 用Java开发的MySQL,Oracle,PostgreSQL数据库web维护管理软件
- mysql性能优化学习笔记(5)数据库结构优化
- php学习笔记1--开发环境搭建:apache+php+mysql
- Nginx学习笔记——搭建Linux +Nginx+PHP+Mariadb(MySql)开发环境
- 【J2EE核心开发学习笔记 010】struts2的搭建及连接数据库实现用户注册与登录