mysql 多实例安装与主从配置(windows)

本文是一个小白在查了很多资料试了N久之后,关于 windows 环境下 mysql 多实例安装和主从配置的一些总结。

mysql 多实例安装

在同一台主机下安装多个mysql(win10专业版64位测试成功)。

  1. 正常安装第一个,如安装目录为C:\phpStudy\PHPTutorial\MySQL
  2. 关闭服务,拷贝安装目录下所有文件到另外路径,重命名文件夹,如C:\phpStudy\PHPTutorial\MySQL2
  3. 更改拷贝文件夹下的my.ini文件,将端口号改为3307(第一个用的3306,端口号自定义,检查是否被占用)
[client]
port=3307
default-character-set=utf8
[mysqld]
basedir=C:\phpStudy\PHPTutorial\MySQL2 # 设置为MYSQL的安装目录
datadir=C:\phpStudy\PHPTutorial\MySQL2/data # 设置为MYSQL的数据目录
port=3307
character_set_server=utf8
  1. 创建启动服务,在C:\phpStudy\PHPTutorial\MySQL2\bin文件夹下打开命令提示符,运行如下命令,安装成功会提示
mysqld install MySQL2 --defaults-file="C:\phpStudy\PHPTutorial\MySQL2\my.ini"
  1. 运行mysql -uroot -p -P3307,输入密码进行登录,测试是否成功
  2. 多实例重复步骤2 - 5

主从配置

配置主数据库
  1. 打开my.ini,在 [mysqld] 节点下添加如下配置
server-id=1
log-bin=master-bin #从库会基于此log-bin来做复制
log-bin-index=master-bin.index
binlog-do-db=mytest #用于读写分离的具体数据库,可添加多行设置多个,一般主库不设置,在从库设置
binlog_ignore_db=mysql #不用于读写分离的具体数据库,可添加多行设置多个,一般主库不设置,在从库设置
binlog_ignore_db=information_schema
  1. 修改配置文件后,重启主数据库服务
  2. 新增用户,指定复制权限,如下命令可实现新增用户名为‘repl’,密码为‘123123’的主从复制用户 grant新增用户,指定复制权限,如下命令可实现新增用户名为‘repl’,密码为‘123123’的主从复制用户 grant
replication slave on *.* to 'repl'@'127.0.0.1' identified by '123123'; 
  1. 查询主数据库状态
flush tables with read lock; #锁表禁止写入新数据 show flush tables with read lock; #锁表禁止写入新数据
show master status; #记住前两列File和Position的内容,配置从库会用到
配置从数据库
  1. 打开my.ini,在[mysqld]节点下添加如下配置
server-id=2 #多个从库的话id需不同
log-bin=slave-bin
log-bin-index=slave-bin.index
binlog-do-db=mytest #用于读写分离的具体数据库,可添加多行设置多个
binlog_ignore_db=mysql #不用于读写分离的具体数据库,可添加多行设置多个
  1. 修改配置文件后重启从数据库服务
  2. 配置mysql,先停止从库,设置从库的master,然后再重新启动从库,设置master时,master_log_file和master_log_pos分别为配置主数据库查询到的File和Position
slave stop;
change master to
master_host='127.0.0.1',
master_port=3306,
master_user='repl',
master_password='123123',
master_log_file='master-bin.000024',
master_log_pos=257;
slave start;
  1. 从库配置完成后,在主服务器上重新启用写活动
mysql> unlock tables;
  1. 检查是否启动成功,如果Slave_IO_State字段显示 Waiting for master to send event说明成功,也可以在主库表中插入一条数据,看看从库是否有同步
show slave status\G;

主主配置(互为主从)

配置server1
  1. 打开my.ini,在 [mysqld] 节点下添加如下配置
server-id=1
log-bin=sever1-bin
#binlog-do-db=mytest #建议不配置master,在slave中指定
#binlog_ignore_db=mysql #建议不配置master,在slave中指定
log-slave-updates
sync_binlog=1
auto_increment_offset=1 #与sever1不同
auto_increment_increment=2
replicate-do-db=test #作为slave时,复制的数据库,可添加多行
replicate-do-db=ticket
replicate-ignore-db=mysql #作为slave时,忽略复制的数据库,可添加多行
replicate-ignore-db=information_schema
  1. 修改配置文件后,重启主数据库服务
  2. 新增用户,指定复制权限
grant replication slave on *.* to 'repl'@'127.0.0.1' identified by '123123';
  1. 查询主数据库状态
flush tables with read lock; #锁表禁止写入新数据
show master status; #记住File和Position的内容
配置server2
  1. 打开my.ini,在 [mysqld] 节点下添加如下配置
server-id=2
log-bin=sever2-bin
#binlog-do-db=mytest #建议不配置master,在slave中指定
#binlog_ignore_db=mysql #建议不配置master,在slave中指定
log-slave-updates
sync_binlog=1
auto_increment_offset=2 #与sever1不同
auto_increment_increment=2
replicate-do-db=test #作为slave时,复制的数据库,可添加多行
replicate-do-db=ticket
replicate-ignore-db=mysql #作为slave时,忽略复制的数据库,可添加多行
replicate-ignore-db=information_schema
  1. 修改配置文件后,重启主数据库服务
  2. 新增用户,指定复制权限
grant replication slave on *.* to 'repl'@'127.0.0.1' identified by '123123';
  1. 查询主数据库状态
flush tables with read lock; #锁表禁止写入新数据
show master status; #记住File和Position的内容
指定master
  1. 切换到 sever1
slave stop;
change master to
master_host='127.0.0.1',
master_port=3306,
master_user='repl',
master_password='123123',
master_log_file='master-bin.000002',
master_log_pos=107;
slave start;
show slave status\G;
  1. 切换到 sever2
slave stop;
change master to
master_host='127.0.0.1',
master_port=3307,
master_user='repl',
master_password='123123',
master_log_file='master-bin.000002',
master_log_pos=107;
slave start;
show slave status\G;
  1. 配置完成后,重新启用写活动

主从不同步问题

情况1:主从库数据相差不大,或者要求数据可以不完全统一的情况,数据要求不严格时,可以直接忽略错误,继续同步

stop slave;
set global sql_slave_skip_counter =1;
start slave;

情况2:主从库数据相差较大,或者要求数据完全统一时,则需要用 change master to 重新配置主从

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值