windows10 安装两台mysql进行主从复制

注意:mysql主从复制,主从版本要一致!

环境:win10  64位

1.下载mysql的安装包

mysql官网 https://dev.mysql.com/downloads/mysql/5.7.html#downloads

本人使用的是  Windows (x86, 64-bit), ZIP Archive  

windows10 安装两台mysql进行主从复制_第1张图片

详细安装操作步骤参考: https://www.cnblogs.com/xiaxiaoxu/p/8977418.html

下载好后,在 mysql-5.7.22-winx64 文件夹中创建  data文件夹和 my.ini 文件

windows10 安装两台mysql进行主从复制_第2张图片

主:在my.ini 的  [mysqld]  中添加设置 

    port = 3306

    basedir=C:\Program Files\mysql-5.7.22-winx64  (mysql文件夹路径)

    datadir=C:\Program Files\mysql-5.7.22-winx64\data  (data路径,存放日志文件)

    log-bin=mysql-bin

    server-id = 1

   #binlog-do-db=test (本人未设置)

   #binlog-ignore-db=mysql (本人未设置)

binlog-do-db=test 表示需要备份的数据库为test 
binlog-ignore-db=mysql 表示不需要备份的数据库为mysql 

如果两个都不设的话,从服务器会复制主服务器的全部数据库  (本人就是此设置

log-bin=mysql-bin 表示开启二进制日志,并把二进制日志前缀改为mysql-bin

MySQL安装过程:

在系统变量中 新建一个变量名:MYSQL_HOME, 

变量值:C:\Program Files\mysql-5.7.22-winx64  (主 mysql文件路径)

windows10 安装两台mysql进行主从复制_第3张图片

以“管理员身份”运行  cmd,进入mysql的bin目录

以下图片仅视作参考

运行命令:mysqld  --initialize (此时会生成data目录)

 运行mysqld -install (安装)

 

运行net start mysql (启动mysql服务)

可以在任务管理器中看到MySQL服务

 windows10 安装两台mysql进行主从复制_第4张图片

 

设置root账户密码:

在my.ini文件(MySQL的配置文件)的[mysqld]下加一行 skip-grant-tables

然后在任务管理器中重启MySQL服务

windows10 安装两台mysql进行主从复制_第5张图片

 

 重启MqSQL服务后,运行mysql -uroot -p,可以成功登入mysql

然后更新root账户的密码为'root'

命令:update mysql.user set authentication_string=password("root") where user="root";

然后输入flush privileges;(刷新账户信息)

执行quit或ctrl+Z退出

然后将my.ini文件中刚才加的 skip-grant-tables 这一行删掉,保存后再重启MySQL服务


windows10 安装两台mysql进行主从复制_第6张图片

 然后运行mysql -uroot -proot就可以用root用户名和root密码登陆了

启动主服务后,在mysql中创建新用户:

create user 'mytest'@'127.0.0.1' identified by '123456';

注: 
@后面的ip地址为允许连接的客户端的ip地址。mytest是用户名,123456是密码

然后,给新用户配置主从复制的权限:

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

注: 
@后面的ip地址为允许连接的客户端的ip地址,如果改为 ‘%’,就表示客户端没有ip地址的限制

然后查看主服务master的状态: (每重启一次mysql服务,mysql-bin的日志就会新建一个,所以重启主服务,从服务必须先停止再重新配置后启动

 show master status;

+——————+———-+————–+——————+——————-+ 
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | 
+——————+———-+————–+——————+——————-+ 
| mysql-bin.000003 | 106 | test | mysql | | 
+——————+———-+————–+——————+——————-+

注意: 
记住file,和position,因为等下配置从数据库的时候会用到

安装从mysql  (复制主的mysql文件,将data中的 auto.cnf 文件删除

从:在my.ini 的  [mysqld]  中修改设置 

[mysqld]
port = 3307
basedir=D:\mysql2\mysql-5.7.22-winx64
datadir=D:\mysql2\mysql-5.7.22-winx64\data
log-bin=mysql-bin
server-id = 2
replicate-do-db=test
#同步某表用  replicate-wild-do-table
replicate-wild-do-table =test.test
replicate-wild-do-table =test.test1
replicate-wild-do-table =test.test2

保存my.ini后

在系统变量 MYSQL_HOME 中 新增 变量值:  D:\mysql2\mysql-5.7.22-winx64  (从 mysql文件路径)

用管理员身份运行cmd,进行mysql的安装  参考上诉主服务mysql安装

运行 D:\mysql2\mysql-5.7.22-winx64\bin目录下的mysql

mysqld install MySQL2  --defaults-file="D:\mysql2\mysql-5.7.22-winx64\my.ini"

如果提示“Service successfully installed”则说明安装成功

之后连接mysql        mysql -uroot -p -P3307 (mysql 3307的密码设置 参考住服务的root设置

启动后执行

change master to master_host='localhost',master_user='mytest',master_password='123456',master_log_file='mysql-bin.000008',master_log_pos=1114;


参数详解: 
master_host: 主服务器的IP 
master_user: 主服务器上新创建的用户名 
master_password: 用户的密码 
master_port: 主服务器的端口,如果未曾修改,默认即可。 
master_log_file: 主服务器二进制日志文件的名称,填写查看主服务器的master状态时显示的File的值 
master_log_pos: 日志的位置,填写查看主服务器的master状态时显示的Position的值

windows10 安装两台mysql进行主从复制_第7张图片

启动从服务的slave复制功能:

start slave;

查看从服务器的slave状态:

show slave status \G

***************** 1. row ***************** 
Slave_IO_State: Waiting for master to send event 
Master_Host: 127.0.0.1 
Master_User: mytest 
Master_Port: 3306 
Connect_Retry: 60 
Master_Log_File: mysql-bin.000003 
Read_Master_Log_Pos: 106 
Relay_Log_File: DESKTOP-DMGAKUM-relay-bin.000002 
Relay_Log_Pos: 251 
Relay_Master_Log_File: mysql-bin.000003 
Slave_IO_Running: Yes 
Slave_SQL_Running: Yes 
Replicate_Do_DB: 
Replicate_Ignore_DB: 
Replicate_Do_Table: 
Replicate_Ignore_Table: 
Replicate_Wild_Do_Table: 
Replicate_Wild_Ignore_Table: 
Last_Errno: 0

如果 Slave_IO_Running 和 Slave_SQL_Running 的值都为 Yes,则说明主从复制的所有配置已成功,即从服务器已经可以自动与主服务器的数据库数据实现同步了。 

你可能感兴趣的:(数据库)