读写分离实现 | 第一节 mysql主从配置

本次配置是在windows7 系统下 安装两个mysql ,原理都是相似的。
如果你已经安装两个mysql了,请跳过第一个步骤。

一. 安装两个mysql(版本5.7)

不要使用安装版本,因为它们会覆盖。我使用的是非安装版本,(你们可以去官网非登录下载)
新建两个文件夹存放解压之后的文件
在这里插入图片描述

1. 处理my.ini文件

修改或复制一份my-default.ini文件然后改名为my.ini; (如果mysql的目录下没有这个文件,直接新建即可,将以下内容直接复制到其中即可,注意:文件库的安装目录和数据的存放目录根据MySQL具体的安装目录而定),在建立一个ini文件时要注意:系统是否隐藏了后缀名。 在对应的位置,修改添加如下代码:

[mysql]
#设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port=3306
character_set_server=utf8
# 设置mysql的安装目录
basedir=C:\Program Files\MySql3306\mysql-5.7.28-winx64
# 设置mysql数据库的数据的存放目录
datadir=C:\Program Files\MySql3306\mysql-5.7.28-winx64\data
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
[WinMySQLAdmin]
# mysqld.exe运行位置
C:\Program Files\MySql3306\mysql-5.7.28-winx64\bin\mysqld.exe

2. 添加环境变量(可选)

操作如下:
1)右键单击我的电脑->属性->高级系统设置(高级)->环境变量
  点击系统变量下的新建按钮
  输入变量名:MYSQL_HOME_3306
  输入变量值:C:\Program Files\MySql3306\mysql-5.7.28-winx64
  #即为mysql的自定义解压目录。
2)选择系统变量中的Path
  点击编辑按钮
  在变量值中添加变量值:%MYSQL_HOME%\bin
  注意是在原有变量值后面加上这个变量,用;隔开,不能删除原来的变量值

3. 将mysql注册为windows系统服务

1)从控制台进入到MySQL解压目录下的 bin 目录下:
2)初始化,如果没有data文件夹,在bin下运行命令:mysqld –initialize
3)输入服务安装命令:(MySQL3306代表服务名称,后面的是my.ini文件位置)
   mysqld install MySQL3306 --defaults-file=" C:\Program Files\MySql3306\mysql-5.7.28-winx64\my.ini"
   #解压目录下修改的my.ini文件
   安装成功后会提示服务安装成功。
   #注:my.ini文件放在MySQL解压后的根目录下
   #移除服务命令为:sc delete MySql3306

4. 启动MySQL服务

方法一:
    启动服务命令为:net start mysql3306
方法二:
    打开管理工具 服务,找到MySQL3306服务。
    通过右键选择启动或者直接点击左边的启动来启动服务。

5. 安装第二个mysql

安装步骤与上面一样。
需要注意的是:端口号需要变(可以变成3307),文件名和服务名要变成(MySql3307,随你心意)
当然,server-id也要变:服务器唯一ID,默认是1,一般取IP最后一段

二. 主从配置

1. 主从服务器分别作以下操作

版本一致
初始化表,并在后台启动mysql
修改root的密码

2. 修改主服务器master

修改my.ini(linux是/etc/my.cnf文件)

[mysqld]
log-bin=mysql-bin   //[必须]启用二进制日志
server-id=1     //[必须]服务器唯一ID,默认是1,一般取IP最后一段

3. 修改从服务器slave

修改my.ini(linux是/etc/my.cnf文件)

[mysqld]
log-bin=mysql-bin   //[不是必须]启用二进制日志
server-id=2      //[必须]服务器唯一ID,默认是1,一般取IP最后一段

4. 重启两个mysql

service mysqld restart;

5. 在主服务器上建立帐户并授权slave

进入主mysql:mysql –uroot –p –P 3306
输入密码 root
创建用于数据同步的账户(这是三条语句)( 192.168.0.%,代表匹配这个ip才能连接):
	1.	CREATE USER 'repl'@'192.168.0.%' IDENTIFIED BY '123456';
	2.	GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.0.%';
	3.	FLUSH PRIVILEGES;
查看二进制日志是否开启:
show global variables like 'log_bin';
查看master状态:
show master status;

6. 从数据库配置

执行同步语句(解释),
(192.168.0.168)指主mysql的ip,(master_user)指主mysql授权的用户,
(master_password)指主mysql授权的用户的密码,(master_log_file)二进制文件,
(master_log_pos)标记,
命令如下(这只是一条语句哈):
	change master to master_host='192.168.0.168',
	master_user='repl',master_password='123456',
	master_log_file='mysql-bin.000001', 
	master_log_pos=514;
查看slave状态:
	show slave status\G;
设置只读账户(可配):
	create user 'pig'@'%' identified by '123456';// 创建用户
	grant select on readwriteseparation.* to 'pig'@'%';// 设置只读
	flush privileges;// 刷新

7. 注意

如果是同一个windows下(主mysql端口3306,从mysql端口3307)
从库(可改)(只是例子,随当前环境修改):

[mysql]
#设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3307端口
port=3307
character_set_server=utf8
# 必需(这个是次数据库,则配置2,而主数据库已经配了1)
server-id=2
# 设置mysql的安装目录
basedir=C:\Program Files\MySql3307\mysql-5.7.28-winx64
# 设置mysql数据库的数据的存放目录
datadir=C:\Program Files\MySql3307\mysql-5.7.28-winx64\data
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 强制跳过1062,1008错误
slave-skip-errors=1062,1008
[WinMySQLAdmin]
C:\Program Files\MySql3307\mysql-5.7.28-winx64\bin\mysqld.exe

如果从库:slave_sql_running:no

1.	重新启动slave:
	slave stop;
	set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
	slave start;
2.	My.ini 中配置slave-skip-errors=1062,1008 等,注意,不一定是这个,具体数据看slave状态中的no

如果从库:Slave_IO_Running: no

1.	在主mysql上执行刷新日志:
	flush logs;
	show master status\G;
2.	停止从库主从复制,并设置change
	Stop slave;
	CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=154;
	start slave;
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值