mysql8.0主从复制(windows环境下)

1,717 阅读4分钟

(一).mysql8.0并没有提供my.ini配置文件,那就需要自己在安装包的根目录动手创建了,主库my.ini的配置信息如下

#主库配置
[mysqld]  
#主库和从库需要不一致
server-id=1

log-bin=mysql-bin

#同步的数据库
binlog-do-db=demo
binlog-do-db=order_db_1
binlog-do-db=order_db_2
binlog-do-db=user_db

#不需要同步的数据库
binlog-ignore-db=mysql

# 设置3306端口
port=3306

# 设置mysql的安装目录
basedir=C:\Program Files\MySQL\MySQL Server 8.0

# 设置mysql数据库的数据的存放目录
datadir=C:\Program Files\MySQL\MySQL Server 8.0\Data


# 允许最大连接数
max_connections=200

# 允许连接失败的次数。
max_connect_errors=10

# 服务端使用的字符集默认为UTF8
character-set-server=utf8

# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

# 默认使用“mysql_native_password”插件认证
#mysql_native_password

default_authentication_plugin=mysql_native_password

[mysql]

# 设置mysql客户端默认字符集
default-character-set=utf8

[client]

# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8

配置完my.ini文件后进入到mysql安装包的bin目录下, 以管理员方式打开cmd,

(1).在cmd中以下命令初始化mysql(要拿小本本记住初始化生成的密码哦): 

mysqld --initialize --user=mysql --console


(2).然后输入下面的命令注册mysql服务,如果你一不小心服务名注册错了,那么你可以输入 sc delete 服务名称;删除指定服务名称

mysqld --install MySQL80-1 --defaults-file="C:\Program Files\MySQL\MySQL Server 8.0\my.ini"


说明:MySQL80-1是要注册的服务的名称(你可以随便命名), --defaults-file是指定刚刚配置好的my.ini文件路径

(3).输入以下命令登录mysql,然后再修改密码

mysql -u root -p

输入命令后再输入上面初始化mysql的生成的密码,再输入以下命令修改root账户的密码为root

ALTER USER root@localhost IDENTIFIED BY 'root';

(4).上面做完了就启动刚刚注册的mysql服务

(二)复制主库的安装包到当前目录作为从库,并修改从库的my.ini配置

主要修改的配置有4个

server-id #从库不能和主库的server-id一样

port #因为是一台机为了防止端口冲突,从库的port也不能和port一样

basedir #mysql的安装包路径也要改成从库的

datadir #mysql数据存放的路径也要改成从库的

整体的配置就是下面这样咯

[mysqld]  
#主库和从库需要不一致
server-id=2

log-bin=mysql-bin

#同步的数据库
binlog-do-db=demo
binlog-do-db=order_db_1
binlog-do-db=order_db_2
binlog-do-db=user_db

#不需要同步的数据库
binlog-ignore-db=mysql

# 设置3306端口
port=3307

# 设置mysql的安装目录
basedir=C:\Program Files\MySQL\MySQL Server 8.0-slave

# 设置mysql数据库的数据的存放目录
datadir=C:\Program Files\MySQL\MySQL Server 8.0-slave\Data


# 允许最大连接数
max_connections=200

# 允许连接失败的次数。
max_connect_errors=10

# 服务端使用的字符集默认为UTF8
character-set-server=utf8

# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

# 默认使用“mysql_native_password”插件认证
#mysql_native_password

default_authentication_plugin=mysql_native_password

[mysql]

# 设置mysql客户端默认字符集
default-character-set=utf8

[client]

# 设置mysql客户端连接服务端时默认使用的端口
port=3307
default-character-set=utf8 

(1).接下来的工作那就很简单了,重复主库的操作就行了,进入到从库的bin目录下

执行 mysqld --initialize --user=mysql --console 命令

 如果执行命令后遇到下面的错误,请删除从库安装包Data文件夹的所有文件再执行mysqld --initialize --user=mysql --console


小本本记住初始化mysql生成的密码(等下要输入的),再注册从库的服务输入以下命令,注意下面的--defaults-file的路径是从库的路径,注册服务后启动名为MySQL80-2的服务

mysqld --install MySQL80-2  --defaults-file="C:\Program Files\MySQL\MySQL Server 8.0-slave\my.ini"


再输入登陆root用户修改密码

mysql -u root -p

修改命令是:ALTER USER root@localhost IDENTIFIED BY 'root';

(三) 开启主从同步

(1).执行show master status;sql语句查看主库状态


(2)在从库执行以下sql,关联主库日志文件,来实现主从数据同步

change master to master_host='localhost',master_user='root',master_password='root',master_log_file='mysql-bin.000001',master_log_pos=3726; 

(3).再输入以下命令 启动主从数据同步即可

start slave

(4).测试主从同步是否成功,首先在主库的某个数据表操作数据,在看看从库的数据是否和主库一样,如果一样则主从数据同步配置成功