windows系统搭建mysql的主从

155 阅读3分钟

下载

image.png

主库安装

解压并创建my.ini文件

  • 解压安装包,命名文件夹为master,进入文件夹,创建一个名为my.ini的空文本

image.png

  • 文本内容如下:
[client]
# 端口号,默认是3306,同一个环境下不同的mysql实例端口号不能相同
port=3307
default-character-set=utf8

[mysqld] 
#主库配置
server_id=1
log_bin=master-bin
log_bin-index=master-bin.index

# 设置为自己MYSQL的安装目录
basedir=D:/Program Files (x86)/mysql/master
# 设置为MYSQL的数据目录,data文件夹由mysql自动生成
datadir=D:/Program Files (x86)/mysql/master/data
# 设置主从同步的数据库名、如果
#binlog-do-db = test
port=3307
character_set_server=utf8
sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER

# 开启查询缓存
explicit_defaults_for_timestamp=true

安装master库的服务

  1. cmd 管理员身份运行,进入master的bin目录下
  2. 执行初始化的命令:
mysqld --initialize --user=mysql --console

如果出现类似下面的提升就显示初始化成功,初始化成功会系统自动生成data文件夹,并生成初始密码 image.png 3. 初始化完成后,执行安装服务的命令:

mysqld --install master --defaults-file="D:\Program Files (x86)\mysql\master\my.ini" 

master为服务的名称,--defaults-file为ini文件的路径,出现"Service successfully installed."即为成功

image.png

  1. 启动服务 在bin目录下执行启动服务,命令是net master start,启动成功后会出现如下的提示:

image.png

  1. 进入mysql 进入mysql的命令是:mysql -u root -p ,但因为我们改了端口号,所以命令要改为mysql -u root -P3307 -p,然后输入刚才生成的初始化密码即可进入mysql

image.png 由于这个初始密码实在是太蛋疼,所以我们最好更改密码,更改语句为:

set password=password('新密码');

image.png 这样就成功设置了root用户的密码了,然后我们可以用Navicat等图形化工具来操作连接数据库了

image.png

从库安装

从库的安装步骤和主库一样,只是my.ini中修改对应的配置即可。

[client]
port=3308
default-character-set=utf8

[mysqld] 
#从库配置
server_id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin

# 设置为自己MYSQL的安装目录 
basedir=D:/software/mysql/slave
# 设置为MYSQL的数据目录 
datadir=D:/software/mysql/slave/data
port=3308
character_set_server=utf8
sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER
#开启查询缓存
explicit_defaults_for_timestamp=true

主从库实现关联

两个库都安装好了,我们就可以来操作主从库之间的关联,实现主从之间的复制。

  1. 先登录主库,输入 show master status;

image.png 可以发现主库中生成了一个二进制的文件,这是一个日志文件,从库关联它就可以实现和主库的同步了。

  1. 登录从库,执行一下命令
change master to master_host='127.0.0.1',master_port=3307,master_user='root',master_password='123456',master_log_file='master-bin.000001',master_log_pos=154;

不难看出上面都是主库的配置信息,成功后执行命令start slave 开启主从复制

image.png 完成之后,我们简单验证下,在master库中创建一个数据库,名字就叫test

image.png 然后slave中也生成了同样的数据库test

image.png

主从同步端后重新配置过程

Master库:

mysql>show processlist;

查看下进程是否Sleep太多。发现很正常。

show master status;

也正常

image.png

再看一下从库的状态

show slave status;

image.png 很明显是从库的同步断掉了,所以要重新配置主从同步

重新做主从,完全同步

  1. 先进入主库,进行锁表,防止数据写入
mysql> flush tables with read lock;

注意: 该处是锁定为只读状态,语句不区分大小写 2. 停止从库的状态

mysql> stop slave;
  1. 进行数据备份,把主库的数据重新备份到从库中
  2. 设置从库同步时,注意该处的同步点,就是主库show master status信息里的| File| Position两项
change master to master_host = '127.0.0.1', master_user = 'root',  master_port=3307, master_password='mysql', master_log_file =  'master-bin.000039', master_log_pos=795;
  1. 重新开启从同步
mysql> start slave;

image.png

  1. 回到主库并执行如下命令解除表锁定。
UNLOCK TABLES;

mysql8从库并行复制,从库开启并行复制

参考:blog.csdn.net/weixin_3292…