MySQL5.7.27主从同步配置详细记录

#### MySQL 安装配置部分

1)下载解压版,解压到指定目录,如C:\mysql-5.7.27-winx64

2)设置系统环境变量

键名:MYSQL_HOME

值为:C:\mysql-5.7.27-winx64

3)在Path中添加:%MYSQL_HOME%\bin

4)解压目录下创建my.ini文件并配置如下:

[mysqld] 

port = 3306 

basedir=C:/mysql-5.7.27-winx64 

datadir=C:/mysql-5.7.27-winx64/data 

max_connections=200 

character-set-server=utf8 

default-storage-engine=INNODB 

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

[mysql] 

default-character-set=utf8

5)MySQL的安装(先CMD到C:\mysql-5.7.27-winx64\bin)

mysqld -install 

提示:Service successfully installed. 表示安装成功

6)MySQL初始化(生成data目录&获取初始密码)

mysqld  --initialize

在解压目录下生成一个data文件夹, 在这个文件夹下有一个.err结尾的文件,打开可以找到随机生成的默认密码。

7)启动MySQL服务

net start mysql

8)使用随机密码登录并修改密码

mysql -u root -p   

9)修改登陆密码

alter user user() identified by '新密码';

至此,MySQL就可以正常运行并使用了。


#### 开启远程连接

1)首先CMD到C:\mysql-5.7.27-winx64\bin

2)输入mysql  -uroot -p 按回车键,输入密码后登录MySQL

3)开启远程连接,输入命令GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;

4)刷新权限:FLUSH PRIVILEGES;

5)重启MySQL服务


#### 主从复制配置

前提:

1-最好找两个机器测试,能相互拼通,测试时可以关闭防火墙;两台机器最好装同样版本的MySQL以避免乱七八糟的未知问题 。

2-执行命令时,请使用命令行登录到相应的数据库:mysql -uroot -p 回车后输入你的密码。

先说Master配置

1)修改Master的my.ini文件,添加以下配置信息:

[mysqld]
server-id=1
#开启binlog 日志  
log_bin= master-bin
log-bin-index=master-bin.index
#日志的缓存时间
expire_logs_days= 10
#日志的最大大小
max_binlog_size=200M
#忽略同步的数据库  除了忽略的,其他的都同步
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
#mysql复制模式,三种:SBR(基于sql语句复制),RBR(基于行的复制),MBR(混合模式复制)
binlog_format=MIXED #混合模式复制,可靠性更高

2)配置文件修改以后,重启MySQL服务

3)查看主库二进制日志文件的状态

show global variables like '%log_bin%';

如果log_bin 的值为OFF则配置文件有问题 ,正常为ON,则表示配置成功;

4)为Slave创建用户,即授权给Slave

grant replication slave,replication client on *.* to 'slave'@'%' identified by "123456";

说明:

%:表示除了本地可以访问,还可以远程访问

replication slave:表示只授予slave的权限

slave:从库使用的用户名;123456为密码

5)看看有没有我们创建的账号

select user from mysql.user;

6)查看主库状态

show master status; 

正常情况下可以看到一个表格:File:master-bin.000001  Postition: 123456等信息,说明正常


再来看Slave配置

1)同样的,修改my.ini配置文件,如下:

[mysqld]
.......
relay-log=relay-log
relay-log-index=relay-log.index
server-id=2

2)命令行登录slave节点的MySQL

3)主从同步设置

CHANGE MASTER TO MASTER_HOST='192.168.0.100',MASTER_USER='slave',MASTER_PASSWORD='123456', MASTER_LOG_FILE=master-bin.000001',MASTER_LOG_POS=145;

说明:

192.168.0.100:Master IP

slave&123456:主库设置好的账号信息供Slave使用的

master-bin.000001与145:对应主库配置信息,这里注意,如果主库有多个这样的数据,请选最后一个。

4)启动复制线程

mysql> start slave;

5)执行以下命令查看主从是否设置成功?

mysql> show slave status \G;   

\G带上,格式化信息,好看一点。

正常情况下我们关注两个信息:

Slave_IO_Running和Slave_SQL_Running状态均为YES;主从复制环境已经OK。

如果一切正常,那么可以测试了,在主库上创建一个数据库,可以看到马上同步到从库上了,继续建表,添加测试数据,发现从库同步正常。


但,也许我们没有那么顺利,我遇到的情况:

1)数据库安装的时候,没有使用my.ini结果造成怎么修改这个配置文件都不生效,后来重装数据库,问题 解决;

2)主从设置时,误把Master的设置拷贝到Slave里去了,看似都对就是同步不了数据,早上起来突然发现这个问题 ,故重新配置;但要先干掉从库上以前的配置,你可以删了从库,也可以使用文末的命令;

3)都设置好了,检查不出任何的问题 了,发现依然不同步,后来在主库上查看从库是否连接上来发现,从库的计算机名为乱码,改了之后,再测,一切正常。


####  常用命令(摘录)

主库上

1)查看二进制日志是否开启

mysql>SHOW GLOBAL VARIABLES LIKE '%log%';

如果正常开启,则log_bin为ON

2)查看主节点二进制日志列表

mysql>SHOW MASTER LOGS;

3)查看主节点的server id

mysql>SHOW GLOBAL VARIABLES LIKE '%server%';

4)查看从库是否正常连接到主库

show processlist \G;

从库上

1)查看中继日志是否开启

mysql>SHOW GLOBAL VARIABLES LIKE "%log%";

2)查看server相关信息

mysql>SHOW GLOBAL VARIABLES LIKE '%server%';

3)开启Relay日志

查看是否开启,show variables like '%relay%';

4)远程连接主库尝试

mysql>mysql -u主库分配的账号 -p -h 192.168.0.100

5)使用Master分配的账号登录主库

mysql>show databases; //查看授权过了的数据库

6)查看从库是否同步上主库

show slave status;

当Slave_IO_Running: Yes  Slave_SQL_Running: Yes 都为yes说明是正常的


#### 其他调试语句(摘录)

1)查看错误

mysql>show warnning;

2)查看主库状态

mysql>show master status \G;

3)查看从库状态

mysql>show slave status \G;

4)重置主记录信息

mysql>reset master;

5)重置从记录信息

mysql>reset slave;

6)停止同步线程

mysql>stop slave;

7)开始同步线程

mysql>start slave;

8)清空从所有连接、信息记录

mysql>reset slave all;

9)删除从

mysql>change master to master_host=' ';


最后:公司内外网隔离的,截不了图,对不起大家了。接下来准备写MySQL自身的主从同步机制结合Mycat实现读写分离,可能包括的内容:Mycat集群,MySQL一主多从,读写分离,以后再搞多主多从,在这里吐槽一下,技术适合当下的就是最好的,最简单的就是最稳定的,MySQL一般是单表达到800万数据就要考虑数据拆分,多如牛毛的一些个小公司到死可能都没有那么多业务数据,倒是面试时天天谈大数据,高并发,数据库集群,简直CD。

如果有小伙伴感兴趣,可以加Q38095589交流。

也请大牛多指点,感谢!


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章