前提
两台服务器互相能ping通另一台,mysql版本要一致且服务要运行,下图是主从复制的流程图
![5751b3295e48a5593b98205d08bb438c.png](https://i-blog.csdnimg.cn/blog_migrate/5a1d7af7b53990d9d1ba97002135c543.jpeg)
MySQL复制过程分成三步:
- master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;
- slave将master的binary log events拷贝到它的中继日志(relay log) ;
- slave重做中继日志中的事件,将改变应用到自己的数据库中,MySQL复制是异步的且串行化的
主机配置
注意:一个主机(master)可以对应多个从(slave)
[mysqld]server-id=1 #必须主服务器ID唯一log-bin=mysql-bin #启用二进制日志文件read-only=0 #主机读写都可以binlog-ignore-db=mysql #设置不要复制的数据库binlog-do-db=设置需要复制的主数据库名字 #设置需要复制的数据库log-err=/var/log/mysql/mysqlerr #启用错误日志(配置可选)basedir=/usr #根目录(可选)temdir=/tmp#临时目录(可选)datadir=/var/lib/mysql #数据库目录(可选)
从机配置
#这个是丛集配置[mysqld]server-id=2 #修改服务器id,因为主机id=1,所以要修改从机的idlog-bin=mysql-bin #启用二进制日志文件
注意:主机从机配置完成后,要关闭防火墙,且都要重启mysql服务
主机上建立账户并授权slave
mysql>grant replication slave on *.* to "用户名"@"从机数据库ip" identified by '密码';mysql>flush privileges;#允许从机以用户名和密码进行复制主机数据
- 查询主机的状态
mysql>show master status; #记下file和position的值
![0401ab1149171697b1eda81a718d7ee3.png](https://i-blog.csdnimg.cn/blog_migrate/a348f3ab1433beb4c946992484427782.jpeg)
意义:从机要拷贝数据,就得从这个binlog文件的的353位置开始复制
File = mysql-bin.000237 Position =353
从机上配置需要复制的主机
mysql>change master to master_host="ip",master_user="主机授权的用户名",master_password="主机授权的密码",master_log_file="主机File文件名",master_log_pos=主机Position值;mysql>slave start; #配置从服务器的复制功能mysql>show slave status;mysql>slave stop;#配置从服务器关闭复制功能
![8e0b72dc47a26959b7575c3109ecf06f.png](https://i-blog.csdnimg.cn/blog_migrate/4ba675a199cce1b0b435fac94c128518.jpeg)
![019c40f21829aa10f079cbc7fed10af4.png](https://i-blog.csdnimg.cn/blog_migrate/db135818dbb45f7dd9686bc65b3e65ed.jpeg)