试验环境:Windows下安装的两台虚拟机,均使用centos系统。
MasterIP:192.168.1.250
Slave IP:192.168.1.90
目的:在Master上已经存在一个test数据库,已经写入一部分数据。现在为Master增加一个Slave,用作Master的备份或者做数据报表或者分析。这样可以提高MySQL服务器数据的安全性与高可用性。
1、 配置Master的my.cnf文件
log-bin= mysql-bin #查看bin-log是否开启
server-id= 250 #设置成和IP最后一个数字一样
binlog-ignore-db= mysql # 设置不进行同步复制的数据库
binlog-ignore-db= information_schema
2、 在Master上建立repilication用户
mysql>grant repilication slave on *.* to 'repuser'@'%' identified by 'sylar';
用户名为:repuser
密码:sylar
3、 配置Slave的my.cnf文件
log-bin=mysql-bin
server-id= 90
replicate-do-db= test #设置复制的数据库
replicate-ignore-db= mysql
replicate-ignore-db= information_schema
#另外可以指定relay-bin文件的名字,默认名为‘主机名‘+‘relay-bin‘。
4、 对Master数据库进行刷新flush并加锁
这一不可以不需要,mysqldum备份时会自动对数据库加锁。
mysql>flushtables with read lockl;
5、 创建数据库备份
#mysqldump -uroot -p --databases test > test.sql
6、 查看当前Master上的binlog文件及其位置
mysql>showmaster status;
File:mysql-bin.000045
Position:1371
Binlog_Do_DB:
Binlog_Ignore_DB:mysql,information_schema
File和Position信息用于告诉Slave从何处开始复制。
7、 解锁
mysql>unlock tables;
8、 在Slave上导入数据库备份文件,并设置与Master的复制连接
导入数据库备份文件:
change master to master_host='192.168.1.250', master_user='repuser',master_password='sylar', master_log_file='mysql-bin.000045',master_log_pos=1371;
9、 启动Slave复制
mysql>slavestart;
10、检查Slave是否正常启动
mysql>show slave status\G;
其中两个选项:
Slave_IO_Running:Yes
Slave_SQL_Running:Yes
均为Yes表示成功启动Slave复制。
Slave_IO用于读取bin-log日志的IO线程,Slave_SQL表示执行复制的SQL进程。
如果出现NO,可以查看错误mysql的data目录下的错误日志文件,查看具体的出错的原因。
在Master数据库进行新建表或者插入新的数据记录,查看Slave是否能够进行同步。
MySQL通过bin-log进行同步,在Master进行写操作(update,insert,create,delete),Slave上进行读操作(select)。比如优快云博客,你修改文章后,刷新发现读出文章没有进行更行,这很明显是读写分离。