一、mysql5.6进行主从同步设置(附生产环境主从同步设置)
1. 环境:已经安装好了mysql5.6版本的两台主机
master server:192.168.110.109
slave server:192.168.110.115
原理:
2.准备工作
(1)关闭防火墙:systemctl stop firewalld
(2)关闭selinux
(3)配置固定ip地址
(4)修改主机名:master与slave
3.master server设置
修改配置文件
# vim /etc/my.cnf
#[mysqld]
log-bin=binlog #开启二进制日志
server-id=1 #指定服务id
重新启动服务
systemctl restart mysql
#如果没有配置系统路径启动mysql,可以按下面绝对路径开启mysql
#/usr/local/mysql/bin/mysqladmin -uroot -p shutdown
#/usr/local/mysql/bin/mysqld_safe --user=mysql &
查看端口是否被启动
netstat -tulnp | grep 3306
服务重启后查看二进制文件是否已经被打开
mysql> show variables like 'log_bin';
授权一个账户供slave复制数据
grant replication slave on *.* to 'cym'@'192.168.110.%' identified by 'gz123';
4.slave server设置
修改配置文件(注意是从库的my.cnf)
# vim /etc/my.cnf
# [mysqld]
server-id=2 #保证和主服务器不一样
重启mysql服务
systemctl restart mysql
5.配置从库连接到主库
在主库master查看二进制文件的位置
mysql> show master status\G
来到从库slave内的数据库进行下面的语句
#使用help change master to查看帮助命令
mysql> help change master to
找到这里的例子
这里解释一下各部分内容:
CHANGE MASTER TO
MASTER_HOST=‘master2.mycompany.com’, #master地址,也就是我们需要到哪去取数据
MASTER_USER=‘replication’, #用户名,在master里授权用来读数据的用户名
MASTER_PASSWORD=‘bigs3cret’, #密码,在master里授权用来读数据的用户的密码
MASTER_PORT=3306, #数据库端口,默认3306
MASTER_LOG_FILE=‘master2-bin.001’, #二进制文件名称,如果有重启数据库,注意查看是否是新的的二进制文件
MASTER_LOG_POS=4,#起始位置,从二进制文件哪里开始同步
MASTER_CONNECT_RETRY=10; #连接重试,10s重试一次,可以采用默认值
在slave里进行change master to
CHANGE MASTER TO MASTER_HOST='192.168.110.109',MASTER_USER='cym',MASTER_PASSWORD= 'gz123',MASTER_LOG_FILE='binlog.000001',MASTER_LOG_POS=1103;
开启从机
mysql> start slave;
最后来查看一下主从状态
自此,主从同步配置完成,下面介绍生产环境下的主从配置
二、生产环境下的主从配置
原因: 生产环境下,数据库无时无刻不在进行读写内容,如果停止数据库的运行来进行主从配置,会丢失很多数据。因此,这里的主从配置需要在主库master时刻在读写的情况下,进行主从同步的配置。
环境:
master 192.168.110.109 —时刻在进行数据的读写
slave 192.168.110.115 —一台新主机,进行主从同步配置
步骤:
1.先将master主机进行数据库的全备;
2.再将master的数据库全备文件拷贝到slave;
3.将master的数据库全备文件写入slave
4.将slave与master进行同步
1.进行master主机的数据库全备份
#--master-data可以让生成的配置文件,给出备份时二进制日志使用的文件以及备份的截止位置
mysqldump -uroot -p -A --master-data > /opt/all.sql
也可以在备份文件直接搜索我们需要的信息
awk '/^CHANGE/' /opt/all.sql
2.将master的全备数据库文件拷贝到slave上
scp /opt/all.sql root@192.168.110.115:/root
3.将备份文件写入slave数据库
mysql -uroot -p < all.sql
4.进入到数据库里查看是否被写入
5.进行主从同步
后面的配置就跟前面的部分一样了,先对slave进行change to
mysql> CHANGE MASTER TO MASTER_HOST='192.168.110.109',MASTER_USER='cym',MASTER_PASSWORD= 'gz123',MASTER_LOG_FILE='binlog.000001',MASTER_LOG_POS=1103;
开启从机
mysql> start slave;
配置完成后,从库slave即可以同步master的数据了