复制的基本原理
slave会从master读取binlog来进行数据同步 复制过程三个步骤
master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件 slave将master的binary log events 拷贝到它的中继日志(relay log) slave重做中继日志的时间,将改变应用到自己的数据库中,MySQL复制是异步的且串行化的
复制的基本原则
每个slave只有一个master 每个slave只能有一个唯一的服务器ID(类似只能有一个ip+端口) 一个master可以有多个slave
复制的最大问题
延时
一主一从常见配置
mysql版本一致且后台以服务运行 主从配置都在[mysqlId]节点下,都是小写
window下my.ini(主机)
server-id= 1 -- 1. 主服务器唯一ID(必须)
log-bin= mysql/data/mysqlbin -- 2. 启用二进制日志(必须),自己的路径+mysqlbin
log-err= mysql/data/mysqlerr -- 3. 启用错误日志(可选)
basedir = "mysql" -- 4.根目录(可选)
tmpdir = "mysql" --5.临时目录(可选)
datadir = "mysql/data" --6. 数据目录(可选)自己目录+data
read-only = 0 -- 7. 主机读写都可以
binlog-ignore-db = dbname -- 8.设置不要复制的数据库
binlog-do-db = dbname --9.设置需要复制的数据库,不设置默认全复制
Linux下my.cnf
server-id= 2 -- 1. 主服务器唯一ID(必须)
log-bin= mysql-bin -- 2. 启用二进制日志(可选),自己的路径+mysqlbin
因修改过配置文件,需要重启服务 主机从机都关闭防火墙
Linux:service iptables stop 在Windows主机上建立账户并授权给slave
GRANT REPLICATION SLAVE ON *.* TO 'USER' @'192.168.XX.XX' IDENTIFIED BY 'password' ;
flush privileges;
show master status;
在Linux从机上配置需要复制的主机
CHANGE MASTER TO MASTER_HOST = '192.168.XX.XX' ,
MASTER_USER= 'USER' ,
MASTER_PASSWORD= 'password'
MASTER_LOG_FILE= 'mysqlbin.具体数字' ,MASTER_LOG_POS= 具体值;
start slave;
show slave status\G
( Slave_IO_Running:Yes + Slave_SQL_Running:Yes)
stop slave