MySQL内的复制功能是构建MySQL的大规模、高性能的应用的基础,这类应用使用的是所谓的“水平扩展”的架构。
复制解决的问题:1、数据分布 2、负载均衡 3、备份
复制是如何工作:1、在主库上把数据更改记录到二进制日志中 2、备库将主库上的日志复制到自己的中继日志中 3、备库读取中继日志中的时间,将其重放在备库数据之上。
配置数据库:
1、创建复制账号
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO ‘REPL’@’192.168.0.%’ INDENTIFIED BY ‘PASSWORD’;
2、配置主库和备库
需要在主库上开启一些设置,假设主库是服务器server_ip,需要打开二进制日志并指定一个独立无二的服务器ID,在主库的my.cnf文件增加或修改如下内容:
log_bin = mysql-bin
server_id = 1 #建议是ip
查看:SHOW MASTER STATUS;
结果会显示出当前的日志文件:FILE,记住日志文件是多少
在备库上也要设置my.cnf:
log_bin =mysql-bin
server_id = 2
relay_log = /var/lib/mysql/mysql-relay-bin #复制日志文件
log_slave_updates =1
read_only =1 #只读
3、启动复制
CHANGE MASTER TO MASTER _HOST = ‘IP’ MASTER_USER = ‘REPL’ MASTER_PASSWORD =’PASSWORD’ MASTER_LOG_FILE = ‘FILE’ MASTER_LOG_POS = 0;
检测是否正确执行:SHOW SLAVE STATUS ;