mysql 主从复制

mysql主(称master)从(称slave)复制的原理:

从库生成两个线程,一个I/O线程,一个SQL线程;

i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中;

主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog;

SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致;

总结:

  1. master所有数据库或者指定数据库修改或者删除等记录到日志文件中(以二进制的形式记录
  2. slave将master的生成的日志文件拷贝自己中继日志,relay log读取文件中的日志,并解析成具体操作执行从而改变自己的数据。

 

1.准备两个数据库 。

 mysql -3380  找到 my.ini   

#设置3306端口  必须是唯一  (当前设备mysql
port = 3380 

# Server Id. 必须是唯一(所有mysql
server-id=3380

#主从复制指定数据库 不指定就是全部。
binlog-do-db=achievement_conversion_db

# 二进制日志 
log-bin="C:/app/MySQL-Proxy/mysql-3380/logs/mysql-bin"

# 错误日志
log-error="C:/app/MySQL-Proxy/mysql-3380/logs/mysql.err.log"

 mysql -3380  找到 auto.cnf  

[auto]   # 必须是唯一(所有mysql
server-uuid=cb5a05e2-782b-11e8-84cb-00163e042fa8

win添加服务方便启动  (进入mysql bin目录下)

添加服务

.\mysqld.exe install MySQL-3381 --defaults-file="my.ini的位置"
 

mysql -3381 同理设置 

 

启动mysql (如果不知道root密码 my.ini [mysqld]中 加上 skip-grant-tables

 

mysql配置

 1.查看主库信息。 SHOW MASTER STATUS

mysql 主从复制_第1张图片

2.主库创建同步用户

授权用户slave01使用123456密码登录mysql

grant replication slave on *.* to 'slave01'@'127.0.0.1' identified by '123456';

#刷新权限

flush privileges;

打开 mysql库中user表就能看到刚创建的用户了。 (host %所有ip都能访问。)

mysql 主从复制_第2张图片

3.从库配置。

#设置同步信息

CHANGE MASTER TO

 master_host='127.0.0.1', #对应主库 :主库 ip

 master_user='slave01', #对应主库 :主库 同步账号

 master_password='123456', #对应主库 :主库 同步密码

 master_port=3380,# 对应主库 :端口

 master_log_file='mysql3306-bin.000006',# 对应主库 :FILE

 master_log_pos=1120;  # 对应主库 :Position

mysql 主从复制_第3张图片

#启动slave同步

START SLAVE;

#停止slave同步

stop SLAVE;

#查看同步状态

SHOW SLAVE STATUS;

mysql 主从复制_第4张图片

I/O线程,SQL线程 都yes 就实现同步了。

你可能感兴趣的:(mysql 主从复制)