主从同步:顾名思义就是主库(master)和从库(slave)的数据同步。
主要作用:
1,数据备份一种方式,
2,读写分离实现主库的访问流量削峰,
3,实现负载均衡,
一,mysql主从数据库服务安装,mastaer安装在了win64(192.168.1.104)上,slave安装在win64(192.168.1.108)上,由于之前安装过两台物理都安装过mysql服务所以中间两台机器安装mysql都出现好多坑。
win:mysql-5.7.17.msi(mysql官网就能下载)
安装完成之后主要是对my.ini文件的配置,
master配置:
找到my.ini,这个文件不是安装目录下的my-default.ini,是win C:\ProgramData下对应mysql中my.ini文件(好多博主都没有说明这一点,导致很多人直接改了my-default.ini,但其实不会起作用)

Server Id.

server-id=101 #serverId主要是用来区分区分服务

log-bin=mysql #开启二进制日志,主从数据库同步就是通过读取这个日志来实现的(开启二进制日志就是把默认文件中log-bin前面的#去掉,并修改成这种新式log-bin=mysql,最后产生的二进日志文件的名字都是以mysql.xxx开始的)

binlog-do-db=csfootball #要同步的数据库

binlog-ignore-db=mysql #不需要同步的数据库

expire_logs_days=7 #二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。

注(my.ini中的注解只能用#,我直接用了)

用命令登录mysql目录下:在master上给从slave用户授权的,msyql5.7之后的授权是先创建用户然后然后授权,之前是创建和授权一起,不过两个都可以,

新方法:

CREATE USER ‘slave’@’%’ IDENTIFIED BY ‘123456’;#创建用户

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON . TO ‘slave’@’192.168.1.108’; 授权

意思就是在107添加用户,这个用户的来访ip是192.168.1.108,用户名slave ,密码是123456。

可以通过命令查看日志开启状态;show variables like ‘log_bin’;

mysql集群确认主从节点 mysql5.7主从_mysql集群确认主从节点


log_bin是on说明已经开启,of说明没开启,

可以通过show master status; 查看当前的日志

mysql集群确认主从节点 mysql5.7主从_mysql_02


说明当前要同步的是csfootball数据库,日志是mysql.000018,位置是在154上。至此master配置完成。

slave配置:

也是找对应的my.ini文件

[mysqld]

server-id=106 #唯一的id,不能和master相同

master-host=192.168.1.107 #服务ip

master-user=slave#第一步创建账号的用户名

master-password=123456#第一步创建账号的密码

master-port=3306

master_log_file=’master-bin.000001’,#Master服务器产生的日志

master-connect-retry=60 # 当重新建立主从连接时,如果连接建立失败,间隔多久后重试。单位为秒,默认设置为60秒,同步延迟调优参数。

replicate-do-db=csfootball#要同步的mstest数据库,要同步多个数据库,就多加几个replicate-db-db=数据库名

replicate-ignore-db=mysql#//要忽略的数据库

master_log_pos=154; #show master status命令查到的:postion位置

在slave命令模式下分别执行:

stop slave;

start alsve:

如果启动和停止没问题就可以下面一个命令

show slave status\G;

mysql集群确认主从节点 mysql5.7主从_用户名_03


mysql集群确认主从节点 mysql5.7主从_mysql集群确认主从节点_04


仔细看查看数,有master的ip,授权用户名,读取二进制文件的名字,等

重要的几个参数:

Slave_IO_Running: Yes #都必须为yes

Slave_SQL_Running: Yes

其它只要保证两个库相同(包括数据自字段类型,长度相同),两个物理能正常互相访问数据库就可以。在master中添加说话,从slave中也可以查询到。

slave可以直接在my.inizhi配置

server-id=103

连接ip用户等可以用命令来实现

mysql集群确认主从节点 mysql5.7主从_数据库_05


mysql> change master to master_user=’slave01’,master_password=’123456zfq’,master_host=’192.168.1.107’,master_port=3306,master_log_file=’mysql.000017’,master_log_pos=154;

效果是一样的。