一、前提
1、准备至少两个服务器节点 一个(mater),一个(slave)
2、这两个节点搭建成功mysql,mysql搭建请参考上一篇:Mysql5.7之tar包安装并初始化设置远程登录
二、复制的基本原理
1、原理
Slave会从master读取binlog来进行数据同步
2、复制的基本过程
Mysql复制过程分为三步
(1)master将改变记录到二进制日志,这些记录过程叫做日志事件 binary log events;
(2)slave将master的binary log events拷贝到它的中继日志(relay log);
(3)slave重做中继日志中的事件,将改变应用到自己的数据库中,mysql复制是异步且串行化的
三、主从配置
一主一丛的常见配置
1、master节点配置
前提:所使用的数据库版本必须一致
服务都是后台运行(不要跨越太多)
必须是同一个网段能ping的通
主要配置如下:必须有的是server-id=1唯一,log-bin=自己本地路径/mysqlbin必须有
server-id=1 # 主服务器唯一ID,必须
log-bin=自己本地路径/mysqlbin # 启用二进制日志文件
log-err=自己本地路径/mysqlerr # 错误日志的目录(可选参数)
basedir=”自己本地的路径” # 这个与java_home类似(可选参数)
tmpdir=”自己本地的路径”; # 临时目录(可选参数)
datadir=”自己本地的路径/data/” # 数据目录
read-only=0 # 主节点读写都可以
binlog-ignore-db=mysql # 设置不要复制的数据库
binlog-do-db=mysql #设置同步的数据
2、配置从服务器
从服务器id唯一
启用二进制文件日志:使用命令log-bin=mysql-bin
注意:没有特别需要配置这两个就可以
3、重新启动,配置生效
(1)service iptables status(查看命令),主机全部关闭防火墙或开通单独的开通端口,这里不再累赘
(2)service mysqld restart
四、在主节点上创建账户并授权slave
1、解释:授权从服务器IP通过该用户和密码复制我(主机master)的数据
GRANT REPLICATION SLAVE ON *.* TO 'wuquan'@'168.63.118.122' IDENTIFIED BY '123456';
2、刷新命令
flush privileges;
3、查看主机的状态
show master status;
注意这个之后不要再动主节点的了,事务不能变了
五、配置从节点
1、配置从机
在mysql客户端执行:名字根据master status来
CHANGE MASTER TO MASTER_HOST='主机IP',
MASTER_USER='用户',
MASTER_PASSWORD='密码',
MASTER_LOG_FILE='File名字',
MASTER_LOG_POS=Position数字;
执行结果:
2、启动复制命令
start slave;
检查从机的状态验证是否ok
show slave status\G
下面两个参数否是yes说明主从配置成功
Slave_IO_Runing:yes
Slave_SQL_Running:yes
注意:stop slave 之后记得每次查询主机(master)的日志点
六、测试
1、创建库-表-插入语句
2、从库查询
七、可能遇到问题