隐藏

Windows系统环境下创建mysql主从数据库方法(双向主从复制)

发布:2023/4/16 9:44:39作者:管理员 来源:本站 浏览次数:644

创建mysql主从数据库方法(双向主从复制)


(一)Windows系统下的MySQL主从复制(单向复制)


(1)环境说明:


1,Mysql版本:mysql5.7.20(主从机mysql版本必须一致)


2,服务器一:


主机(master)


IP:192.168.1.33  (外网:171.221.207.147:9550)


mysql端口3307  


用户:root(spaceon)


服务器二:


从机(slave)


IP:   192.168.1.27   (外网:171.221.207.147:9542)


mysql端口3306  


用户:root(spaceon)


3,需部署的数据库:school


4,主机配置:


进入mysql安装目录,找到配置文件my.ini;


编辑my.ini文件:


[mysqld]


port=3307


# Server Id.


server-id=9550


binlog-do-db=school


log-bin=mysql-log


配置结束后重启master的mysql服务。通过mysql的“MySQL5.7 Command Line Client-Unicode”命令窗口给要连接的从服务器设置权限 :


grant replication slave,reload,super on *.* to root@192.168.1.27 identified by 'spaceon';


*ps: 给从机192.168.2.35添加权限,用户名:root,密码:spaceon


输入命令 show master status; 找到File 和 Position 的值记录下来;


5,从机配置:


1.进入mysql安装目录下:打开my.ini文件


2.编辑my.ini文件:


[mysqld]


port=3306


# Server Id.


server-id=9542(与主机不同即可)


replicate-do-db=school


在从机上测试能否登录主机数据库(可通过Navicat测试),成功后退出主机数据库。修改对主数据库的连接的参数:


change master to master_host='192.168.1.33',master_port=3307,master_user='root',master_password='spaceon', master_log_file='mysql-log.000003',master_log_pos=463;


ps: master_log_file和master_log_pos的值分别为之前在主机运行show master status时记录下的File和Position的结果。


如果报错误,说slave线程正在运行,不能设置,这样的话,执行mysql>stop slave; 停止slave线程,然后再设置连接的参数;


设置完之后,执行 mysql> start slave; 开启slave线程;执行mysql> show slave status\G (没有分号),查看以下两项,均为YES则成功。


Slave_IO_Running: Yes


Slave_SQL_Running: Yes




(二)windows系统下mysql双向同步复制(互为主从)


1,再次修改服务器一的mysql的配置文件(my.ini)


[mysqld]


# for rep1


server-id=9550


log-bin=mysql-bin


2,再次修改服务器二的mysql的配置文件(my.ini)


[mysqld]


# for rep1


server-id=9542


log-bin=mysql-bin


3,配置双向主从复制:


(1)主库:192.168.1.27  从库:192.168.1.33


1,指定服务器二mysql为服务器一mysql的主库(在服务器二mysql中为服务器一mysql设置权限):


grant replication slave,reload,super on *.* to root@'192.168.1.33' identified by 'spaceon';


2,查询服务器二mysql当前状态,并记录file和position的值:


Show master status;


3, 停止服务器一mysql的slave:


Stop slave;


4,服务器一mysql连接服务器二mysql(master_log_file和master_log_pos 值为之前第2步记录的file和position的值),在服务器                    一中输入mysql命令:


change master to master_host='192.168.1.27',master_port=3306,master_user='root',master_password='spaceon',master_log_file='mysql-bin.000001',master_log_pos=455;


5,开启服务器一mysql的slave:start slave;


6, 查看是否连接成功(查看slave_IO_running和slave_sql_running是否为yes,若为yes则连接成功):show slave status;


(2) 主库:192.168.1.33  从库:192.168.1.27


1,指定服务器一mysql为服务器二mysql的主库(在服务器一mysql中为服务器二mysql设置权限):


GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.*  TO root@'192.168.1.27' IDENTIFIED BY 'spaceon';


Reset master;


2, 查询服务器一mysql当前状态,并记录file和position的值:show master status;


3, 停止服务器二mysql的slave:stop slave;


4,服务器二mysql连接服务器一mysql(master_log_file和master_log_pos 值为之前第2步记录的file和position的值),在服务器                    二中输入mysql命令:




change master to master_host='192.168.1.33',master_port=3307,master_user='root',master_password='spaceon', master_log_file='mysql-log.000003',master_log_pos=463;


5,开启服务器二mysql的slave:start slave;


6,查看是否连接成功(查看slave_IO_running和slave_sql_running是否为yes,若为yes则连接成功):show slave status;


最后可通过Navicat验证数据库双向主从复制功能。