主从复制的原理
主服务器
开启二进制文件,记录操作配置 唯一的 serverID获得master 二进制文件位置提供一个让 从服务器使用的,进行通信的账号 从服务器
配置 唯一的 serverID用master 提供的账号访问二进制文件
首先master 服务器 将自己的操作数据库事件记录到二进制文件中,然后提供一个账号给从数据库,slave 从服务器会对这个二进制文件进行监听,一旦有改变,就用master提供的账号,将时间复制到自己的中继日志,然后执行操作。这个过程master 会提供一个专门的IO线程来操作,所以不会对正常的使用造成影响。
安装多个数据库
我的是在windows的,所有安装了3个服务
localhost:3306;localhost:3310localhost:3320 具体 怎样安装多个服务,参考上一篇: https://blog.csdn.net/houdezaiwu1/article/details/90260359
一 master 配置
1. 修改 my.ini 添加master
#=========主从复制关键配置=====================
server_id=1 #主库和从库需要不一致,配一个唯一的ID编号,1至32。 手动设定
log-bin=master-bin #二进制文件存放路径,存放在根目录data
#binlog-do-db=test #需要复制的库,多个库用逗号隔开,如果此项不配置所有主库都参与复制
#binlog-ignore-db=mysql #不需要复制的库,和上项同理
#=========主从复制关键配置=====================
保存,重启服务。net start mysql
登录查看状态show master status file 就是保存日志的二进制文件,position 107代表操作数据库的事件位置标记。
2. 创建用于给从库使用的账号
create user copyuser; #用户名就是 copyusergrant replication slave on . to ‘copyuser’@'127.0.0.1’identified by ‘123456’; # 分配权益flush privileges; #刷新权限
二 slave 从服务器配置
1. my.ini修改
#========主从复制关键配置======================
server_id=2 #主库和从库需要不一致
#binlog-do-db=test #和主库说明一致
#binlog-ignore-db=mysql #和主库说明一致
#========主从复制关键配置======================
2. 执行同步语句
change master to master_host=‘127.0.0.1’,master_port=3306,master_user=‘copyuser’,master_password=‘123456’,master_log_file=‘master-bin.000001’,master_log_pos=0;
3. 启动同步进程
start slave # 开始同步
4. 查看同步情况
show slave status\G
可以看到: Slave_SQL_Running : NO 还有last error,写明了具体的错误。 这是没有成功的,因为执行过程报错了, 执行命令跳过这个错误继续执行:
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
下面就正常了 按照相同步骤,配置第二个从库,省略。。。。。
三 验证
登录sqlyong 可以看到已经同步了 略。。。。