共计 3269 个字符,预计需要花费 9 分钟才能阅读完成。
今天就跟大家聊聊有关 windows 上 mysql 如何进行主从数据库搭建及问题是什么,可能很多人都不太了解,为了让大家更加了解,丸趣 TV 小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
根据前篇 web 项目的搭建后,需要搭建主从数据库,这里在 windows 服务器上搭建了主从结构的 mysql,这里在记录下在本机模拟搭建过程
在 windows 上安装和 linux 还是有些不同,不注意就会耽误不少时间
一 下载安装包和安装
https://dev.mysql.com/downloads/file/?id=469273 下载的安装包是 Archive
需要手工安装且建立服务和初始化 data 目录,具体可以在网上搜索有很多具体安装方法。
二 建立从节点
1 把主服务器的安装目录 C:\Program Files\MySQL\MySQL Server 5.7 所有文件都 copy 到另一个目录 D:\anzhuang\MySQL\mysqlSlave\MySQL Server 5.7。
2 修改复制过来的 my.ini 文件参数
包括端口和路径
port = 3307
basedir = D:\anzhuang\MySQL\mysqlSlave\MySQL Server 5.7
datadir = D:\anzhuang\MySQL\mysqlSlave\MySQL Server 5.7\data
3 建立 mysql 从服务器服务
mysqld install MySQLM –defaults-file= D:\anzhuang\MySQL\mysqlSlave\MySQL Server 5.7\my.ini
4 修改对应注册表里服务启动项的内容
注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MySQL57\ImagePath 里使用的路径改成
D:\anzhuang\MySQL\mysqlSlave\MySQL Server 5.7\bin\mysqld –defaults-file=D:\anzhuang\MySQL\mysqlSlave\MySQL Server 5.7\my.ini MySQLS
mysqld_multi.pl –defaults-extra-file=D:\anzhuang\MySQL\mysqlSlave\MySQL Server 5.7\my.ini start 3307
以便启动 mysql 时可以找到对应 my.ini 文件启动
三 主节点配置
1 修改主节点和从节点上 my.ini
[mysqld]
server-id = 1
binlog-do-db=test #要同步的数据库
#binlog-ignore-db=mysql #不同步的数据库, 如果指定了 binlog-do-db 这里应该可以不用指定的
log-bin=mysql-bin #要生成的二进制日记文件名称
修改从配置文件:
[mysqld]
server-id = 2
log-bin = mysql-bin
replicate-do-db=test
2 上创建用户并授权
create user repla @ 127.0.0.1 identified by test
GRANT REPLICATION SLAVE ON *.* TO repla @ 127.0.0.1
3 创建 test 数据库
4 物理备份 test 目录到从库
把 datadir 指定的目录的 data 目录 copy 到从目录
5 show master status
查看 file 和 position 字段对应的参数;
+——————+———-+————–+——————+————–
—-+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid
Set |
+——————+———-+————–+——————+————–
—-+
| mysql-bin.000006 | 1847 | test | |
|
+——————+———-+————–+——————+————–
四从节点配置
1 启动从节点 mysql 服务
mysql -uroot -P3307 -p123456 如果端口不同,必须制定端口,才能在一台机器上同时启动多实例
2 接收主节点传送日志
change master to master_host= 127.0.0.1 ,master_port=3306,master_user= repla ,master_password= test ,master_log_file= mysql-bin.000006 ,master_log_pos=1847;
3 启动从数据库复制功能
start slave
最后在主库插入数据后,从库就能看到主库的数据了。
问题总结
1 这里的 my.ini 文件在注册表里有指定,无论是否使用命令指示使用自己命令的 ini,系统都会根据注册表里的 my.ini 文件位置去读取并启动 db。
比如用命令 C:\Program Files\MySQL\MySQL Server 5.7\bin mysql –defaults-file= D:\anzhuang\MySQL\my.ini -uroot -p
想使用自己定义的 my.ini. 但注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MySQL57\ImagePath 里使用的路径不是
这个路径时,还会按照注册表的路径读取文件。
如果在 windows 上安装,要正确识别 my.ini 位置,具体可根据服务选择或注册表信息判断 my.ini 位置
2 备份时可采用物理备份和逻辑备份,如果是物理备份注意把主库的 data 目录下的全部文件复制到 slave
这个 data 目录一定是 datadir 参数中指定的目录,这点可能会采用软件安装目录下的 data 目录而不是数据目录
3 采用物理备份时很可能把 auto.cnf 文件也复制到 slave,造成主备之间的 UUID 不一致,这里的解决办法是在 slave
重新命名 auto.cnf,然后重启备库,重新生成新的 UUID
可以参考网址 http://www.linuxidc.com/Linux/2015-02/113564.htm
4 在 slave 上需要验证主从是否开始传送日志方法
mysql show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 127.0.0.1
Master_User: repla
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000011
Read_Master_Log_Pos: 1684
Relay_Log_File: SDSC-WIN7-ZHANGLU-relay-bin.000002
Relay_Log_Pos: 1595
Relay_Master_Log_File: mysql-bin.000011
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: test
……
Slave_IO_Running: Yes Slave_SQL_Running: Yes 都是 Yes 就对了。
可能出现问题是要多次 stop slave 后多次执行 change master to 命令。
看完上述内容,你们对 windows 上 mysql 如何进行主从数据库搭建及问题是什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注丸趣 TV 行业资讯频道,感谢大家的支持。