本地 win10系统 MySql主从库配置

一、主从分库的目的 

MySql主从库,主库负责写数据,从库负责读数据,主从库读写分开可以为数据库的频繁访问减轻压力,主数据库只有一个,从数据库可以有一个或者多个。

二、环境说明

主库所在的操作系统:win10

主库的版本:mysql-5.7.25-winx64.zip

主库的ip地址:127.0.0.1

主库的端口:3306

从库所在的操作系统:win10

从库的版本:mysql-5.7.25-winx64.zip

从库的ip地址:127.0.0.1

主库的端口:3307

Mysql压缩包下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads

图-1

下载安装包建议到官网下载,有的安装包在有些系统里会不支持,官网下载的都有说明,是否支持某个版本。这里使用解压版的MySql安装包,有一个重要的原因就是本人电脑系统不支持安装版的,只能使用解压版的。

主从数据库备份,最好保证主从数据库版本一致,如果不一致,就要保证从数据库比主数据的版本要高。

三、数据库安装配置

下载MySql压缩包,然后进行解压,为了便于标识,并对加压后的文件重新命名。主数据的文件命名为mysql-master,从数据库的文件命名为mysql-slave。

图-2

解压后,首先对环境变量进行配置,增加MYSQL_HOME的环境变量,并把%MYSQL_HOME%/bin加到path中,新建环境变量,建的是系统变量,而不是用户变量。

图-3
图-4

1)主数据库安装

第一步,在解压目录下新建my.ini文件和data文件夹。

图-5

创建my.ini配置文件,内容如下:

#代码开始

[Client]

#设置3306端口

port = 3306

default-character-set=utf8

[mysqld]

#设置3306端口

port = 3306

#设置mysql服务器字符集

collation-server=utf8_general_ci

# 设置mysql的安装目录

basedir=D:\database\mysql-master

# 设置mysql数据库的数据的存放目录

datadir=D:\database\mysql-master\data

# 允许最大连接数

max_connections=200

# 服务端使用的字符集默认为8比特编码的latin1字符集

character-set-server=utf8

# 创建新表时将使用的默认存储引擎

default-storage-engine=INNODB

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES


#重新设置密码时,将此放开,设置成功后,再注释掉

#skip-grant-tables

#表名全部为小写,避免出现大小写敏感

lower_case_table_names=1

[mysql]

# 设置mysql客户端默认字符集

default-character-set=utf8

#让mysql数据库支持 事务设置 引擎为:INNODB

#default-storage-engine=INNODB

#代码结束

第二步,使用管理员身份进入到主库bin目录下,执行mysqld --install mysqlmaster --defaults-file=“d:\database\mysql-master\my.ini”命令,执行结果出现Servicesuccessfully installed.时,安装成功,其中mysqlmaster为主库服务名称。

图-6

第三步,初始化系统数据库和系统数据库中的表,执行mysqld--initialize命令;

图-7

第四步,查看data文件夹下,mysqld -–initialize执行的结果,出现mysql、sys等数据库时,代表此命令已经执行成功。

图-8

第五步,启动主库服务,使用net start mysqlmaster 命令,出现下图代表启动成功。

图-9

第六步,更改数据库密码,首先使用 net stop mysqlmaster 命令停止服务。

图-10

第七步,把my.ini中skip-grant-tables 前的注释去掉后保存,然后重新启动服务。

图-11

第八步,使用mysql -u root -p 命令进入mysql的命令行,然后输入密码123456。

图-12

第九步,使用 use mysql 使用mysql系统数据库,然后执行修改密码的指令 updateuser set authentication_string=PASSWORD('123456')where user='root'; 修改过后,使用 flush privileges; 执行刷新操作。

图-13

第十步,把my.ini中 skip-grant-tables前的注释加上,保存后,重启服务。

备注:如果服务名称安装错了,可以使用 sc delete mysqlmaster 命令来删除已经建立好的服务。

2)从数据库安装

同主数据库的安装一样,步骤如上,有几点需要注意,

