Windows 下配置MySQL数据库的主从同步
主服务器和从服务器安装和配置
自己搞喽,网上很多教程,集成环境可以,搞个虚拟机win系统装mysql也可以,搞两个linux系统的mysql也可以,这里不再赘述
主服务器配置
主要工具软件 记事本 和 navacat for mysql
找到主服务器 myini 按照对比设置以下配置
server_id=1
# row 格式 不要使用mixed
binlog_format=ROW
# binlog_format=mixed
#最小化日志记录
binlog_row_image=minimal
# 二进制日志文件名 设置为 binlog
log-bin=binlog
# 从库开启binlog日志记录
log-slave-updates=1
#指定需要复制的数据库名为test,如果备份多个数据库,重复设置这个选项即可
binlog-do-db=test
#不需要备份的数据库名,如备份多个数据库,重复这个选项
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=information_schema
binlog-ignore-db=sys
查看主服务器的状态
show master status;
重点是 二进制日志当前记录的文件名 binlog.000041 和点位 154
- 注意要使用 root 账户,否则会提示无权限
如果需要委派其他用户名需要赋权,举例:
grant all on test.* to 'test'@'%' identified by 'test123' with grant option;
权限生效
FLUSH PRIVILEGES;
重启主服务器mysql
找到 计算机管理->‘服务’,重新启动
主服务器设置读锁
Flush tables with read lock;
经常查看 主服务器状态二进制日志点位,要保持不变
show master status;
如果有变需要 重复 锁表和 导出的步骤
将数据库导出为
test.sql
复制传输到从服务器
复制粘贴
下载等各种方式都可以
从服务器配置
找到从服务器 myini 按照对比设置以下配置
# 从服务器 ID
server_id=2
# 二进制日志格式和主服务器保持一致
binlog_format=row
# 开启二进制日志
log-bin=binlog
# 二进制日志最小化记录
binlog_row_image = minimal
# 设置不需要同步的数据库
replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=performance_schema.%
replicate_wild_ignore_table=information_schema.%
将test.sql
导入从服务器数据库
可以用 navcat等工具软件来导入导出,命令行也可以,根据自己能力搞吧,这里也不多讲
设置 链接 到主服务器
# 设置主服务器链接ip用户名密码和binlog日志的文件名和当前日志点位
CHANGE MASTER TO MASTER_HOST='192.168.4.68',MASTER_PORT=3306, MASTER_USER='test', MASTER_PASSWORD='test123', MASTER_LOG_FILE='binlog.000041',MASTER_LOG_POS=154;
启动从服务器
# 启动从服务器
start slave;
# 查看从服务器状态
show slave status;
从服务器配置成功
配置完成后解锁主服务器的表锁
unlock tables;
遇到的问题
-
- Slave_IO_Running: No 表示主服务器未成功读取
-
- Slave_SQL_Running: No 表示slave不同步
-
- Slave_IO_Running: Connecting IP 用户名或密码错误
1,2 原因: 两个数据库的 uuid竟然是同一个,大意了
解决方案:找到 data文件夹下 auto.cnf 改掉其中一个 uuid ,一般更改从服务器 uuid 即可,改完后重启,重新查看状态
3, 查看 ip 用户名 和密码 是否敲错了,改正后 重启
-- stop slave;
-- start slave;
show slave status;
权限问题
使用的用户名要求有 跨域IP访问权限,@后加%或指定ip,例如我用的用户名是test
grant all on test.* to 'test'@'%' identified by 'test123' with grant option; ```
# 权限生效
FLUSH PRIVILEGES;
个人笔记,仅供参考,每个人遇到的情况不同,可以留言一起分析。