最近公司的服务器数据量上来了,需要做一下负载及数据库的读写分离,所以我弄在两台服务器之间搭建了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
这样就可以了。
四、验证主从复制