第一点, 在安装目录下新建my.ini和data文件

第二点, my.ini中的端口号修改成3307

第三点, 下面的两个路径也要修改掉

#设置从库端口号

port = 3307

# 设置mysql的安装目录

basedir=D:\database\mysql-slave

# 设置mysql数据库的数据的存放目录

datadir=D:\database\mysql-slave\data

3)主数据库配置

第一步,打开主数据的my.ini文件,在 [mysqld] 下面添加

#主库配置,服务器标志号,注意在配置文件中不能出现多个这样的标识,如果出现多个的话mysql以第一个为准,一组主从中此标识号不能重复。

server_id = 1

#开启bin-log

log-bin=mysql-bin

#不需要备份,需要忽略的数据库

binlog-ignore-db=mysql

binlog-ignore-db=performance_schema

binlog-ignore-db=sys

图-14

第二步,使用net start mysqlmaster 命令重启主数据库。

4)从数据库配置

第一步,打开从数据库的my.ini文件,在 [mysqld] 下面添加

#从库配置

server_id=2

#开启bin-log

log-bin=mysql-bin

第二步,使用 net start mysqlmaster 命令重启主数据库。 

图-15

主从库备份授权

第一步,主库授权:

grant replication slave on *.* to 'test'@'127.0.0.1' identifiedby '123456';

flush privileges; #授权后需要刷新后,才能生效;

第二步,使用 show master status; 命令查看主库授权状态。

图-16

    第三步,从库授权

change master to master_host='127.0.0.1',master_user='test',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=154;

图-17

特别注意:master_log_file文件的名字、master_log_pos文件的位置要和 图-16中的File和Position参数对应,否则会影响执行的结果。

第四步,使用start slave; 命令启动授权;

图-18
图-19

备注:当授权出现错误时,可以先停止slave,然后清除授权,使用 reset slave; #清除授权,但是授权信息保留;

reset slave all; #清除授权,授权信息也被清除掉。

   第五步,使用show slave slave status \G 命令,查看授权状态,参数Slave_IO_Running:Yes和Slave_SQL_Running:yes,这两项都为Yes才是配置成功。

图-20

第六步,主从库同步验证

在主库建立一个test数据库,然后刷新从数据库,可以看到新建的数据库已经被同步过去。

图-21

第七步,扩展,为读库创建只读权限的账户

创建只读用户:create user 'root_readonly'@'%' identified by '123456';

修改密码:update user setauthentication_string=PASSWORD('123456') where user='root_readonly';

授权只读

GRANT SElECT ON *.* TO 'root_readonly'@'%' IDENTIFIED BY "123456"; #其中%代表所有的IP地址都可以访问,如果设置为127.0.0.1,那么就只有localhost才能访问。

flush privileges; #授权后需要刷新后,才能生效;

如果要删除用户时,使用 drop user test; #删除用户

flush privileges;#删除用户后,需要刷新,否则再次创建同一个账号会报错; 

备注:在读库,对开发者只开放只读用户,这样就可以减少人为的数据库修改,所引起的数据不能同步的错误。

五、总结

Mysql主从库分库,折腾了很久,原来用过主从库,但是没有自己建过主从库。现在自己创建了一次,看资料看了很久,在自己的电脑上实践,总是出现这样那样的错误,反反复复安装了一个星期,最后在测试服务器上搭建,又折腾了一下,最终一个上午搞定了。

原来使用的那个主从库,有一个问题经常出现,就是在开发环境下,读库经常被其他同时修改掉,导致的结果是主从库不能同步,还要花时间修复这个错误。为了避免这个情况,给读库建了一个只有只读权限的用户,对开发人员开放只有读权限的用户,这样就可以避免这个问题了,开发人员想修改读库数据也会因为权限不足而不能修改。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,100评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,308评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,718评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,275评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,376评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,454评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,464评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,248评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,686评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,974评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,150评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,817评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,484评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,140评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,374评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,012评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,041评论 2 351

推荐阅读更多精彩内容