MySql--主从复制
Posted Ivan B.G. Liu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySql--主从复制相关的知识,希望对你有一定的参考价值。
mysql主从复制概述:
mysql的主从复制,可以实现读写分离和多处自动备份,提高数据库负载能力和安全性。如下图:
当web服务器向mysql数据库写数据时,统一写到master所在的主库。
当web服务器从mysql数据库读数据时,从各自的slave从库读取。
主库和从库之间的数据更新采用"异常更新"的方式执行,从库定时向主库发送心跳包,检测主库的二进制日志文件(binary log file)中有没有变动的地方,如果发现有变动就把变化复制到自己的中继日志中,然后从库的一个sql线程会把相关的"事件"执行到自己的数据库中,从而实现主从数据库的数据一致性,也就是主从复制。如下图:
Mysql主从复制配置:
- 主服务器的配置:
- 开启二进制日志(在my.cnf(或my.ini)中插入:log-bin=mysql-bin #开启二进制日志)
- 配置唯一的server-id(在my.cnf(或my.ini)中插入:server-id=1 #设置server-id)
- 获得master二进制日志文件名及位置(执行SQL:SHOW MASTER STATUS拿到file和position)
- 创建一个用于slave和master通信的用户账号,示例如下( 用户:rel1 密码:slavepass):
- mysql> CREATE USER \'repl\'@\'123.57.44.85\' IDENTIFIED BY \'slavepass\'; #创建用户
- mysql> GRANT REPLICATION SLAVE ON *.* TO \'repl\'@\'123.57.44.85\'; #分配权限
-
mysql> flush privileges; #刷新权限
- 从服务器的配置:
- 启用slave服务(执行SQL:start slave)
- 配置唯一的server-id(在my.cnf(或my.ini)中插入:server-id=2 #设置server-id)
- 使用master分配的用户账号读取master二进制日志,重启mysql,执行SQL语句如下:
- mysql > CHANGE MASTER TO
- > MASTER_HOST=\'182.92.172.80\',
-
> MASTER_USER=\'rep1\',
-
> MASTER_PASSWORD=\'slavepass\',
-
> MASTER_LOG_FILE=\'mysql-bin.000003\',
-
> MASTER_LOG_POS=73;
- mysql > CHANGE MASTER TO
以上是关于MySql--主从复制的主要内容,如果未能解决你的问题,请参考以下文章