Windows下MySql主从配置实战教程

MySql的主从配置教程

主库MySql的安装
1、MySQL的下载
2、MySQL配置文件的编写
3、初始化数据库
4、安装服务
5、启动MySql
6、登录MySQL,修改密码
从库1MySql的安装
1、MySQL的下载
2、MySQL配置文件的编写
3、初始化数据库
4、安装服务
5、启动MySQL
6、重置密码
从库2MySql的安装
1、MySQL的下载
2、MySQL配置文件的编写
3、初始化数据库
4、安装服务
5、启动MySQL
6、重置密码
关联主库与从库
在主机上面操作
1、在主库(master)中创建一个用户用户与从库同步的用户名和密码,并授权。
2、在从库上操作

  • 为什么要做主从复制
  • 在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。
  • 做数据的热备
  • 架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。
  • Mysql主从复制的原理
  • binlog,主库中保存更新事件日志的二进制文件。
    主从复制的基础是主库记录数据库的所有变更记录到binlog。binlog是数据库中保存配置中过期时间内所有修改数据库结构或内容的一个文件。如果过期时间是10d的话,那么就是最近10d的数据库修改记录。

mysql主从复制是一个异步的复制过程,主库发送更新事件到从库,从库读取更新记录,并执行更新记录,使得从库的内容与主库保持一致。

在主库里,只要有更新事件出现,就会被依次地写入到binlog里面,是之后从库连接到主库时,从主库拉取过来进行复制操作的数据源。

  • binlog输出线程
    每当有从库连接到主库的时候,主库都会创建一个线程然后发送binlog内容到从库。
    对于每一个即将发送给从库的sql事件,binlog输出线程会将其锁住。一旦该事件被线程读取完之后,该锁会被释放,即使在该事件完全发送到从库的时候,该锁也会被释放。
    在从库里,当复制开始的时候,从库就会创建两个线程进行处理:

可以知道,对于每一个主从复制的连接,都有三个线程。拥有多个从库的主库为每一个连接到主库的从库创建一个binlog输出线程,每一个从库都有它自己的I/O线程和SQL线程。

从库通过创建两个独立的线程,使得在进行复制时,从库的读和写进行了分离。因此,即使负责执行的线程运行较慢,负责读取更新语句的线程并不会因此变得缓慢。比如说,如果从库有一段时间没运行了,当它在此启动的时候,尽管它的SQL线程执行比较慢,它的I/O线程可以快速地从主库里读取所有的binlog内容。这样一来,即使从库在SQL线程执行完所有读取到的语句前停止运行了,I/O线程也至少完全读取了所有的内容,并将其安全地备份在从库本地的relay log,随时准备在从库下一次启动的时候执行语句。

  • 从库I/O线程
    当START SLAVE语句在从库开始执行之后,从库创建一个I/O线程,该线程连接到主库并请求主库发送binlog里面的更新记录到从库上。
    从库I/O线程读取主库的binlog输出线程发送的更新并拷贝这些更新到本地文件,其中包括relay log文件。
  • 从库的SQL线程
    从库创建一个SQL线程,这个线程读取从库I/O线程写到relay log的更新事件并执行。

主库MySql的安装

1、MySQL的下载

将下好的MySQL存放在D盘中,所有文件内容如下:

2、MySQL配置文件的编写

在当前目录下新建my.ini文件,内容如下

[client]
# 设置mysql客户端默认字符集
default-character-set=utf8[mysqld]
# master服务唯一标识
server-id=1# master-bin是一个存放二进制log文件的路径,我这里指定了一个mysql当前安装目录的mysql-bin文件夹
# 开启二进制日志
log_bin=master-bin
log_bin-index=master-bin.index# binlog-do-db=需要同步的数据库名(多个数据库重复设置即可)
binlog-do-db=skysso# 动清理30天之前的log文件(可自由指定时间)
expire_logs_days=30# 设置3307端口
port=3307
character_set_server=utf8# 设置mysql的安装目录
basedir="D:/mysql-master/"
# 设置mysql数据库的数据的存放目录
datadir="D:/mysql-master/data/"# 允许最大连接数
max_connections=100
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'

3、初始化数据库

(管理员权限)切换到bin目录下:

D:\mysql-master\bin>mysqld --initialize --user=mysql --console
2019-04-12T07:29:19.960548Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2019-04-12T07:29:22.760708Z 0 [Warning] InnoDB: New log files created, LSN=45790
2019-04-12T07:29:23.446747Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2019-04-12T07:29:23.706762Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: b1d8cfad-5cf4-11e9-8de2-7845c41512c0.
2019-04-12T07:29:23.718763Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2019-04-12T07:29:23.751765Z 1 [Note] A temporary password is generated for root@localhost: .Yx79bCq.YCe

