MYSQL一个设备上的主从复制实现 (GTID版)-windows
只记录一次在一个设备上实现mysql主从复制的过程,很详细,建议收藏,用到的时候照着步骤做就可以,会记录所有需要注意到的细节和一些容易遇到的坑以及解决办法!
传统的主从复制方式:祖传的master_log_file + master_log_pos的复制方式,以及从零开始的数据库配置可以参考这篇文章 ---- MYSQL一个设备上的主从复制实现-windows
然后前面的数据库安装和配置这篇就不在阐述。
如果需要在同一台电脑(服务器)上实现mysql的主从复制备份,需要一个主数据库和一个从数据库。
本文使用的是mysql-5.6.39-winx64免安装版。安装版的也可以,需要自行找到安装生成的data所在目录以及my.ini文件位置。
因为在这之前我已经安装好了主数据库,本文只记录从数据库的安装过程,(主数据库也是个全新的,会记录所有的配置)。
主数据库端口号 port = 3307。
从数据库端口号 port = 3308 。
因为前面已经做过传统的主从复制,现在来操作怎么从传统的主从复制改为GTID的方式,如果你的数据库还没有做过主从复制,可以省略其中的部分内容然后根据需要进行设置:
首先登录两个数据库服务(管理员命令窗口登录CMD):
主数据库:
mysql -uroot -p****** --protocol=tcp --host=localhost --port=3307
从数据库:
mysql -uroot -p****** --protocol=tcp --host=localhost --port=3308
查看从服务器的slave状态:
show slave status \G;
mysql> show slave status \G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 127.0.0.1
Master_User: user_cp
Master_Port: 3307
Connect_Retry: 60
Master_Log_File: mysql-bin.000013
Read_Master_Log_Pos: 819
Relay_Log_File: DESKTOP-IDKR9K2-relay-bin.000003
Relay_Log_Pos: 605
Relay_Master_Log_File: mysql-bin.000013
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
现在为同步状态Slave_IO_Running和Slave_SQL_Running都为Yes,
停止从数据库的slave:
stop slave;
可以再看一下状态现在Slave_IO_Running和Slave_SQL_Running都为No即可。
然后关闭两个数据库的服务。
修改两个数据库的my.ini文件,文件位置如果是免安装版的数据库是在安装目录下,如果是直装版的数据库文件一般在这个位置:
C:\Program Files\MySql\MySQL Server x.x\
主从两个数据库的my.ini全部在[mysqld]标签下添加(其他的配置可以参考文章:MYSQL一个设备上的主从复制实现-windows 前面的准备部分,就不在阐述):
#GTID
log-bin=mysql-bin
binlog_format=row
log_slave_updates=1
gtid_mode=on
enforce_gtid_consistency=on
然后重启两个数据库的服务。
然后在从服务器上做指向,登录从服务器后执行(最好看一下从服务器的slave状态,如果是启动的话需要先停止):
mysql> CHANGE master TO
-> master_HOST='主数据库IP地址',
-> master_PORT=主数据库端口号,
-> master_USER='主数据库用户',
-> master_PASSWORD='主数据库用户密码',
-> master_AUTO_POSITION=1;
然后启动从数据库的slave:
start slave;
然后查看下从数据库slave同步的状态:
show slave status \G;
show slave status \G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 127.0.0.1
Master_User: root
Master_Port: 3307
Connect_Retry: 60
Master_Log_File: mysql-bin.000023
Read_Master_Log_Pos: 3627
Relay_Log_File: DESKTOP-IDKR9K2-relay-bin.000002
Relay_Log_Pos: 3837
Relay_Master_Log_File: mysql-bin.000023
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
现在为同步状态Slave_IO_Running和Slave_SQL_Running都为Yes,
看一下主数据库的事务信息:
show master status \G;
show master status \G;
*************************** 1. row ***************************
File: mysql-bin.000023
Position: 3627
Binlog_Do_DB: test
Binlog_Ignore_DB: mysql
Executed_Gtid_Set: 9ac55696-eeaf-11eb-81f4-ecf4bbce2964:1-3
1 row in set (0.00 sec)
看一下从数据库的事务信息:
show master status \G;
show master status \G;
*************************** 1. row ***************************
File: mysql-bin.000001
Position: 3726
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set: 5c8b0a34-ef72-11eb-86ea-40b076801d54:1,
9ac55696-eeaf-11eb-81f4-ecf4bbce2964:1-3
1 row in set (0.00 sec)
现在事务一直,同步正常,可以CRUD下主数据库表内的数据看下从数据库是否正常同步。
时间仓促,如有错误欢迎指出,欢迎在评论区讨论,如对您有帮助还请点个推荐、关注支持一下
作者:博客园 - 凉年技术
出处:http://www.cnblogs.com/xxhxs-21/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。
若内容有侵犯您权益的地方,请公告栏处联系本人,本人定积极配合处理解决。