环境准备
两台Linux服务器 (centos 7)+ mysql 5.7.29
步骤
- 安装好centos 7的系统,编译安装好MySQL,在主服务器启动二进制日志功能,新建并且授权用户,并且将主服务器里的数据导出,在从服务器上导入数据,做好前期两台服务器之间的数据的一致性工作。
cat /etc/centos-release #查看centos版本
mysql -uroot -p'xxxxxxx' #登录查看MySQL版本
# 开启二进制日志
# 注:两台机器的server id不能相同
# 主服务器
vim /etc/my.cnf
server-id = 1
log-bin
#从服务器
vim /etc/my.cnf
server-id = 2
log-bin
# 在主服务器上新建一个用户,用于复制二进制日志
# 登录mysql
mysql -uroot -p'xxxxxxx'
# 创建用户,授予复制权限
grant replication slave on *.* to 'heyachen'@'%' identified by'Sanchuang123#';
# 备份出主服务器上的数据,scp传到从服务器
# 将所有库备份到/backup/all-databases.sql文件中
mysqldump -uroot -p'xxxxxxx' --all-databases > /backup/all-databases.sql
# 传到从服务器的/root目录上(这里可以将两台机器建立ssh免密通道 详情见:https://blog.csdn.net/thereiscc/article/details/108013254)
scp /backup/all-databases.sql root@192.168.126.158:/root
# 在从服务器导入
mysql -uroot -p'xxxxxxx' < /root/all-databases.sql
- 在slave上配置master的信息,开启slave功能
# 在从服务器配置master信息
show master status; # 查看master状态(在主服务器上)
mysql -uroot -p'xxxxxxx' # 登录从服务器的mysql
#配置主服务器信息
CHANGE MASTER TO MASTER_HOST='192.168.126.164' , # master的ip
MASTER_USER='heyachen', # 之前创建的用户名
MASTER_PASSWORD='xxxxxxx', # 密码
MASTER_PORT=3306, # master服务器mysql的端口
MASTER_LOG_FILE='mysql-master-bin.000003', # 当前二进制日志的名字(在master上-show master status查看)
MASTER_LOG_POS=154; #当前二进制日志position(查看方法同上)
#关闭防火墙和selinux
vim /etc/systemctl/selinux # 永久关闭selinux
SELINUX=disabled
setenforce 0 # 临时关闭selinux
systemctl disable firewalld # 永久关闭防火墙
service firewalld stop # 临时关闭防火墙
# 在slave上启动slave
start slave;
show slave status\G # 查看slave状态
slave状态如下图所示代表启动成功
3. 验证主从复制的方法
在master的mysql中建库,建表,插入数据
去slave的mysql中查看是否同步