4、安装服务

mysqld --install mysql-master --defaults-file=“D:\mysql-master\my.ini”

就是将mysql-master加入service服务中,以后启动的时候只需要通过net start
mysql-master命令就行。同理,关闭服务的时候只要使用net stop mysql-master.

5、启动MySql

net start mysql-master

6、登录MySQL,修改密码

mysql -uroot -p -P3307set password for root@localhost = password('root');

从库1MySql的安装

1、MySQL的下载

2、MySQL配置文件的编写

[client]
# 设置mysql客户端默认字符集
default-character-set=utf8[mysqld]
# 服务唯一标识
server-id=2# master-bin是一个存放二进制log文件的路径,我这里指定了一个mysql当前安装目录的mysql-bin文件夹
# 开启二进制日志
relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index# 当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,
# 则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这样就保证了relay-log的完整性
relay_log_recovery=1# 只读模式(普通用户)
read_only=1# 只读模式(超级管理员)
super_read_only=1# binlog-do-db=需要同步的数据库名(多个数据库重复设置即可)
binlog-do-db=skysso# 动清理30天之前的log文件(可自由指定时间)
expire_logs_days=30# 设置3308端口
port=3308
character_set_server=utf8# 设置mysql的安装目录
basedir="D:/mysql-slave/"
# 设置mysql数据库的数据的存放目录
datadir="D:/mysql-slave/data/"# 允许最大连接数
max_connections=100
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'

3、初始化数据库

mysqld --initialize --user=mysql --console2019-04-12T07:49:10.739657Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2019-04-12T07:49:13.819833Z 0 [Warning] InnoDB: New log files created, LSN=45790
2019-04-12T07:49:14.471870Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2019-04-12T07:49:14.703883Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 77bcae4a-5cf7-11e9-a628-7845c41512c0.
2019-04-12T07:49:14.715884Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2019-04-12T07:49:14.737885Z 1 [Note] A temporary password is generated for root@localhost: r29Pq!Ic1uZR

4、安装服务

mysqld --install mysql-slave3308 --defaults-file="D:\mysql-slave\my.ini"

5、启动MySQL

net start mysql-slave3308

6、重置密码

mysql -uroot -p -P3308
set password for root@localhost=password('root');

从库2MySql的安装

1、MySQL的下载

2、MySQL配置文件的编写

[client]
# 设置mysql客户端默认字符集
default-character-set=utf8[mysqld]
# 服务唯一标识
server-id=2# master-bin是一个存放二进制log文件的路径,我这里指定了一个mysql当前安装目录的mysql-bin文件夹
# 开启二进制日志
relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index# 设置3308端口
port=3308
character_set_server=utf8# 设置mysql的安装目录
basedir="D:/mysql-slave/"
# 设置mysql数据库的数据的存放目录
datadir="D:/mysql-slave/data/"# 允许最大连接数
max_connections=100
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

3、初始化数据库

mysqld --initialize --user=mysql --console2019-04-12T07:49:10.739657Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2019-04-12T07:49:13.819833Z 0 [Warning] InnoDB: New log files created, LSN=45790
2019-04-12T07:49:14.471870Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2019-04-12T07:49:14.703883Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 77bcae4a-5cf7-11e9-a628-7845c41512c0.
2019-04-12T07:49:14.715884Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2019-04-12T07:49:14.737885Z 1 [Note] A temporary password is generated for root@localhost: r29Pq!Ic1uZR

4、安装服务

mysqld --install mysql-slave3308 --defaults-file="D:\mysql-slave\my.ini"

5、启动MySQL

net start mysql-slave3308

6、重置密码

mysql -uroot -p -P3308
set password for root@localhost=password('root');

关联主库与从库

在主机上面操作

1、在主库(master)中创建一个用户用户与从库同步的用户名和密码,并授权。

# 创建有复制权限的账号
GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO 'backdb'@'%' IDENTIFIED BY 'root';# 查看主库状态(记录File、Position、Binlog_Do_DB的值)
show master status;
# 查看big-log日志是否开启成功
show variables like '%log_bin%';

2、在从库上操作

# 查看从库状态(Slave_IO_State、Slave_IO_Runing、Slave_SQL_Runing这三个参数很重要)
show SLAVE STATUS;# 关联主库和从库(操作之时主库停止操作,还得先关闭主从同步)相关的参数在主库中执行`show master status`命令中获取
change master to master_host='主库IP地址',master_port=主库端口,master_user='主库用户名',master_password='主库用户密码',master_log_file='要同步的文件名称',master_log_pos=要开始同步的位置;# 关闭主从同步
stop slave;# 重置主从同步信息
reset slave;# 开启主从同步
start slave

