mysql在Windows下实现主从复制(数据库读写分离)

不凡 数据库 768

先来看看主从复制的数据走向,大致意思是主数据库新增的数据会自动同步到从数据库中

mysql在Windows下实现主从复制(数据库读写分离)-第1张图片-爱制作博客

MySQL主从复制允许将来自一个数据库(主数据库)的数据复制到一个或多个数据库(从数据库)。
主数据库一般是实时的业务数据写入和更新操作,从数据库常用的读取为主,从而实现数据库读写分离。

大致过程

1、主服务器上面的任何新增修改都会通过自己的 I/O tread(I/O 线程)保存在二进制日志里面。
2、从服务器上面也启动一个 I/O thread,通过配置好的用户名和密码, 连接到主服务器上面请求读取二进制日志,然后把读取到的二进制日志写到本地的一个log(中继日志)里面。
3、从服务器上面同时开启一个 SQL thread 定时检查 Realy log(这个文件也是二进制的),如果发现有更新立即把更新的内容在本机的数据库上面执行一遍。

主从复制步骤开始

主数据库:

1.新建一个test的数据库

2.配置my.ini文件 文件路径在C:\ProgramData\MySQL\MySQL Server 5.7 下,弄了半天才发现my.ini是在ProgramData下的mysql中,而mysql安装路径中没有my.ini只有my-default.ini(这是一个坑)

3.把my.ini中的注释打开,分别是:

# logbin日志必须开启,配置要复制的数据库'test'
log-bin
binlog_do_db=test 
# Server Id. 主数据库的服务ID
server-id=1

4.重启mysql服务,在Windows中点服务找到mysql,点击重启

mysql在Windows下实现主从复制(数据库读写分离)-第2张图片-爱制作博客

5.创建主从同步用的账号

在mysql安装路径下的bin文件夹执行cmd(管理员)

mysql在Windows下实现主从复制(数据库读写分离)-第3张图片-爱制作博客

输入下边的命令

mysql -uroot -p

输入自己的数据库密码

mysql在Windows下实现主从复制(数据库读写分离)-第4张图片-爱制作博客

然后执行创建用户命令

mx 为登录账号

172.16.41.36 为从库的IP地址

123456 为账号的密码

CREATE USER 'mx'@'172.16.41.36' IDENTIFIED BY '123456';

授予权限

GRANT REPLICATION SLAVE ON *.* TO 'mx'@'172.16.41.36';

刷新权限

FLUSH PRIVILEGES;

6.查看Master状态,记录二进制文件名和位置

show master status;

mysql在Windows下实现主从复制(数据库读写分离)-第5张图片-爱制作博客

文件名为jinxiao-sd-bin.00003 位置是4024

至此主数据库设置完毕

从数据库(操作与主数据库配置类似,有不懂的可参考主数据库配置)

  1. 创建测试数据库“test”

  2. 配置my.ini文件(设置server-id和log-bin日志跟主数据库配置类似,唯一不同的是server-id不能相同)

  3. 重启mysql服务

  4. cmd命令行登陆MySQL数据库(与主数据库操作一样),执行下面命令进行同步

CHANGE MASTER TO MASTER_HOST='172.16.41.36',MASTER_PORT=3306,MASTER_USER='mx',MASTER_PASSWORD='123456',MASTER_LOG_FILE='jinxiao-sd-bin.000003',MASTER_LOG_POS=4024;

    其中:

        MASTER_HOST='172.16.41.36' 为主数据库IP

        MASTER_PORT=3306 为主数据库端口号

        MASTER_USER='mx' 为主数据库设置的账号

        MASTER_PASSWORD='123456'为主数据库设置的密码

        MASTER_LOG_FILE='jinxiao-sd-bin.000003' 为主数据库的二进制日志文件

        MASTER_LOG_POS=4024; 为数据库二进制文件的位置

5.启动salve同步进程

start slave;

完成,可查看slave状态

show slave status\G

Slave_IO_Running: Yes,

Slave_SQL_Running: Yes

时说明两个线程已启动,主从复制配置成功。

标签: MySQL

发布评论 1条评论)

  • Refresh code

评论列表

2020-06-23 17:00:57

666