1、 主配置,进入mysql.cnf在[mysqld]下面添加以下配置
[root@localhost ~]# vi /etc/mysql.cnf
server-id=1
binlog-format=row #二进制格式改为行row模式,三种模式statement语句模式,row行模式,mixed混合模式。当设置隔离级别为READ-COMMITED必须设置二进制日志格式为ROW,现在MySQL官方认为STATEMENT这个已经不再适合继续使用;但mixed类型在默认的事务隔离级别下,可能会导致主从数据不一致;
#添加以下这些选项
log-bin=master-bin.log
log-slave-updates=true #slave更新是否记入日志
gtid-mode=on #启用gtid类型,否则就是普通的复制架构
enforce-gtid-consistency=true # 强制GTID的一致性
master-info-repository=TABLE # 主服信息记录库=表/文件
relay-log-info-repository=TABLE # 中继日志信息记录库
sync-master-info=1 # 同步主库信息
slave-parallel-workers=4 # 从服务器的SQL线程数,要复制库数目相同
binlog-checksum=CRC32 # 校验码
master-verify-checksum=1 # 主服校验
slave-sql-verify-checksum=1 # 从服校验
binlog-rows-query-log_events=1 # 二进制日志详细记录事件
report-port=3306 # 提供复制报告端口
port=3306 #mysql的端口
report-host=master # 提供复制报告主机
2、从服务器配置
server-id=2
binlog-format=row
log-bin=slave-bin.log
log-slave-updates=true
gtid-mode=on
enforce-gtid-consistency=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-workers=4
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
report-port=3306
port=3306
report-host=slave
2、启动mysql,创建复制用户
service mysql start;
这里注意/etc/my.cnf和/etc/init.d/mysql文件里的datadir设置要一致,不然启动会报错:
[root@localhost tmp]# /etc/init.d/mysql start
Starting MySQL..... ERROR! The server quit without updatingPID file (/var/lib/mysql/localhost.localdomain.pid).
mysql> mysql -uroot -p123456;
mysql> grant replication slave on *.* to cfwxa@'%' identified by '123456';
4、查看主服务器状态信息:
mysql> show master status;
5、在主从服务器查看是否启动gtid功能
show global variables like '%gtid%';
===============================================
6、进入从库
从库连接主库:
mysql> change master tomaster_host='192.168.1.103', master_port=3306,master_user='cfwxa',master_password='123456',master_auto_position=1;
7、启动slave
mysql> start slave;
注意:主服务器的防火墙中要开启mysql的端口,不然这里是连不上的。
查看连接后从服务器状态:
mysql> show slave status\G
mysql>show processlist;
4个复制线程,主库上同时创建4个数据库,每个数据库事务启动一个复制线程,这些复制线程可同时启动;
8、测试主从库
主库 mysql>create database hellodb;
mysql>show databases;
查看从库 mysql>show databases;