一、 主从复制原理
1.master 将改变记录到二进制日志(binary log)。 这些记录过程叫做二进制日志事件, binary log events;
2.slave 将 master 的 binary log events 拷贝到它的中继日志(relay log);
3.slave 重做中继日志中的事件, 将改变应用到自己的数据库中。 MySQL 复制是异步的且串行化的
二、主从配置
1.mysql 版本一致且后台以服务运行
2.主从都配置在[mysqld]结点下, 都是小写
主机修改 my.cnf配置文件
[mysqld]
##主机配置
##主服务器唯一 ID
server-id=1
##启用二进制日志
log-bin=mysql-bin
# 设置不要复制的数据库(可设置多个)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#设置需要复制的数据库
binlog-do-db=需要复制的主数据库名字
#设置logbin格式
binlog_format=STATEMENT
binlog_format=STATEMENT(默认)
binlog_format=ROW
binlog_format=MIXED
从机配置文件修改 my.cnf 的[mysqld]栏位下
##从机服务 id
##注意 my.cnf 中有 server-id = 1
server-id = 2
##启用二进制日志
log-bin=mysql-slave-bin
#启用中继日志
relay-log=mysql-relay
3.因修改过配置文件, 请主机+从机都重启后台 mysql 服务
4.主机从机都配置防火墙
5.主机上建立帐户并授权 slave
#创建用户, 并授权 ip可以用%代替
GRANT REPLICATION SLAVE ON *.* TO '备份账号'@'从机器数据库 IP' IDENTIFIED BY '123456';
flush privileges;
6.查询 master 的状态, 并记录下 File 和 Position 的值
#查询 master 的状态
show master status;
7.从机上配置需要复制的主机
#查询 master 的状态
CHANGE MASTER TO MASTER_HOST='主机 IP',MASTER_USER='创建用户名',MASTER_PASSWORD='创建的密码',MASTER_LOG_FILE='File 名字',MASTER_LOG_POS=<Position>;
8.启动从服务器复制功能
start slave;
show slave status\G
下面两个参数都是 Yes, 则说明主从配置成功!
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
9.主机新建库、 新建表、 insert 记录, 从机复制
10.停止从服务复制功能
stop slave;
11.重新配置
stop slave;
reset master;