Win10下Mysql主从库配置二次整理

作者: 程就人生 | 来源:发表于2019-08-07 23:53 被阅读0次

前一段时间,配置了主从库,最近突然想起,这个主从库怎么配置的也忘个差不多了,今天只好在自家的小电脑上再来一遍。写了本地 win10系统 MySql主从库配置一文,现在翻回去看时,总有一些地方含糊,还有一些地方没有说清楚。

这几天晚上在家里试着配置个主从库,本以为很简单,一个晚上能够搞定,可还是弄了好几个晚上,第一个晚上,网速不给力,下载压缩包的网站都打不开,只能等到第二天一早下载,早上时,网速超级的快,几分钟就下载好了。

第二天晚上,继续配置主从库,配置了好几次,总是搞不清从库的data从哪里来的,又查了资料才知道,拷贝主库已经生成的data便可,只是需要删除一个auto.cnf文件。

反反复复配置了好几次,中间又遇到了主从库server_id重复的问题,这个问题是因为提前在配置文件中写了server_id引起的。看来还是需要按照步骤来,一步一步的配置,有些配置不能提前设置,提前设置了,后面就出问题。

现在还是把主从库配置的步骤捋一捋:

1.先下载压缩包,解压压缩包
2.主库、从库数据库文件命名,建立配置文件及data文件夹
3.配置环境变量
4.注册主从库服务,生成系统文件及data文件夹下的系统文件,重启
5.更改配置文件,重置密码后,重启,复原配置文件,再重启;
6.主库配置,从库配置,查看配置参数
7.主从配置的测试

首先,打开mysql的官网,找个适合电脑系统的压缩包下载。来到download下的community,在community下选择MySql community server,在这一页里的最下面找到适合当前系统的版本,https://dev.mysql.com/downloads/file/?id=487427,进行下载操作。
图-1
图-2
图-3
第二步,解压压缩文件,拷贝成两个,一个是主库命名为mysql-master,一个从库命名为mysql-slave,并在各自的文件夹下建立data文件夹,以及my.ini配置文件,两个的配置文件除了端口号、data文件的存放目录不一样以外,其他的都是一样的。

my.ini文件内容如下:

#代码开始
[Client]
#设置3306端口
port = 3306
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3306
#设置mysql服务器字符集
collation-server=utf8_general_ci
# 设置mysql的安装目录
basedir=c:\database\mysql-master
# 设置mysql数据库的数据的存放目录
datadir=c:\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
#代码结束
第三步,配置mysql的系统环境变量,方便后面的命令运行。
MYSQL_HOME
C:\database\mysql-master;C:\database\mysql-slave

在path后面追加:

%MYSQL_HOME%\bin

不配置环境变量,mysql的命令无法识别,最终导致无法运行。

第四步,安装主从库的服务;在运行下,以管理员的身份进入到mysql-master下的bin文件夹,执行命令:
#主库服务安装命令
mysqld --install mysqlmaster --defaults-file=“c:\database\mysql-master\my.ini”
# 出现 Service successfully installed. 时,代表安装成功;
#初始化data文件夹下的数据库系统文件
mysqld --initialize

#从库服务安装命令
mysqld --install mysqlslave --defaults-file=“c:\database\mysql-slave\my.ini”
#从库的data,从主库中把data下的文件夹都拷贝过来,删除auto.cnf 文件即可;

#可使用此命令查看主从库的server_id,防止主从库的server_id冲突,导致后面的配置失败;
 show variables like 'server_id';

如果安装错了,用 mysqld --remove mysqlmaster 命令移除;安装成功后进行启动服务;

#启动mysql
net start mysqlmaster
net start mysqlslave
#停止mysql
net stop mysqlmaster
net stop mysqlslave
第五步,主从库重新设置密码

把my.ini中的skip-grant-tables注解去掉,然后重启mysql服务,设置完密码后,再次将注解加上,再一次的重启,使密码生效。
进入到bin文件夹,mysql -u root -p 命令进入mysql的命令行,然后输入密码123456

#使用系统数据库,修改用户密码
use mysql 
#修改密码的语句
update user set authentication_string=PASSWORD('123456')where user='root'; 
#执行刷新,刷新后,密码才能生效;
 flush privileges; 
第六步,配置主从库

第一,主库的 [mysqld] 下增加配置:

#主库配置,服务器标志号,注意在配置文件中不能出现多个这样的标识,如果出现多个的话mysql以第一个为准,一组主从中此标识号不能重复。
server_id = 1
#开启bin-log
log-bin=mysql-bin
#不需要备份,需要忽略的数据库
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=sys

第二,从库配置 [mysqld] 下增加配置:

#从库配置
server_id=2
#开启bin-log
log-bin=mysql-bin

第三,重启主从库,这一步也很重要,可以让配置中的server_id生效。

第七,主从库授权,关键的一步

第一,主库授权,进入到主库的操作命令下,执行

grant replication slave on *.* to 'test'@'127.0.0.1' identified by '123456';
flush privileges; #授权后需要刷新后,才能生效;
#查看主库授权状态
show master status; 

第二步,从库授权,进入到从库的操作命令下,执行

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;
#启动主从拷贝
start slave; 
#查看拷贝状态
show slave status;
 #清除授权,授权信息也被清除掉
reset slave all;
#查看状态
show slave status \G

当查看从库的slave状态,下面两个状态都是yes时,代表主从库配置成功了。

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

最后,加点补充,为了防止从库被篡改,建立一个新的只读账户,对外只开放这个只读账号,禁止对从库数据库的操作,只能读,不能写。这样主从库的同步又多了一个保障。

GRANT SElECT ON *.* TO 'root_readonly'@'%' IDENTIFIED BY "123456";
#执行刷新,刷新后;
 flush privileges; 

以上的操作完成后,最后再做个测试,确保主从库同步,从库不可手动修改。

总结
对于类似的配置,这个配置只能算中等的配置,要说复杂,还不算太复杂。多做些练习来加深印象比较好,只配置过一次二次肯定不可以,怎么样也需要配置个五六七八次,多配置几次,多犯几次错误,多思考几次为什么会这样,走心一点,关键时刻才能不掉链子。

微信扫一扫,关注程就人生

相关文章

网友评论

    本文标题:Win10下Mysql主从库配置二次整理

    本文链接:https://www.haomeiwen.com/subject/qzmvdctx.html