参考连接 :
MySql主从配置实战教程 : https://mp.weixin.qq.com/s/OSTaRJJz8y-t3_EyP38dqg

Windows下MySql主从配置实战教程相关推荐

  1. Windows下Mysql主从配置(Mysql5.5)

    主数据库IP:192.168.3.169 从数据库IP:192.168.3.34 主数据库配置my.inin: 在[mysqld]下添加配置数据: server-id=1     #配一个唯一的ID编 ...

  2. windows下mysql和linux下mysql主从配置

    1. linux下mysql安装版本5.6   windows下mysql版本5.7  不要问我为什么版本不一致  就是想这么搞 2. linux为主服务器   windows为从服务器 3.找到li ...

  3. windows中MySQL主从配置【第一篇】

    前言:         windows系统配置MySQL主从复制,系统中需要安装两个MySQL服务.我本地用的是集成环境,集成环境已经有一个MySQL服务,那么就需要自己在单独下载安装一个MySQL服 ...

  4. Windows下MySQL的详细安装教程

    1.安装之前需要注意的几点 建议不要安装最新版本,一般找mysql5.0系列版本即可: mysq1官网有.zip和.msi两种安装形式: zip是压缩包,直接解压缩以后使用的,需要自己配置各种东西:m ...

  5. Linux下mysql主从配置

    mysql服务器的主从配置,这样可以实现读写分离,也可以在主库挂掉后从备用库中恢复 需要两台机器,安装mysql,两台机器要在相通的局域网内 主机A: 192.168.1.100 从机B:192.16 ...

  6. mysql主从配置详细教程

    1.准备两台服务器 主数据库 | 192.168.10.2 | master | 从数据库 | 192.168.10.23 | slave | 2.启动两台服务器 3.关闭系统防火墙 4.保证两台服务 ...

  7. linux mysql主从配置_linux下mysql主从配置

    还可以参考:https://www.cnblogs.com/Halifa/archive/2016/08/23/5799566.html 一.主服务器相关配置 1.创建同步账户并指定服务器地址 [ro ...

  8. windows下mysql主从同步_详解windows下mysql的主从同步

    半路出家到Java,刚开始听说到说程序支持读写分离感觉特别高大上,也一直没接触 偶然的机会接触到了,就一定得记下来. 今天先讲讲数据库的主从同步,两个好处: 是读写分离可以用上.比如 写操作就写到主数 ...

  9. windows下mysql安装配置启动

    1. 从官网下载mysql免安装包 mysql-5.7.12-win32.zip 2. 解压,配置环境变量 我的电脑->属性->高级->环境变量 选择PATH,在其后面添加: 你的m ...

最新文章

  1. 关于Cocoa Pods的升级安装和使用说明
  2. Git探秘:实用主义(1/2)
  3. JavaScript的语言组成
  4. Redis常用命令之操作List类型
  5. access表怎么生成表结构_数据结构——单链表讲解
  6. LinuxWindows下批量修改文件后缀
  7. xfce4的右键打开终端失效
  8. 超详细 - SVN下载安装及使用教程
  9. netty中的引导Bootstrap服务端
  10. 游戏建模之3Dmax的重要性
  11. raspberry pi_使用Kubernetes在Raspberry Pi上进行集群计算
  12. Web前端Javascript笔记(5)事件
  13. 时序分析基本概念介绍——时钟sdc
  14. 并发减库存,怎么保证不超卖?
  15. memcached群集
  16. canvas实现圆饼图,柱状图,折线图(满满的干货)
  17. HashMap源码分析与实现
  18. 笔记本加装固态和内存条教程(超详细)
  19. linksys 路由器刷机备忘
  20. 2022年全球及中国工程机械租赁行业头部企业市场占有率及排名调研报告

热门文章

  1. ortools解决tsp_ortools系列:后话
  2. python爬虫有道词典_Python爬取有道词典,有道的反爬很难吗?也就这样啊!
  3. python发送html格式邮件,python 发送html格式邮件到qq(示例代码)
  4. java面试排序都考哪几种排序_java算法面试题:排序都有哪几种方法?
  5. 某大型银行深化系统之十八:性能设计之三
  6. python求成绩平均值_(生活)使用Python计算学生成绩平均值
  7. 制打印如下所示的n行数字金字塔_关于央行数字货币的技术猜测
  8. RxJava--takeWhile,takeUntil,(附带filter)的特性总结
  9. Java springcloud B2B2C o2o多用户商城 springcloud架 (二): 配置管理
  10. 《R语言数据挖掘:实用项目解析》——1.9 循环原理——repeat循环