主从同步原理:TODO
数据库准备:至少需要两台服务器,以后肯定是独立两台电脑,当然也可以使用虚拟机。本次采用安装多个服务(使用不同的端口)来代替服务器.
一、环境准备:
准备主库master:
1.解压mysql安装包。
2.修改my.ini文件:在[mysqld]下添加如下配置
[mysqld]
#二进制日志文件,主从重点文件
log-bin=mysql-bin
#服务ID随便取但是要唯一
server-id=1
#端口号 在单台机器上通过不同端口来模拟集群
port=3307
#日志文件 方便检查操作信息
log="E:/mysql_cluster/master/master.log"
#Path to installation directory. All paths are usually resolved relative to this.
#安装目录
basedir="E:/mysql_cluster/master/"
#数据存放目录
datadir="E:/mysql_cluster/master/Data/"
3.将老的MySql的数据目录拷贝 data\mysql 和 data\performance_schema 到新的MySql的数据目录,这个是MySql的初始化数据。在my.ini中datadir就是数据目录位置,不然用navicat连不上。
4.安装master-修改my.ini文件的安装命令如下图,拷贝该命令在master的bin目录下进入cmd执行。
准备从库slave:
1.为了方便,直接拷贝master文件夹,改名为slave。
2.更改slave的my.ini文件:将master字符全部换成slave,更改端口,更改服务ID
[mysqld]
#二进制日志文件,主从重点文件
log-bin=mysql-bin
#服务ID
server-id=2
#端口号
port=3308
#日志文件
log="E:/mysql_cluster/slave/slave.log"
#安装目录
basedir="E:/mysql_cluster/slave/"
#数据存放目录
datadir="E:/mysql_cluster/slave/Data/"
3.因为master已经拷贝了data\mysql 和 data\performance_schema 文件夹,此步骤不用再做。
4.安装master-修改my.ini文件的安装命令(同master的第4步骤),拷贝命令在slave的bin目录下进入cmd执行。
二.主从配置:
master:连接matser执行以下命令:
- 授权savle服务器的使用的账号及权限
GRANT REPLICATION SLAVE ON *.* to 'slaveuser'@'192.168.192.1'identified by '123456';
参数说明:
- slaveuser:slave连接master使用的账号
- IDENTIFIED BY '123456' :slave连接master使用的密码
- 192.168.192.1:slave IP
2.查询主数据库状态
show master status;
从库slave配置:
slave:连接slave执行以下命令:
1.在slave端,配置master连接信息
CHANGE MASTER TO master_host = '192.168.192.1',#master IP
master_user = 'slaveuser',#master数据库通过GRANT授权的账号
master_password = '123456',#master数据库通过GRANT授权的密码
master_port = 3307,#master数据库的端口
master_log_file = 'mysql-bin.000001',#master数据库中通过show master status显示的File名称
master_log_pos = 1232 #master数据库的通过show master status显示的Position的值
2.启动同步
start slave;
3.主从同步检查
show slave status;
当Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,才表明状态正常。
完成主从,此时只能在master上写数据,slave上读数据。若违反约束,则需要重新配置。