最近公司的服务器数据量上来了,需要做一下负载及数据库的读写分离,所以我弄在两台服务器之间搭建了mysql主从服务器,将自己的思路记录一下,便于其他小伙伴学习。

一、安装两个mysql实例读者自行安装(如果安装到同一服务器上,注意mysql端口不能一致),如图是我安装的两个服务 MySQL主,mysqlslave从:

二、配置主库

1.停止主mysql:net stop mysql

2.主库里my.ini文件

 

[mysql]

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

default-character-set=utf8

[mysqld]

#设置3306端口

port = 3306

# 设置mysql的安装目录

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

# 允许最大连接数

max_connections=200

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

character-set-server=utf8

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

default-storage-engine=INNODB

#=========主从复制关键配置=====================

server_id=1 #主库和从库需要不一致,配一个唯一的ID编号,1至32。 手动设定

log-bin=mysql-bin #二进制文件存放路径,存放在根目录data

#binlog-do-db=test #需要复制的库,多个库用逗号隔开,如果此项不配置所有主库都参与复制

#binlog-ignore-db=mysql #不需要复制的库,和上项同理

#=========主从复制关键配置=====================


3.保存,重启主库,net start mysql

4.在主库中建立一个用户(专门用给从库连接的,注意这是在主库里面建立的)

grant replication slave,reload,super on . to myslave@localhost identified by ‘myslave密码’ ;

myslave是用户名,myslave密码是用户对应的密码,localhost也可以写ip

5.刷新权限 flush privileges;

6.show master status; # 找到File 和 Position 的值记录下来

三、配置从库:

1.停止从库,net stop mysqlslave

2.从库my.ini

 

[mysql]

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

default-character-set=utf8

[mysqld]

#设置3306端口

port = 3307

# 设置mysql的安装目录

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

# 允许最大连接数

max_connections=200

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

character-set-server=utf8

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

default-storage-engine=INNODB

#========主从复制关键配置======================

server_id=2 #主库和从库需要不一致

#binlog-do-db=test #和主库说明一致

#binlog-ignore-db=mysql #和主库说明一致

#========主从复制关键配置======================


3.重启从库, net start mysqlslave并用root登录

4.在从库执行

change master to master_host=’127.0.0.1’,master_user=’myslave’,master_password=’myslave’, master_log_file=’mysql-bin.000002’,master_log_pos=423;

//————————-

master_host= 这里填你主库的IP。

master_user=’myslave’ 刚才我们创建的那个用户。

master_user=’myslave’ ..不解释。

这就是我们刚才 在主库里面 show master status;得到的值了。自行根据实际情况填写

master_log_file=’mysql-bin.000002’

master_log_pos=423

如果你的主库还有是其他端口的话,

master_port=端口号

5.从库 执行 stop slave ;再执行 start slave;

6.从库查看 :show slave status

 

这样就可以了。

四、验证主从复制