本文章主要参考了mysql 官方的replication文档
http://dev.mysql.com/doc/refman/5.7/en/replication-configuration.html
本文章实验的两个机器的系统版本:
CentOS Linux release 7.1.1503 (Core)
两台机器的ip分别是:
192.168.0.106(master) 192.168.0.107(slave)
mysql版本:mysql-5.7.10
1、修改master的my.cnf文件
vi /etc/my.cnf
增加以下内容
log-bin=mysql-bin
server-id=106
2、修改slave的my.cnf文件
增加以下内容
server-id=107
3、创建一个主从复制的帐户并授权
CREATE USER 'repl'@'%' IDENTIFIED BY '123456’;
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%’;
4、取得二进制日志定位
使用master锁定为读模式
FLUSH TABLES WITH READ LOCK;
查看master二进制日志定位
mysql -u root -p; #先登陆
show master status;
file:mysql-bin.000002 和 Position:154这两个值后面会用到
5、取得master数据库快照(数据库备份)
在master机器
cd /usr/local/mysql/bin
./mysqldump -u root -p --all-databases > dbdump.db
可以用 find -name dbdump.db 看到dbdump.db就在当前目录
unlock table; #释放只读琐
6、把master的数据库传输至slave
这里使用的是sftp方式传输
sftp root@192.168.0.107
put /usr/local/mysql/bin/dbdump.db /var/backup/mysql/
7、把master备份出来的数据同步至slave
./mysqldump -u root -p --all-databases < /var/backup/mysql/dbdump.db
8、在slave上设置同步
mysql -u root -p; #登陆slave
CHANGE MASTER TO
MASTER_HOST='192.168.0.106',
MASTER_USER='repl',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=154;
start slave;
至此,主从复制已设置完成,我们可以通过增加数据实验配置是否成功,也可以用mysql命令查看主从复制的情况。
在master上运行:
show full processlist;
在slave上运行
show slave status\G;
***************** 1. row *****************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.0.106
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000002
Read_Master_Log_Pos: 724551
Relay_Log_File: localhost-relay-bin.000002
Relay_Log_Pos: 724717
Relay_Master_Log_File: mysql-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
只有当Slave_IO_Running和Slave_SQL_Running都为yes时 从服务器才设置成功。