说明
在项目部署到生产环境时,会有很多不可抗力的因素,数据库会出现崩溃停止运行数据丢失,数据对不上的问题,这个时候就需要两个数据库同步运行,来确保一个数据库崩溃另一个能马上顶上。
配置时至少两台电脑,一个主库可以有多个从库,同一台电脑不能即是主库又是从库。
部署使用
配置主库
1、停止主库
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、在主库中建立一个用户(用来给主库连接使用)
允许所有IP的做法
GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'%' IDENTIFIED BY '123456';
指定IP的做法(建议使用)
GRANT REPLICATION SLAVE ON *.* TO myslave@'192.168.11.1/255.255.255.0' IDENTIFIED BY '123456';
- myslave
- 123456密码是用户对应的密码
- 192.168.11.1是IP地址
5、刷新配置
flush privileges;
6、查询file
show master status; # 找到File 和 Position 的值记录下来,从库连接时要用上
配置从库
1、停止从库服务
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=2 #主库和从库需要不一致
#binlog-do-db=test #和主库说明一致
#binlog-ignore-db=mysql #和主库说明一致
#========主从复制关键配置======================
3、重启服务
net start mysql
4、从库执行1
stop slave ;
5、在从库执行2
change master to master_host='ip地址',master_user='用户名',master_password='密码', master_log_file='mysql-bin.主库查看的值',master_log_pos=主库查询出来的值;
- master_host= 这里填你主库的IP。
- master_user=’用户名’ 刚才我们创建的那个用户。
- 这就是我们刚才 在主库里面 show master status;得到的值了。自行根据实际情况填写
- master_log_file=’mysql-bin.000002’
- master_log_pos=423
- 如果你的主库还有是其他端口的话,
- master_port=端口号
6、从库执行3
start slave;
7、验证
show slave status \G;
当下图中红色方框内皆为‘Yes’时才配置成功,如若不是,检查IP等需要填值的地方是否正确
当完成以上配置后,从库就可以访问主库的数据库了,但是只能访问主从库建立连接之后所创建的库表,无法访问之前的数据。
主库对库表的增删改从库可以知道,从库所进行的增删改只在本从库有效,无法对主表造成影响。