WIN10下MySQL开启主从同步
- 下载同一版MySQL
- 主库配置
- 解压安装
- 从库配置
下载同一版MySQL
主库配置
解压安装
1.新建logs(可自行修改主要my.ini中配置路径即可)文件存放二进制日志文件binlog
2.配置my.ini文件(直接根目录下新建my.ini)
[mysqld]
#每个MySQL唯一即可
server-id=10
#开启binlog
log-bin=D:\\soft\mysql-5.7.29\logs\mysql-bin
#带同步的数据库
binlog-do-db=epidemic_control
port = 3306
#skip-grant-tables
basedir=D:\\soft\mysql-5.7.29
datadir=D:\\soft\mysql-5.7.29\data
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql]
default-character-set=utf8
3.初始化MySQL
使用管理员CMD进入MySQL解压目录执行
mysqld --initialize (此时会生成data目录) 无其他信息输出则成功
如提示 找不到MSVCR120.dll 去微软官方下载相应版本vs即可
如提示 应用程序无法正常启动0xc000007b的错误谈框
安装DirectX9.0c(可以从电脑管家上下载),如果还是不行的话可以使用 DirectX Repair V3.5修复工具即可。
mysqld install 服务名称 --defaults-file="安装目录\my.ini"
例 mysqld install MySQL5.7-3306 --defaults-file=“D:\soft\mysql-5.7.29\my.ini”
4.设置root账户密码:
在my.ini文件(MySQL的配置文件)的[mysqld]下加一行skip-grant-tables
重启MySQL服务后,运行mysql -uroot -p,无需输入密码,直接回车即可成功登入mysql。
然后更新root账户的密码为root
命令:update mysql.user set authentication_string=password(“root”) where user=“root”;
然后输入flush privileges;
然后将my.ini文件中刚才加的skip-grant-tables这一行删掉,保存后再重启MySQL服务。
从库配置
复制一份主数据修改文件夹名称即可,删除data目录下除文件夹以外文件(因为配置的datadir为该目录) 修改my.ini 文件 其他操作和主库一直。
[mysqld]
# 从库端口与主库不同即可(注意端口不能被占用)
port = 3305
#每个MySQL唯一即可
server-id=14
relay-log=relay-bin
relay-log-index=relay-bin-index
#从库需要同步的数据库多个,分割即可
replicate-do-db=epidemic_control
# 从库开启需要加下面的配置
log-slave-updates
log-bin=D:\\soft\mysql-5.7.29-3305\logs\mysql-bin
#skip-grant-tables
basedir=D:\\soft\mysql-5.7.29-3305
datadir=D:\\soft\mysql-5.7.29-3305\data
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql]
default-character-set=utf8
主库查询bin文件以及pos
从库开启主从同步
CHANGE MASTER TO
MASTER_HOST='localhost', --主库地址
MASTER_USER='root', --主库账号
MASTER_PASSWORD='root', --主库密码
MASTER_PORT=3306, --主库地址
MASTER_LOG_FILE='mysql-bin.000001', --主库binlog文件
MASTER_LOG_POS=154, --主库pos
MASTER_CONNECT_RETRY=10;
start slave; --开启
show slave status; --查询状态
这两个都为YES即可