以下是基于binlog的复制
1、配置之前为了无误,先将权限、防火墙处理了,关闭windows防火墙,centos7防火墙关闭命令
//临时关闭
systemctl stop firewalld
//禁止开机启动
systemctl disable firewalld
2、设置远程访问(同时在windows和linux的mysql命令行中运行以下命令)
Grant all privileges on *.* to 'root'@'%' identified by 'password' with grant option;
flush privileges;
3、修改配置文件(此操作在windows进行,修改my.ini文件)
[mysqld]
#id
server-id=1
# 二进制文件
log-bin="D:/Mysql/...data/mysql-bin"
#错误记录文件
log-error="D:/Mysql/...data/mysql-error"
#主从同步忽略的数据库
binlog-ignore-db=mysql
#指定主从同步需要同步的数据库(可选择性写)
binlog-do-db=test
修改完毕配置文件 ,主机授权从计算机,授权哪台计算机的数据库是自己的数据库,运行以下命令
grant replication slave,reload,super on *.* to 'root'@'192.168.178.%'identified by 'password';
flush privileges;
此时查看数据库的状态(此步骤前,确保mysql服务已经重启)
show master status;
注意:file的position需要在服务重启后查看最新值,可能会改变。
4、从机配置(配置linux中my.cnf文件)
[mysqld]
server-id=2
log-bin=mysql-bin
replicate-do-db=test
修改完毕,对从机进行授权,授权哪台及计算机数据库是自己的主数据库
重启从机的mysql服务
change master to master_host='192.168.178.1',master_user='root',master_password='password',master_port=3306,master_log_file='mysql-bin.000001',master_log_pos=783;
如果报错说以前处理过主从复制,执行stop slave;
开启主从同步
start slave;
show slave status \G; #可让内容竖着显示
检查slave_IO_runing和slave_SQL_runing,都为YES状态则可行。
在主从中分别查看server-id
show variables like '%server_id%';
至此,可在主机的test数据库执行增、改操作,观察从机的test数据库的变化。
以下是基于GTID的复制
基于GTID的复制与基于binlog的复制大致相同,不相同的地方如下:
1、同样需要建立复制用户,不要在从服务器建立相同的账号,避免冲突
2、主服务器my.ini配置
bin_log=/usr/local/mysql/log/mysql-bin #不适用默认数据目录存放,将log与数据放在不同目录
server_id = % #保持此值唯一
gtid_mode=on #打开gtid复制
enforce-gtid-consistency
log-slave-updates=on #5.7之前需要配置此参数,5.7不需要配置
3、配置从库
server_id= %
relay_log=/usr/local/mysql/log/relay_log
gtid_mode=on
enforce-gtid-consistency
log-slave-updates=on
read_only=on
master_info_repository=table
relay_log_info_repository=table
4、从库启动命令
change master to master_host='192.168.178.1',master_user='root',master_password='password',master_port=3306,master_auto_position=1;
5、基于GTID复制的优缺点
优点:可以很方便的进行故障转移
从库不会丢失主库的任何修改
缺点:故障处理比较复杂(跳过错误需要定位到具体的位置)
对执行的sql有一定的限制
6、如何选择这两种模式
所使用的的mysql版本(5.6才支持,早些的5.6版本有一些bug)
复制架构及主从切换的方式
所使用的的高可用管理组件(mmm不支持gtid复制,mha支持这两种复制)
对应用的支持程度