实现环境:
Master 主:192.168.0.102 (Mysql 5.6.36)
Slave 从 :192.168.0.103 (Mysql 5.6.36)
步骤
1.在主DB服务器上建立复制账号 (在Master上执行)
# mysql
mysql> CREATE USER 'repl'@'192.168.0.%' identified by '123456';
mysql> GRANT REPLICATION SLAVE ON *.* ' TO repl'@'192.168.0.%';
2.主服务器配置 (在Master上执行)
# vim /etc/my.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /data/mysql
port = 3306
# binary logging #
log-bin = /data/mysql/log-bin #启动二进制日志
# replice #
server_id = 102 #指定服务ID
gtid_mode = on #开启GTID模式
enforce_gtid_consiste = on #强制GTID一致性(开启后CREATE TABLE ……SELECT ,创建临时表的语句不能再使用了)
log_slave_updates = on #将中继日志执行的结果写入到二进制日志中(5.7后在主库上可以不开,5.7强制开启)
3.从服务器配置 (在Slave上执行)
# vim /etc/my.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /data/mysql
port = 3306
# binary logging #
log-bin = /data/mysql/mysql-bin #启动二进制日志
# replice #
server-id = 103 #指定服务ID
relay_log = /data/mysql/relay-bin #启动中继日志
gtid_mode = on #开启GTID模式
enforce_gtid_consistency = on #强制GTID一致性(开启后CREATE TABLE ……SELECT ,创建临时表的语句不能再使用了)
#log_slave_update = on #在中继日志执行后写入到二进制日志中
#read_only = on #开启只读模式
#master_info_repository = TABLE #建议开启,有利于数据安全
#relay_log_info_repository = TABLE #建议开启,有利于数据安全
4.重启主MYSQL (在Master上执行)
# service mysqld restart
# #添加一些测试数据用于验证结果
# mysql
mysql> CREATE DATABASE CHEN;
mysql> USE CHEN;
mysql> CREATE TABLE T1 (ID INT);
mysql> INSERT INTO T1 VALUES (1),(2),(3);
mysql> q
5.重启从MYSQL (在Slave上执行)
# service mysqld restart
6.备份主数据库(如果主从上的数据库版本一样,可以全备) (在Master上执行)
# mysqldump --single-transaction --master-data=2 --triggers --routines --all-databases > 101_full.sql
7.将主数据库备份传输到从数据库中 (在Master上执行)
# scp /root/101_full.sql root@192.168.0.103:/root
8.将主数据库的备份导入到从数据库中 (在Slave上执行)
# mysql -uroot -p < 101_full.sql
9.初始复制链路 (在Slave上执行)
# mysql
mysql> change master to master_host='192.168.0.102',
-> master_user='repl',
-> master_password='123456',
-> master_auto_position=1;
10.启动当检查结果
mysql> start slave; (在Slave上执行)
mysql> show slave status G (在Slave上执行) 进程启动
mysql> show processlist; (在Slave上执行) 两个系统进程
mysql> show processlist; (在Master上执行) 一个系统进行
mysql> SELECT * FROM `chen`.t1; (在Master上执行) 查检结果是否一致
mysql> SELECT * FROM `chen`.t1; (在Slave上执行) 查检结果是否一致
mysql> INSERT INTO `chen`.t1 VALUES (4); (在Master上执行)
mysql> SELECT * FROM `chen`.t1; (在Master上执行) 查检结果是否一致
mysql> SELECT * FROM `chen`.t1; (在Slave上执行) 查检结果是否一致
如果都没有问题,那就OK啦